ServerPlugin Längere Tab Namen

Dieses Thema im Forum "Programmierung" wurde erstellt von LegitCoreYT, 20. November 2016.

  1. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Hallo liebe Leser,
    Ich so eben ein Tab Plugin programmiert und jedem Team einen Prefix zugewiesen. Ich selbst habe einen 15-stelligen MC Namen. Vor meinem Namen sollte aber noch Admin stehen. Beides zusammen wären also schon mal 20 Zeichen. Der Server erkennt nur 16 und möchte mich deshalb nicht drauf lassen...
    Kann man evtl. mit Scoreboards den Namen auf 32 Stellen erhöhen?

    Fehler:
    Internal Exception: io.netty.handler.codec.DecoderException: The received string length is longer than maximum allowed (32>16)

    Vielen Dank für jede Hilfe :)
     
    #1
  2. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    "String Prefix and Suffix need to be under 16 characters long including added color coding" - bugs.mojang.com
    Alternativ kannst du die entsprechenden Stellen im Code bzw. den Prefix/Suffix posten, dann kann man u.U mehr sagen.
     
    #2
  3. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Code: (einfach nur mit 2 Beispiele ^^)
    package de.NochNichtGebannt;

    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.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.Scoreboard;

    public class Main extends JavaPlugin implements Listener {

    Scoreboard sb;

    @Override
    public void onEnable() {
    Bukkit.getConsoleSender().sendMessage("§7[§bTabsystem§7] Das Tabsystem wurde §aaktiviert.");

    sb = Bukkit.getScoreboardManager().getMainScoreboard();

    sb.registerNewTeam("00000Admin");
    sb.registerNewTeam("00001Spieler");


    sb.getTeam("00000Admin").setPrefix("§4§lAdmin §7| §4§l");
    sb.getTeam("00001Spieler").setPrefix("§a");


    Bukkit.getPluginManager().registerEvents(this, this);

    }

    @Override
    public void onDisable() {
    Bukkit.getConsoleSender().sendMessage("§7[§bTabsystem§7] Das Tabsystem wurde §aaktiviert.");
    }

    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
    setPrefix(e.getPlayer());
    }

    @SuppressWarnings("deprecation")
    private void setPrefix(Player p) {
    String team = "";

    if(p.hasPermission("rang.admin")) {
    team = "00000Admin";
    }else {
    team = "00001Spieler";
    }

    sb.getTeam(team).addPlayer(p);
    p.setDisplayName(sb.getTeam(team).getPrefix() + p.getName());

    for(Player all : Bukkit.getOnlinePlayers()) {
    all.setScoreboard(sb);
    }
    }

    }

    So, das ist im Prinzip das ganze Plugin ^^
    Plugin.yml dürfte ja klar sein :p
     
    #3
  4. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    Der Prefix des Teams 00000Admin ist 18 Zeichen lang (§4§lAdmin §7| §4§l), das ist nicht erlaubt.
    Außerdem glaube ich nicht dass du zusätzlich den DisplayName setzen musst:
    Code (Text):
    1. sb.getTeam(team).addPlayer(p);
    2. p.setDisplayName(sb.getTeam(team).getPrefix() + p.getName());
    So kommst du warrscheinlich dann auf die 32 Zeichen
    ...und nutze in Zukunft bitte die Code-Tags (Einfügen->Code) oder pastebin.com wenn du Quellcode angibst.
     
    #4
    LegitCoreYT gefällt das.
  5. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Hm... Ich habe den Prefix des Teams 00000Admin mal zu §4 geändert. Auch das ging nicht.
    Des weiteren habe ich den DisplayName gesetzt und keine Änderungen feststellen können...
     
    #5
  6. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    Ändert sich den irgendwas an der Fehlermeldung im Client (steht da z.B. eine andere Zahl anstatt der 32)?
    Ansonsten kann der Fehler auch durch den Namen von anderen Entities, sprich Mobs, ausgelöst werden.
     
    #6
    LegitCoreYT gefällt das.
  7. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Naja inzwischen habe ich es geschafft mit "§4§l" die Zahl auf 23 runterzubekommen. Was für mich aber keinen Sinn ergibt, ist, dass wenn ich "§4" nehme die Zahl 32 da bleibt...
     
    #7
  8. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    @TheSimufreak Vielen Dank für deine Hilfe ^^
    Habe das ganze mit einer kleinen IF-Abfrage gelöst :p

    if (p.getName().length() >= 48) {
    p.setPlayerListName(p.getName().substring(0, 48));
    }

    MfG LegitCore
     
    #8
  9. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    Dann hat sich das ja geklärt, auch wenn ich das Verhalten von Minecraft immer noch nicht nachvollziehen kann o_O
     
    #9
  10. UnityGaming
    Offline

    UnityGaming

    Registriert seit:
    25. Oktober 2015
    Beiträge:
    89
    Ort:
    Hohenfels
    Minecraft:
    FastFelix771
    Dieses Verhalten hat nichts mit dem Client an sich zu tun.
    Das sind Limits die in der Protokollebene festgelegt wurden - vermutlich aus Designgründen, obwohl seit der 1.8 die Tablist eigentlich bequem auto-skalieren könnte. (können sollte)

    Manchmal fragt man sich wirklich was sich die Programmierer dabei gedacht haben, aber solche Kleinigkeiten sind gut änderbar, es wäre also in naher Zukunft möglich, dass die Limits angehoben werden - sofern den Herren bei Mojang danach ist.
     
    #10
  11. JTK222
    Offline

    JTK222

    Registriert seit:
    5. September 2013
    Beiträge:
    665
    Ort:
    Planet Erde
    Minecraft:
    JTK222
    Also eigentlich ist es doch eine Client sache, momentan stürzt der Client ab sobald man längere werte nutzt. (Ja dies ist über Umwege möglich)
     
    #11
  12. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Ja das Verhalten von Minecraft ist sehr komisch...
    Habe gestern Abend das Plugin fertig bekommen und alles lief. Bin jetzt nach Hause gekommen und habe es noch einmal getestet und schon kam ein Fehler in der Konsole...

    http://pastebin.com/vs5EVFV8

    Ich habe nichts geändert...
    Einfach komisch o_O

    MfG LegitCore
     
    #12
  13. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    Du kannst ein Team nur einmal registrieren, heißt du musst überprüfen ob es das Team '0000Admin' gibt, falls nicht registrierst du es.
     
    #13
  14. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    Naja... Das Team ist nur einmal registriert und auch nicht zweimal... Und da ist das Problem :( Das Team ist nur einmal registriert und der Fehler kommt trotzdem...

    MfG LegitCore
     
    #14
  15. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    #15
  16. GermanDev
    Offline

    GermanDev

    Registriert seit:
    14. September 2015
    Beiträge:
    13
    Ich hatte dein Problem auch schon einmal, du kannst nur eine bestimmte anzahl an Buchstaben hinzufügen zum Namen
     
    #16
  17. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    @GermanDev Daran liegt es nicht... Wenn ich z.B. eine weiter 0 zu 00000Admin hinzufüge, dann geht das gleiche mit der Gruppe Mod los...
    Ein Prefix kann höchstens 16 Zeichen haben und meiner hat 16.
    Natürlich habe ich es auch schon mit §4 getestet. Auch das ging nicht...

    MfG LegitCore
     
    #17
  18. GermanDev
    Offline

    GermanDev

    Registriert seit:
    14. September 2015
    Beiträge:
    13
    Bei meinem Tablisten Plugin geht jeder Name mit prefix und mit über 16 Zeichen
     
    #18
  19. LegitCoreYT
    Offline

    LegitCoreYT

    Registriert seit:
    20. August 2016
    Beiträge:
    25
    @GermanDev Hm... Die Logik von Minecraft...
    Ich glaube ich werden den Fehler wohl kaum gefixt bekommen :p
     
    #19
  20. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    42
    Ja eben genau deswegen! Wenn du mit
    Code (Text):
    1. sb.registerNewTeam("Einhorn");
    ein Team im Scoreboard registrierst wird das Team in den Map-Daten gespeichert und ist entsprechend beim nächsten Serverstart immer noch im Scoreborad registriert. Regstrierst du nun ein Team mit
    Code (Text):
    1. sb.registerNewTeam("Einhorn");
    erneut (Der Code wird ja bei jedem Serverstart ausgeführt) wirft das eine Exception, da es ein Team mit diesem Namen (hier 'Einhorn') bereits gibt.
     
    #20