GabiKleebi02
Minecrafter
Ich habe ein Plugin geschrieben, das für jeden Spieler ein Scoreboard erstellt und ihm das in der Sidebar anzeigt. Jedoch habe ich jetzt das Problem, das immer nur ein Spieler auf dem Server spielen kann und der Fehler scheint durch dieses Plugin zu kommen.
[13:18:51] [Server thread/WARN]: Failed to handle packet for /91.48.22.92:53500
java.lang.NegativeArraySizeException
at java.util.AbstractCollection.toArray(AbstractCollection.java:136) ~[?:1.8.0_162]
at java.util.ArrayList.addAll(ArrayList.java:581) ~[?:1.8.0_162]
at net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardTeam.<init>(SourceFile:48) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.PlayerList.sendScoreboard(PlayerList.java:197) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.PlayerList.a(PlayerList.java:141) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.LoginListener.b(LoginListener.java:144) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.LoginListener.c(LoginListener.java:54) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:231) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.ServerConnection.c(ServerConnection.java:148) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:813) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java
74) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
[13:18:51] [Server thread/INFO]: GabiKleebi02 lost connection: Internal server error
java.lang.NegativeArraySizeException
at java.util.AbstractCollection.toArray(AbstractCollection.java:136) ~[?:1.8.0_162]
at java.util.ArrayList.addAll(ArrayList.java:581) ~[?:1.8.0_162]
at net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardTeam.<init>(SourceFile:48) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.PlayerList.sendScoreboard(PlayerList.java:197) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.PlayerList.a(PlayerList.java:141) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.LoginListener.b(LoginListener.java:144) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.LoginListener.c(LoginListener.java:54) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:231) ~[spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.ServerConnection.c(ServerConnection.java:148) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:813) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot-1.8.8.jar:git-Spigot-76236cb-9cd1111]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]
[13:18:51] [Server thread/INFO]: GabiKleebi02 lost connection: Internal server error
Code:
package gabikleebi02.cts.main;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
public class ScoreBoardClass implements Listener {
public static HashMap<Player, Scoreboard> scoreboards = new HashMap<Player, Scoreboard>();
public static void setScoreboard(Player p) {
Scoreboard sb = Bukkit.getScoreboardManager().getNewScoreboard();
Objective obj = sb.registerNewObjective("Gameserver", "dummy");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName("§6§lGameserver");
Team name = sb.registerNewTeam("name");
Team online = sb.registerNewTeam("online");
Team coins = sb.registerNewTeam("coins");
Team welt = sb.registerNewTeam("welt");
obj.getScore("§1").setScore(11);
obj.getScore("§fWillkommen, ").setScore(10);
obj.getScore("§a").setScore(9);
obj.getScore("§2").setScore(8);
obj.getScore("§fOnline:").setScore(7);
obj.getScore("§b").setScore(6);
obj.getScore("§3").setScore(5);
obj.getScore("§fDein Geld:").setScore(4);
obj.getScore("§c").setScore(3);
obj.getScore("§4").setScore(2);
obj.getScore("§fDeine Welt:").setScore(1);
obj.getScore("§d").setScore(0);
name.addEntry("§a");
online.addEntry("§b");
coins.addEntry("§c");
welt.addEntry("§d");
if(p.getName().length() > 12) {
name.setPrefix("§6§l" + p.getName().substring(0, 11));
} else {
name.setPrefix("§6§l" + p.getName());
}
name.setPrefix("§6§l" + p.getName());
online.setPrefix("§6§l" + p.getServer().getOnlinePlayers().size() + "§f/");
online.setSuffix("§6§l" + p.getServer().getMaxPlayers());
String coinAmount = "" + BankClass.getMoney(p);
if(coinAmount.length() > 12) {
coins.setPrefix("§6§l" + coinAmount.substring(0, 11));
} else {
coins.setPrefix("§6§l" + coinAmount);
}
coins.setSuffix("§6§l Taler");
welt.setPrefix("§6§l" + p.getWorld().getName());
Team Owner, Admin, Mod, Builder, YouTube, Spieler;
if (sb.getTeam("0Owner") == null) {
Owner = sb.registerNewTeam("0Owner");
Admin = sb.registerNewTeam("1Admin");
Mod = sb.registerNewTeam("2Mod");
Builder = sb.registerNewTeam("3Builder");
YouTube = sb.registerNewTeam("4YouTube");
Spieler = sb.registerNewTeam("5Spieler");
Owner.setPrefix("§7[§6Owner§7] §f");
Admin.setPrefix("§7[§2Admin§7] §f");
Mod.setPrefix("§7[§eMod§7] §f");
Builder.setPrefix("§7[§3Bau§7] §f");
YouTube.setPrefix("§7[§5YT§7] §f");
Spieler.setPrefix("§7[§aUser§7] §f");
}
Owner = sb.getTeam("0Owner");
Admin = sb.getTeam("1Admin");
Mod = sb.getTeam("2Mod");
Builder = sb.getTeam("3Builder");
YouTube = sb.getTeam("4YouTube");
Spieler = sb.getTeam("5Spieler");
for (Player all : Bukkit.getOnlinePlayers()) {
if ((all.isOp()) || (all.hasPermission("rang.Owner"))) {
Owner.addEntry(all.getName());
} else if (all.hasPermission("rang.Admin")) {
Admin.addEntry(all.getName());
} else if (all.hasPermission("rang.Mod")) {
Mod.addEntry(all.getName());
} else if (all.hasPermission("rang.Builder")) {
Builder.addEntry(all.getName());
} else if (all.hasPermission("rang.YouTube")) {
YouTube.addEntry(all.getName());
} else {
Spieler.addEntry(all.getName());
}
}
p.setScoreboard(sb);
scoreboards.put(p, sb);
}
@SuppressWarnings("deprecation")
public static void updateScoreboard(Player p) {
Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getInstance(), new Runnable() {
@Override
public void run() {
if (!scoreboards.containsKey(p)) {
setScoreboard(p);
}
for (Player all : Bukkit.getOnlinePlayers()) {
if (scoreboards.get(all).getTeam("0Owner") == null) {
setScoreboard(all);
}
if (all.hasPermission("rang.owner")) {
p.getScoreboard().getTeam("0Owner").addEntry(all.getName());
} else if (all.hasPermission("rang.admin")) {
p.getScoreboard().getTeam("1Admin").addEntry(all.getName());
} else if (all.hasPermission("rang.mod")) {
p.getScoreboard().getTeam("2Mod").addEntry(all.getName());
} else if (all.hasPermission("rang.builder")) {
p.getScoreboard().getTeam("3Builder").addEntry(all.getName());
} else if (all.hasPermission("rang.youtube")) {
p.getScoreboard().getTeam("4YouTube").addEntry(all.getName());
} else {
p.getScoreboard().getTeam("5Spieler").addEntry(all.getName());
}
}
Team name = scoreboards.get(p).getTeam("name");
Team online = scoreboards.get(p).getTeam("online");
Team coins = scoreboards.get(p).getTeam("coins");
Team welt = scoreboards.get(p).getTeam("welt");
if (p.getName().length() > 12) {
name.setPrefix("§6§l" + p.getName().substring(0, 11));
} else {
name.setPrefix("§6§l" + p.getName());
}
name.setPrefix("§6§l" + p.getName());
online.setPrefix("§6§l" + p.getServer().getOnlinePlayers().size() + "§f/");
online.setSuffix("§6§l" + p.getServer().getMaxPlayers());
String coinAmount = "" + BankClass.getMoney(p);
if(coinAmount.length() > 12) {
coins.setPrefix("§6§l" + coinAmount.substring(0, 11));
} else {
coins.setPrefix("§6§l" + coinAmount);
}
coins.setSuffix("§6§l Taler");
welt.setPrefix("§6§l" + p.getWorld().getName());
}
}, 0L, 10L);
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
setScoreboard(e.getPlayer());
updateScoreboard(e.getPlayer());
}
}