我目前遇到插件问题。我想给玩家效果5秒,在5秒之后,它应该是白天。我的问题是,day命令是立即执行的,所以它是在效果结束之前的一天。 你可以帮助我,在执行之前将时间设置为1000的命令会等待5秒吗? 帮助将不胜感激, 直到
p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 100, 100, true));
p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 100, 100, true));
p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 100, -100, true));
p.sendMessage("§aGute Nacht!"); //german, dont worry :D
//here should be the delay of 5 seconds
Bukkit.getWorld("world").setTime(1000);
答案 0 :(得分:3)
我还建议使用BukkitRunnable。提供此类是一种处理调度任务的简便方法。
new BukkitRunnable(
public void run() {
Bukkit.getWorld("world").setTime(1000);
}
).runTaskLater(yourPluginInstance, delayInTicks);
请记住,20个服务器刻度等于1个服务器秒。所以delayInTicks = 5s * 20 = 100
答案 1 :(得分:2)
你应该调查scheduleSyncDelayedTask
我没有测试过这个,但是你应该瞄准这样的事情。
myPlugin.getServer().getScheduler().scheduleSyncDelayedTask(myPlugin, new Runnable() {
public void run() {
Bukkit.getWorld("world").setTime(1000);
}
}, 100);
尽快安排一次性任务。这个任务会 由主服务器线程执行。
参数:
插件 - 拥有任务的插件
任务 - 要完成的任务 执行
返回:任务ID号(如果调度失败,则为-1)