本帖最后由 包宇杰88 于 2017-10-4 16:03 编辑
各位dalao,我写代码时写了Timer timer=new Timer(); timer.schedule(new TimerTask(){
public void run(){
e.getPlayer().kickPlayer("你给我滚出去");
getLogger().info("成功把一个玩家扔出去了");
this.cancel();}},12000);
会出现错误
如何解?
各位dalao,我写代码时写了Timer timer=new Timer(); timer.schedule(new TimerTask(){
public void run(){
e.getPlayer().kickPlayer("你给我滚出去");
getLogger().info("成功把一个玩家扔出去了");
this.cancel();}},12000);
会出现错误
[15:56:30 WARN]: Exception in thread "Timer-0"
[15:56:30 WARN]: java.lang.IllegalStateException: Asynchronous player kick!
[15:56:30 WARN]: at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14)
[15:56:30 WARN]: at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.kickPlayer(CraftPlayer.java:215)
[15:56:30 WARN]: at com.ddhello.Ahlogin$4.run(Ahlogin.java:177)
[15:56:30 WARN]: at java.util.TimerThread.mainLoop(Unknown Source)
[15:56:30 WARN]: at java.util.TimerThread.run(Unknown Source)
如何解?
你异步调用了同步方法,用runTask吧
本帖最后由 耗子 于 2017-10-5 13:03 编辑
不能异步调用BukkitAPI,请使用Bukkit.getScheduler().runTaskTimer();
不能异步调用BukkitAPI,请使用Bukkit.getScheduler().runTaskTimer();
耗子 发表于 2017-10-5 00:09
不能异步调用BukkitAPI,请使用Bukkit.getScheduler().runTimerTask();
具体参数是怎么填的呢?
z25096708 发表于 2017-10-5 12:04
JavaDoc文档 https://hub.spigotmc.org/javadocs/spigot/
刚刚自己研究出来了,但是如何让他只执行一次呢
包宇杰88 发表于 2017-10-5 12:05
刚刚自己研究出来了,但是如何让他只执行一次呢
Bukkit.getScheduler().runTaskLater();