2016-07-25 2 views
0

я получаю следующий код ошибки:Ошибка, Mincraft Plugin Табло

[21:55:37 ERROR]: Could not pass event PlayerChangedWorldEvent to LuckySkyPvP v1.1 
org.bukkit.event.EventException 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.PlayerList.moveToWorld(PlayerList.java:628) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.teleport(CraftPlayer.java:471) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity.teleport(CraftEntity.java:226) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at com.onarandombox.MultiverseCore.utils.SimpleSafeTTeleporter.safelyTeleport(SimpleSafeTTeleporter.java:215) [Multiverse-Core-2.5.0-SNAPSHOT(1).jar:?] 
    at com.onarandombox.MultiversePortals.listeners.PlayerListenerHelper.performTeleport(PlayerListenerHelper.java:44) [Multiverse-Portals-2.5.jar:?] 
    at com.onarandombox.MultiversePortals.listeners.MVPPlayerMoveListener.playerMove(MVPPlayerMoveListener.java:137) [Multiverse-Portals-2.5.jar:?] 
    at sun.reflect.GeneratedMethodAccessor141.invoke(Unknown Source) ~[?:?] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_71] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_71] 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:270) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.7.0_71] 
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_71] 
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    at java.lang.Thread.run(Unknown Source) [?:1.7.0_71] 
Caused by: java.util.ConcurrentModificationException 
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source) ~[?:1.7.0_71] 
    at java.util.HashMap$KeyIterator.next(Unknown Source) ~[?:1.7.0_71] 
    at SkyPvPTobiasS.ScoreBoardClass.onWorldChange(ScoreBoardClass.java:165) ~[?:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_71] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_71] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_71] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_71] 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[craftbukkit.jar:git-Spigot-5f38d38-12698ea] 
    ... 28 more 

И это часть кода:

for(Scoreboard key : boards.keySet()) { 
    if(boards.get(key).equals(e.getPlayer())) { 
     boards.remove(key); 
    } 
} 

Код должен удалить старый табло ключ и после этого чтобы создать новый табло, потому что в одном мире табло и в другом мире другое.

Но если я изменяю мир, иногда он не работает в этой части кода, и отображается ошибка.

ответ

0

Когда вы сделаете это:

for(Scoreboard key : boards.keySet()) { 
    if(boards.get(key).equals(e.getPlayer())) { 
     boards.remove(key); 
    } 
} 

вы читаете boards ключ по ключу. Проблема в том, что вы читаете ключи, когда пытаетесь удалить их.

Попробуйте сделать с этим и сказать мне, если это исправить эту проблему:

for(Scoreboard key : new HashSet<>(boards.keySet())) { // copy of the keySet before itterating 
    if(boards.get(key).equals(e.getPlayer())) { 
     boards.remove(key); 
    } 
}