kostenloser Webspace werbefrei: lima-city


Minecraft Tablist maximale anzahl vom Spielernamen ändern

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    swissminecraftserver

    Kostenloser Webspace von swissminecraftserver

    swissminecraftserver hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.:cookie:

    mfg pueschel
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!