ServerPlugin Sind UUIDFetcher unperformant

Dieses Thema im Forum "Programmierung" wurde erstellt von GermanDev, 22. November 2016.

  1. GermanDev
    Offline

    GermanDev

    Registriert seit:
    14. September 2015
    Beiträge:
    13
    Guten Tag,

    ich schreibe gerade mein Freundesystem neu und möchte nun vollständig auf UUID umsteigen, ich speicher in mysql nur die UUIDs der Spieler und benutze um die aktuellen Namen herauszufinden einen UUIDReader, nun stelle ich mir die Frage ob es unperformant ist, wenn ich das z.B bei einem /friend list Befehl mache und die Namen der UUIDs auslesen möchte.

    Sollte das zu viel performance nehmen, würde mich zudem eine Idee Interessieren, wie ihr das machen würdet

    Mit freundlichen Grüßen

    Fabi | GermanDev
     
    #1
  2. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Wenn du einen Namen mit dem Fetcher ausliest, kannst du ihn bis zum nächsten Server-Neustart zwischenspeichern (also puffern). So musst du nicht jedes mal wenn du zu einer UUID den Namen wissen willst was übers Netz schicken und hast (in den meisten Fällen) den aktullen Namen parat. Dafür würde sich z.B. eine HashMap anbieten.
     
    #2
  3. Baba43
    Offline

    Baba43 Ehem. Teammitglied

    Registriert seit:
    5. November 2012
    Beiträge:
    589
    Das ist eine gute Frage und ich weiß aktuell gar nicht, wie Bukkit/Spigot das handhaben, aber wir haben uns ganz am Anfang schon ein eigenes System gebastelt, welches Spielernamen zu UUIDs zuordnet. Ich würde das an deiner Stelle einfach mal ausprobieren. Kann mir nicht vorstellen, dass es keine Lösung gibt, welche die Daten zwischenspeichert.

    Vom "Zwischenspeichern" bis zum Serverneustart halte ich allerdings ziemlich wenig, denn sobald dein Plugin mal mit mehr Spielern arbeiten möchte, als denen, die gerade online sind, hast du in jedem Fall ein Problem, wenn die Namen online aufgelöst werden.
     
    #3
  4. BlackHole
    Offline

    BlackHole

    Registriert seit:
    1. Juli 2012
    Beiträge:
    15
    Minecraft:
    BlackHole
    Bei Bukkit kann man Bukkit.getOfflinePlayer(UUID) verwenden und nach einer Null-Prüfung über .getName() den zuletzt bekannten Namen des Spieler heraus bekommen.
     
    #4
    GermanDev und TheSimufreak gefällt das.
  5. TheSimufreak
    Offline

    TheSimufreak

    Registriert seit:
    28. Juni 2012
    Beiträge:
    41
    Die Idee klingt ziemlich niiiiice. Man bräuchte den Fetcher dann nur wenn man den Namen eines Spielers haben möchte, der noch nie auf dem Server war (Falls das überhaupt im Sinne des Plugins ist)
     
    #5
    GermanDev gefällt das.