我在遇到这个问题时试图制作一个 Minecraft 插件,但我认为这更像是一个 Java 讨论
所以我尝试制作一个每秒生成一只鸡的生成器(为了测试,当我完成时它会变成每分钟),但是在我测试时事件似乎没有运行(因为TimeUnit.SECONDS.sleep()
会阻塞 MC 线程)。那么我可以有一个替代方案吗?我现在使用的延迟TimeUnit.SECONDS.sleep(*insert some number here*);
如下所示:
注意:我已经尝试使用setTaskTimer
和scheduleSyncRepeatingTask
答案中所示,但它们似乎没有工作。这是事件问题还是spawnEntity
问题?
package com.TheRealBee.Bows.Event10;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import java.util.concurrent.TimeUnit;
public class EventManager10 implements Listener {
@EventHandler
public void onNukePlace(BlockPlaceEvent e){
// Return if it's not TNT, doesn't have ItemMeta or doesn't have a custom dispaly name
if(!e.getBlock().getType().equals(Material.GOLD_BLOCK) || !e.getItemInHand().hasItemMeta() || !e.getItemInHand().getItemMeta().hasDisplayName())
return;
// Return if the item display name is not correct
if(!e.getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.WHITE+"Spawner"))
return;
// Create the explosion
try {
for (int i = 0; i < 300000000; i++) {
e.getBlock().getLocation().getWorld().spawnEntity(e.getBlock().getLocation(), EntityType.CHICKEN);
TimeUnit.SECONDS.sleep(1);
}
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
}
}