Does anyone know where's the problem of the internal server error? Code:java [01:03:28] [Server thread/WARN]: Failed to handle packet for /212.224.88.11:55146net.minecraft.server.v1_7_R1.ReportedException: Ticking player at net.minecraft.server.v1_7_R1.EntityPlayer.i(EntityPlayer.java:314) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:343) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PacketPlayInFlying.a(SourceFile:137) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.PacketPlayInPosition.handle(SourceFile:63) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:147) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:657) [spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:540) [spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:446) [spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [spigot.jar:git-Spigot-1228]Caused by: java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819) ~[?:1.7.0_17] at java.util.ArrayList$Itr.next(ArrayList.java:791) ~[?:1.7.0_17] at org.bukkit.craftbukkit.v1_7_R1.util.WeakCollection$1.hasNext(WeakCollection.java:73) ~[spigot.jar:git-Spigot-1228] at org.bukkit.craftbukkit.v1_7_R1.scoreboard.CraftScoreboardManager.getScoreboardScores(CraftScoreboardManager.java:103) ~[spigot.jar:git-Spigot-1228] at org.bukkit.craftbukkit.v1_7_R1.scoreboard.CraftScoreboardManager.updateAllScoresForList(CraftScoreboardManager.java:114) ~[spigot.jar:git-Spigot-1228] at net.minecraft.server.v1_7_R1.EntityPlayer.i(EntityPlayer.java:281) ~[spigot.jar:git-Spigot-1228] ... 10 more[01:03:28] [Server thread/INFO]: Fabstar2000 lost connection: Internal server error
Code:java public static void sendScore(Player p) { if (!(GunGame.Scoreboard.contains(p))) { Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard(); Objective objective = board.registerNewObjective(p.getName(), "dummy"); objective.setDisplaySlot(DisplaySlot.SIDEBAR); if (CommandVotemap.votemapstatus) { objective.setDisplayName(" §b/votemap "); Score map1 = objective.getScore(Bukkit.getOfflinePlayer("§6" + CommandVotemap.votemaps[0])); map1.setScore(CommandVotemap.votes[0]); Score map2 = objective.getScore(Bukkit.getOfflinePlayer("§6" + CommandVotemap.votemaps[1])); map2.setScore(CommandVotemap.votes[1]); Score map3 = objective.getScore(Bukkit.getOfflinePlayer("§6" + CommandVotemap.votemaps[2])); map3.setScore(CommandVotemap.votes[2]); Score map4 = objective.getScore(Bukkit.getOfflinePlayer("§6" + CommandVotemap.votemaps[3])); map4.setScore(CommandVotemap.votes[3]); Score map5 = objective.getScore(Bukkit.getOfflinePlayer("§6" + CommandVotemap.votemaps[4])); map5.setScore(CommandVotemap.votes[3]); p.setScoreboard(board); } else { objective.setDisplayName(" §6§lStats: "); Score gp = objective.getScore(Bukkit.getOfflinePlayer("§6Deine GP:")); gp.setScore((int) GunGame.getEcon().getBalance(p.getName())); Score Level = objective.getScore(Bukkit.getOfflinePlayer("§6Dein Level:")); Level.setScore(p.getLevel()); Score Time = objective.getScore(Bukkit.getOfflinePlayer("§eMapwechsel:")); Time.setScore(sbTime); p.setScoreboard(board); } } }
How are you calling that method? The exception indicates a collision, two threads are trying to modify the same information at the same time. It looks like it's happening in an ArrayList iterator, but I'm not seeing it in the code.
Code:java @SuppressWarnings("deprecation") public void updateScoreboard() { Bukkit.getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() { @Override public void run() { for (Player p : Bukkit.getOnlinePlayers()) { Utils.sendScore(p); } } }, 20 * 5, 20 * 5); } yes i know i could do this in one method EDIT by Moderator: merged posts, please use the edit button instead of double posting.
Use a Sync task. The BukkitAPI is mostly not Thread Safe and can not be used with Async Tasks or seperate threads.