gpt4 book ai didi

java - Minecraft bukkit 僵尸生成错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:04 26 4
gpt4 key购买 nike

我正在编写一个简单的僵尸生成插件。生成是由另一个线程完成的。当我运行该插件时,玩了一段时间后出现以下错误:

[Server thread/ERROR]: Encountered an unexpected exception
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source) ~[?:1.7.0_25]
at java.util.HashMap$KeyIterator.next(Unknown Source) ~[?:1.7.0_25]
at net.minecraft.server.v1_7_R1.EntityTracker.updatePlayers(EntityTracker.java:152) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:646) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]

此错误不断发生,但很少发生,而且似乎是随机的。我对这个问题的想法是,生成线程与 EntityTracker 异步,这会导致异常,因为我的线程修改了实体列表,而 bukkit 的另一部分试图告诉玩家怪物的位置。
我不知道确切的错误源是什么,但我认为我必须将我的线程与 bukkit 的某些部分同步。有人有解决办法吗? (有什么办法可以设置僵尸会掉落的元素吗?整个腐肉开始让我做噩梦)。

提前致谢。

最佳答案

您的堆栈跟踪表明您正在尝试从另一个线程修改您的集合。您可以尝试同步您的方法或使用类似 ConcurrentHashMap 的东西.

如果您确实不需要在另一个线程上进行修改,您也可以使用 Bukkit 的调度工具来完成这项工作:

private final Map<T> map = new HashMap<T>();
// ... stuff happens

final T value;
// work with your value

server.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
map.add(value);
}
}, 0L);
// runs the run() method after 0 ticks on the main thread

关于java - Minecraft bukkit 僵尸生成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com