Minecraft Tablist maximale anzahl vom Spielernamen ändern
lima-city → Forum → Programmiersprachen → Java
abschneiden
anfangsbuchstabe
code
duplikat
erstellen
farbe
jeweiligen ranges
list
maximale anzahl
nachteil
problem
setzen
spieler
spielername
string
suffix
umbenennen
wechsel
weiterer spieler
zeichen
-
Hi
Ich bin heute auf folgendes Problem gestoßen und zwar wollte ich, dass in der Tabliste vor
jedem Namen die Abkürzung des jeweiligen Ranges steht. ([M] Spieler)
Das ist soweit kein Problem, wenn da nicht
die maximale Anzahl an 16 Zeichen wären...
Mein Code bis jetzt:
String name = prefix.replace("&", "§") + event.getPlayer().getName(); event.getPlayer().setPlayerListName(name);
Eine mögliche Lösung wäre mit nem substring von 16,
name.trim().substring(0, 16);
doch das will ich nicht.
Ich habe es schon auf einigen Servern gesehen, dass sie mehr als 16 Zeichen haben können.
Falls jemand eine Idee hätte wie das gehe, wär ich sehr froh
danke
Und noch etwas, ich weiss nicht ob ich die craftbukkit Datei bearbeiten kann , eher nich
mfg swissmcs
*Edit
Ich kann die craftbukkit.jar verändern
Beitrag zuletzt geändert: 4.2.2014 19:14:25 von swissminecraftserver -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi swissminecraftserver,
sowas wird in Minecraft über Teampräfixe und -suffixe in den Scoreboards geregelt.
Diese sind im Vanilla Minecraft leer und können nicht ohne externe Tools geändert werden.
Doch mit Bukkit ist es möglich diese Werte beliebig zu setzen:
Scoreboard score = Bukkit.getScoreboardManager().getMainScoreboard(); // Klappt, solange du keine eigenen Scoreboards benutzt Team dev = score.getTeam("dev"); // Falls es schon existiert if(dev == null) dev = score.registerNewTeam("dev"); // Sonst wird es erstellt dev.setPrefix(prefix.replace("&", "§")); // Den Prefix setzen dev.addPlayer(e.getPlayer()); // Den Spieler mit dem Prefix hinzufügen for(Player p : Bukkit.getOnlinePlayers()) // OPTIONAL p.setScoreboard(score); // OPTIONAL: Falls ein anderes Plugin das Scoreboard verändert hat, muss es richtig gesetzt werden
Dabei wird aber auch der Name über dem Spieler mit dem Präfix versehen.
Falls dieses nicht gewünscht ist, musst du den Spielernamen kürzen und den gekürzten Teil dann im Präfix oder Suffix wieder hinzufügen.
Also anstatt dev.addPlayer(e.getPlayer()):
String name = e.getPlayer().getName(); // Der Spielername String neuName = name.substring(1); // Das erste Zeichen abschneiden e.getPlayer().setPlayerListName(neuName); // In der Player List umbenennen @SuppressWarnings("deprecation") // Unwichtig, da dieses nur durch den UUID Wechsel hinzugefügt wurde(Namen können verändert werden) OfflinePlayer listPlayer = Bukkit.getOfflinePlayer(neuName); // Den Spieler für den neuen Namen erstellen dev.addPlayer(listPlayer); // Diesen anstatt des anderen hinzufügen dev.setPrefix(prefix.replace("&", "§") + e.getPlayer().getName().charAt(0)); // Diesen nach dem Präfix hinzufügen
Dies hat nur den großen Nachteil, dass man nur Spieler mit demselben Anfangsbuchstaben hinzufügen kann, oder man für jeden Anfangsbuchstaben/Spieler ein eigenes Team erstellen muss.
Weiterhin führt dieser Ansatz zu Problemen, wenn ein weiterer Spieler mit exakt diesem gekürzten Namen online ist, was aber sehr unwahrscheinlich ist und gegebenenfalls mithife von Code erkannt werden kann, sodass z.B. zwei Zeichen gekürzt werden.
Die zweite Möglichkeit umfasst das Hinzufügen von einer Farbe am Anfang des Spielernamens(hier z.B. Weiß):
String name = e.getPlayer().getName(); // Der Spielername String neuName = ChatColor.WHITE + name; // ÄNDERUNG: Die weiße Farbe hinzufügen e.getPlayer().setPlayerListName(neuName); // In der Player List umbenennen @SuppressWarnings("deprecation") // Unwichtig, da dieses nur durch den UUID Wechsel hinzugefügt OfflinePlayer listPlayer = Bukkit.getOfflinePlayer(neuName); // Den Spieler für den neuen Namen erstellen dev.addPlayer(listPlayer); // Diesen anstatt des anderen hinzufügen
Diese besitzt die oben aufgeführten Nachteile nicht, aber kann nur für Spielernamen bis 14 Zeichen angewandt werden, da du sonst wieder das oben aufgezeigte Problem bekommst,
Die Farbe fällt nicht auf, da sie ja sowieso die Standard Farbe ist und Duplikate sind nicht möglich, da Sonderzeichen in normalen Minecraft-Namen nicht erlaubt sind.
Ich hoffe dies hat dir einige Möglichkeiten zur Behebung deines Problemes gegeben.
mfg pueschel -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage