重复对世界中的块的影响

时间:2017-01-09 14:32:23

标签: java minecraft bukkit

我想要完成的是当服务器启动/重新加载时,插件将检测世界中的所有SKULLS,然后对它们设置一个循环但不会结束的效果。

我目前的代码:

@EventHandler
public void onChunkLoad(ChunkLoadEvent event){
Chunk chunk = event.getChunk();
if(event.getWorld().getName().equals("world")){
    for (int x = 0; x < 16; x++){
        for (int y = 0; y < 256; y++){
            for(int z = 0; z <16; z++){
        Block block = chunk.getBlock(x, y, z);
        if(block.getType() == Material.SKULL){
             event.getWorld().playEffect(block.getLocation(), Effect.MOBSPAWNER_FLAMES, 0); 

1 个答案:

答案 0 :(得分:2)

对于每个加载的块,循环超过65536个块会给服务器的处理器带来很大的压力。

您应该尝试Chunk#getTileEntities()并查看图块实体是否为org.bukkit.block.Skull

的实例

此外,您只会产生一次粒子,即块加载时。使效果重复的最佳方法是将加载到ArrayList的头骨存储起来并使用BukkitRunnable连续循环遍历所有头骨并创建粒子效果。

您可以阅读有关如何使用BukkitRunnable here

的信息