Fonctionnement du système d'authentification UUID



  • Qu'est ce que le UUID ?

    C'est un identifiant unique universel.
    En gros, c'est 2 champ de type long généré aléatoirement qui nous donne un nombre unique pour chaque joueur.
    Je ne m'attarde pas sur les aspects techniques et pratiques, mais si vous êtes curieux, c'est ici que ça se passe :
    https://fr.wikipedia.org/wiki/Universal_Unique_Identifier

    Pourquoi utilisez les UUID ?

    Depuis la version 1.7 de Minecraft, ce nouveau système d'authentification à été mis en place.

    Avant la 1.7, un joueur était identifié par son nom.
    En 1.8 nous pourront changer de nom, ainsi il nous faut un autre identifiant, c'est l'UUID qui va remplir ce rôle.

    Notez bien que si vous continuez a identifier vos joueurs par leur nom, vous serez confrontez a plusieurs problèmes :

    • Plusieurs joueurs pourront avoir le même nom
    • N'importe qui pourra usurper l'identité d'un joueur, simplement en changeant son nom.

    Comment obtenir l'UUID d'un joueur

    • Le cas d'un joueur en ligne :
      Vous possèdez une référence vers le joueur connecté, donc il vous suffit de faire

      entityPlayer.getGameProfile()
      

      Vous avez ensuite accès a des méthodes vous fournissant l'UUID du joueur, son nom etc…

    • Le cas d'un joueur hors ligne :
      A TESTER
      Sans parler des détails techniques, la manipulation a faire est la suivante :

      ​UUID.nameUUIDFromBytes(("OfflinePlayer:" + entityPlayer.getName()).getBytes(Charsets.UTF_8)
      

    A savoir

    Lorsque vous changer le paramètre online-mode de votre serveur, les UUID ne sont plus les même.
    Ainsi, le serveur vous considéra en tant qu'un nouveau joueur et tout les paramètres sauvegardés sur l'ancien joueur resteront sur l'ancien joueur.
    Vous apparaîtrez donc au spawn, sans aucun item.

    Si vous avez d'autre info sur ce système ou des questions n'hésitez pas a poster a la suite de ce post.
    Pour ma part, plusieurs questions restent en suspend :

    • Peut-il y avoir plusieurs joueurs avec le même nom connecté simultanément au même serveur ?
    • Si un joueur offline change son nom, récupère-t'il sont stuff a la prochaine connexion ?

    Les explications viennent en partie d'un post en anglais sur le forum officiel de Forge : http://www.minecraftforge.net/forum/index.php/topic,26621.0.html



    • Si un joueur offline change son nom, récupère-t'il sont stuff a la prochaine connexion ?

    Oui, car j'ai lu que le stuff n'est plus save par rapport au nom mais UUID qui ne changes pas lui lorsqu'on change de nom. (Info a verifier mais j'en suis sur à 90%)


  • Administrateurs

    Le joueur offline, pas connecté sur Mojang. Pour un compte Mojang oui il est gardé, pour le joueur offline j'ai un doute (et je pense que non).