bukkit 可运行的 IllegalStateException

问题描述

伙计们,我正在制作一个 spigot 1.8 插件。它在 1.16 上工作,但在 1.8 中它抛出了这个:

[10:00:59 ERROR]: Could not pass event InventoryClickEvent to Knockback_PVP v1.0.0
.....
org.bukkit.event.EventException
Caused by: java.lang.IllegalStateException: Already scheduled as 1201
        at org.bukkit.scheduler.BukkitRunnable.checkState(BukkitRunnable.java:141) ~[spigot-1.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.scheduler.BukkitRunnable.runTask(BukkitRunnable.java:31) ~[spigot-1.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3c767f-33d5de3]
...

这是我的代码的一部分:

BukkitRunnable runnable = new BukkitRunnable() {
            @Override
            public void run() {
                if (plugin.RegenTasks.containsKey(getTaskId()) == false) return;
                Player p = plugin.RegenTasks.get(getTaskId());
                p.getInventory().setItem(3,new ItemStack(Material.DIAMOND));
                plugin.RegenTasks.remove(getTaskId());
                return;
            }
        };
        runnable.runTaskLater(plugin,2*20*30);
        plugin.RegenTasks.put(runnable.getTaskId(),p);

当玩家死亡时在其他地方:

if (plugin.RegenTasks.containsValue(p)){ 
    for (int i: plugin.RegenTasks.keySet()) {
        if (plugin.RegenTasks.get(i) == p) {
            plugin.RegenTasks.remove(i);
                try 
                    {plugin.getServer().getScheduler().cancelTask(i);}
                finally {break;}
        }
    }
}

有什么办法解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)