Bukkit Plugin Scoreboard Team Verteilung?
Hallo, ich habe ein Plugin für Minecraft(1.14.4) programmiert, wenn man eine Klasse aufruft, wird ein Scoreboard erstellt. Mit diesem Scoreboard habe ich Teams erstellt, welche auch beim aufrufen der Klasse erstellt werden. Der Team Name und der Spielername werden in einer HashMap gespeichert.
Ich wollte, dass wenn man auf den Server Joint das Team 001default zugewiesen bekommt. Wie ich das gemacht habe:
Scoreboard erstelllt:
Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
scoreboard.registerNewObjective("teams", "dummy", "game");
Team erstellt/registriert:
scoreboard.registerNewTeam("001default").setPrefix("§7");
HashMap erstellt:
private HashMap<String, Team> teams = new HashMap<>();
Methode um Spieler in ein Team zu setzen (Dies liegt in der Klasse ScoreboardUtil):
public static void setTeam(String playername, String teamname) {
teams.get(teamname).addEntry(playername);
Bukkit.getOnlinePlayers().forEach(p -> p.setScoreboard(scoreboard));
}
Im JoinListener(PlayerJoinEvent) habe ich die angelegte Methode benutzt:
ScoreboardUtil.setTeam(e.getPlayer().getName(), "001default");
Irgendwie funktioniert das so nicht!
Hat irgendjemand eine Ahnung?
Danke
2 Antworten
Gibt es denn irgendeine Fehlermeldung oder Ähnliches? Damit könnte man viel schneller auf den Fehler schließen.
Ansonsten sind mir aber 2 Dinge aufgefallen :
public ststic void setTeam(...)
sollte sicher
public static void setTeam(...)
heißen.
Außerdem besteht deine Hashmap aus Paaren eines Strings und des Datentyps "Team" (wie hier deklariert : "private HashMap<String, Team> teams = new HashMap<>();").
Bei
teams.get(teamname).addEntry(playername);
übergibst du aber 2 Strings (zumal es vielleicht einfacher wäre "teams.put(teamname,playername);" zu nutzen)
Du solltest dann also vielleicht die Deklaration der Hashmap teams ändern :
private HashMap<String, String> teams = new HashMap<>();
Ok ich hab es hin bekommen aber weißt du wie ich den Spilername in der Tablist farbigmache, ich hab es mit
team.setPrefix("§7Default : ");
versucht aber da wird nur alles bis ":" hellgrau und nicht der Spielername?
Ok Fehlermeldung
Could not pass event PlayerJoinEvent to Plugin_1 v0.0.1.3-a1.
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.PlayerList.a(PlayerList.java:173) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.LoginListener.c(LoginListener.java:154) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.LoginListener.tick(LoginListener.java:53) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.NetworkManager.a(NetworkManager.java:220) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.ServerConnection.c(ServerConnection.java:129) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1091) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:393) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:970) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:815) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.NullPointerException
at net.dev.game.utils.ScoreboardUtil.setTeam(ScoreboardUtil.java:46) ~[?:?]
at net.dev.game.listener.JoinListener.onJoin(JoinListener.java:43) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_221]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
... 13 more
Also wenn du sagst "es funktioniert so nicht" dann ist das recht wenig hilfreich - was funktioniert nicht und wenn vorhanden die Fehlermeldung dazupacken...
Was aber ganz sicher nicht funktioniert ist
public ststic void setTeam(String playername, String teamname) {
Das müsste 'static' statt 'ststic' heißen.
Ok ich hab es hin bekommen aber weißt du wie ich den Spilername in der Tablist farbigmache, ich hab es mit
team.setPrefix("§7Default : ");
versucht aber da wird nur alles bis ":" hellgrau und nicht der Spielername?
Ok Fehlermeldung
Could not pass event PlayerJoinEvent to Plugin_1 v0.0.1.3-a1.
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.PlayerList.a(PlayerList.java:173) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.LoginListener.c(LoginListener.java:154) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.LoginListener.tick(LoginListener.java:53) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.NetworkManager.a(NetworkManager.java:220) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.ServerConnection.c(ServerConnection.java:129) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1091) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:393) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:970) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:815) [spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.NullPointerException
at net.dev.game.utils.ScoreboardUtil.setTeam(ScoreboardUtil.java:46) ~[?:?]
at net.dev.game.listener.JoinListener.onJoin(JoinListener.java:43) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_221]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.4.jar:git-Spigot-8887c5f-06efc9e]
... 13 more