橡皮233
本帖最后由 包宇杰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);
会出现错误
[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)

如何解?


4one_R
你异步调用了同步方法,用runTask吧

耗子
本帖最后由 耗子 于 2017-10-5 13:03 编辑

不能异步调用BukkitAPI,请使用Bukkit.getScheduler().runTaskTimer();

橡皮233
耗子 发表于 2017-10-5 00:09
不能异步调用BukkitAPI,请使用Bukkit.getScheduler().runTimerTask();

具体参数是怎么填的呢?

DarcJC
包宇杰88 发表于 2017-10-5 11:35
具体参数是怎么填的呢?

JavaDoc文档 https://hub.spigotmc.org/javadocs/spigot/

橡皮233
z25096708 发表于 2017-10-5 12:04
JavaDoc文档 https://hub.spigotmc.org/javadocs/spigot/

刚刚自己研究出来了,但是如何让他只执行一次呢

耗子
包宇杰88 发表于 2017-10-5 12:05
刚刚自己研究出来了,但是如何让他只执行一次呢

Bukkit.getScheduler().runTaskLater();

第一页 上一页 下一页 最后一页