我想要完成的是当服务器启动/重新加载时,插件将检测世界中的所有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);
答案 0 :(得分:2)
对于每个加载的块,循环超过65536个块会给服务器的处理器带来很大的压力。
您应该尝试Chunk#getTileEntities()
并查看图块实体是否为org.bukkit.block.Skull
此外,您只会产生一次粒子,即块加载时。使效果重复的最佳方法是将加载到ArrayList
的头骨存储起来并使用BukkitRunnable
连续循环遍历所有头骨并创建粒子效果。
您可以阅读有关如何使用BukkitRunnable
here