• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved EntityExtendedProperty modifiable quand joueur déconnecté

    1.7.x
    1.7.10
    5
    46
    5008
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Benjamin Loison
      Benjamin Loison last edited by

      Salut !

      J’aimerais savoir comment procéder pour modifier un EntityExtendedProperty lorsque mon Entity est un joueur et que celui-ci est déconnecté (j’ai essayé de faire comme à l’habitude mais si le joueur est déconnecté je ne peux pas travailler sur ses EntityExtendedProperties car je n’arrive pas à récupérer l’EntityPlayer qui est alors null.)

      Merci d’avance 😉

      >! Développeur de Altis-Life (Arma III) sur Minecraft !
      >! Site web     : https://lemnoslife.com
      TeamSpeak : ts.lemnoslife.com

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        Salut,
        Ce n’est pas possible.
        Par contre tu peux modifier les valeurs du NBTTagCompound associé. Faut juste trouver comme le get, logiquement il faut lire le fichier qui se trouve dans “dossier de la sauvegarde/playerdata/uuid.dat”

        1 Reply Last reply Reply Quote 0
        • Benjamin Loison
          Benjamin Loison last edited by

          D’accord merci je vais essayer de voir ça 🙂

          >! Développeur de Altis-Life (Arma III) sur Minecraft !
          >! Site web     : https://lemnoslife.com
          TeamSpeak : ts.lemnoslife.com

          1 Reply Last reply Reply Quote 0
          • Benjamin Loison
            Benjamin Loison last edited by

            Je n’arrive pas à get les NBTTagCompound associés au joueur… Et le fichier .dat est assez illisible ^^

            Une fonction à me prêter ? Je la rend après utilisation ^^ 😛

            >! Développeur de Altis-Life (Arma III) sur Minecraft !
            >! Site web     : https://lemnoslife.com
            TeamSpeak : ts.lemnoslife.com

            1 Reply Last reply Reply Quote 0
            • Deleted
              Deleted last edited by

              player.getEntityData() blabla

              1 Reply Last reply Reply Quote 0
              • AymericRed
                AymericRed last edited by

                @‘Plaigon’:

                player.getEntityData() blabla

                Oui sauf que si player est null (joueur déco) ça va pas marcher

                Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                1 Reply Last reply Reply Quote 0
                • Benjamin Loison
                  Benjamin Loison last edited by

                  ^^ Merci AymericRed, d’autres fonctions sinon ? 😕 Avec le World il n’y a pas quelque chose de possible ?

                  >! Développeur de Altis-Life (Arma III) sur Minecraft !
                  >! Site web     : https://lemnoslife.com
                  TeamSpeak : ts.lemnoslife.com

                  1 Reply Last reply Reply Quote 0
                  • AymericRed
                    AymericRed last edited by

                    Je sais pas je vais voir ce soir comment mc récupères les tags du joueur quand il se co

                    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                    1 Reply Last reply Reply Quote 0
                    • Benjamin Loison
                      Benjamin Loison last edited by

                      Je redemande, il y a t-il un moyen de get l’EntityPlayerMP juste à partir du pseudo ou de l’uuid du joueur déconnecté ?
                      J’aimerais get les NBTTagCoumpounds d’un joueur déconnecté, je ne trouve vraiment pas 😕

                      Merci d’avance !

                      Ps: j’ai trouvé ce code sur internet :

                      SaveHandler saveHandler = (SaveHandler)DimensionManager.getWorld(0).getSaveHandler();
                      String username = "Test";
                      NBTTagCompound playerNbt = saveHandler.getPlayerNBT(username);
                      InventoryPlayer inventory = new InventoryPlayer(null);
                      inventory.readFromNBT(playerNbt.getTagList("Inventory", 0));
                      inventory.mainInventory = contents;
                      playerNbt.setTag("Inventory", inventory.writeToNBT(new NBTTagList()));
                      try
                      {
                      File playersDirectory = new File(saveHandler.getWorldDirectory(), "players"), temp = new File(playersDirectory, username + ".dat.tmp"), playerFile = new File(playersDirectory, username + ".dat");
                      CompressedStreamTools.writeCompressed(playerNbt, new FileOutputStream(temp));
                      if(playerFile.exists())
                      {
                      playerFile.delete();
                      }
                      temp.renameTo(playerFile);
                      }
                      catch(Exception e)
                      {}
                      

                      mais saveHandler.getPlayerNBT(username); getPlayerNBT a besoin d’un EntityPlayerMP alors que j’ai juste le pseudo du joueur déconnecté

                      >! Développeur de Altis-Life (Arma III) sur Minecraft !
                      >! Site web     : https://lemnoslife.com
                      TeamSpeak : ts.lemnoslife.com

                      1 Reply Last reply Reply Quote 0
                      • Deleted
                        Deleted last edited by

                        TU as cette méthode si tu veux mais fais attention de mettre le bon id du monde où se trouve le pseudo du joueur que tu veux…
                        MinecraftServer.getServer().worldServers[0].getPlayerEntityByName(“le nom de ton joueur”);

                        1 Reply Last reply Reply Quote 0
                        • Benjamin Loison
                          Benjamin Loison last edited by

                          Le problème c’est que même si le joueur s’est déjà connecté une fois, MinecraftServer.getServer().worldServers[0].getPlayerEntityByName(“le nom de ton joueur”); me renvoie un null comme il est déconnecté 😕

                          >! Développeur de Altis-Life (Arma III) sur Minecraft !
                          >! Site web     : https://lemnoslife.com
                          TeamSpeak : ts.lemnoslife.com

                          1 Reply Last reply Reply Quote 0
                          • Deleted
                            Deleted last edited by

                            Sinon tu peux créer une nouvelle instance de EntityPlayer, je pense que ça fera l’affaire 😃

                            1 Reply Last reply Reply Quote 0
                            • AymericRed
                              AymericRed last edited by

                              Il faudrait regarder quand un joueur se co, comment ses tags sont lus.

                              Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                              1 Reply Last reply Reply Quote 0
                              • Benjamin Loison
                                Benjamin Loison last edited by

                                :3 Cannot instantiate the type EntityPlayer

                                Je vais essayer de faire ça Aymeric mais bon je ne sais pas trop chercher dans quelles classes de Minecraft pour le coup là ^^ je farfouille 🙂

                                >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                >! Site web     : https://lemnoslife.com
                                TeamSpeak : ts.lemnoslife.com

                                1 Reply Last reply Reply Quote 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                         SaveHandler saveHandler = (SaveHandler)DimensionManager.getWorld(0).getSaveHandler();
                                         File world = saveHandler.getWorldDirectory(); // on récupère le dossier world
                                         File players = new File(world, "playerdata"); // le dossier playerdata qui se trouve dans le dossier world
                                         GameProfile gameprofile = MinecraftServer.getServer().getConfigurationManager().func_152358_ax().func_152655_a("nom du joueur"); // permet d'avoir le game profile d'un joueur depuis le cache (donc même s'il est déconnecté)
                                         File playerData = new File(players, gameprofile.getId().toString() + ".dat"); // on récupère son fichier .dat
                                         if (playerData.exists() && playerData.isFile()) // s'il existe et que c'est bien un fichier
                                         {
                                             try
                                             {
                                                 NBTTagCompound tag = CompressedStreamTools.readCompressed(new FileInputStream(playerData)); // on lit le tag nbt
                                                 // à toi de faire ce que tu veux
                                                 CompressedStreamTools.write(tag, playerData); // on le réécrit
                                             }
                                             catch(FileNotFoundException e)
                                             {
                                                 e.printStackTrace();
                                             }
                                             catch(IOException e)
                                             {
                                                 e.printStackTrace();
                                             }
                                         }
                                  

                                  Comment j’ai fais ? J’ai prit le code que tu as donné pour avoir le code qui trouve le dossier de la map, j’ai regardé ce que fait la fonction getPlayerNBT ce qui m’a permis de voir qu’elle utilise juste l’instance d’EntityPlayerMP pour avoir l’uuid. Du-coup je suis aller voir dans la commande ban (qui marche même si le joueur est déconnecté) quelle fonction était utilisé pour avoir l’uuid en fonction du pseudo.

                                  1 Reply Last reply Reply Quote 0
                                  • Benjamin Loison
                                    Benjamin Loison last edited by

                                    Merci d’avoir pris de ton temps pour me répondre Robin mais juste : MinecraftServer.getServer().getConfigurationManager().func_152603_m().func_152700_a(“Pseudo bien écrit”), me renvoie null si le joueur est déconnecté 😕

                                    EDIT: Pour que ça ne renvoie pas null même s’il est déconnecté il faut qu’il soit op, d’où func_152603_m(), mais comment faire sans qu’il aille à être opé ? 😕

                                    Même en l’opant ça ne fonctionne pas, son NBTTagCoumpound “adjoint” n’est pas changé, quand je refait la commande pour get adjoint, il ne l’est pas

                                    >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                    >! Site web     : https://lemnoslife.com
                                    TeamSpeak : ts.lemnoslife.com

                                    1 Reply Last reply Reply Quote 0
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                      Heu non, il n’a pas besoin d’être op.
                                      Je me suis trompé de code.
                                                  GameProfile gameprofile = MinecraftServer.getServer().func_152358_ax().func_152655_a(“joueur”);
                                      c’est ça la bonne fonction.
                                      ça passe par le cache du serveur.
                                      La seule condition c’est que le joueur ce soit déjà connecté une fois sur le serveur.

                                      Le tag c’est directement celui du joueur. Le tag de ton eep est dans ce tag.
                                      Utilises des print pour voir toutes les entrées du tag.

                                      1 Reply Last reply Reply Quote 0
                                      • Benjamin Loison
                                        Benjamin Loison last edited by

                                        “La seule condition c’est que le joueur ce soit déjà connecté une fois sur le serveur.”

                                        Quand tu dis ça c’est sur le serveur depuis qu’il a été créé ou la dernière fois qu’il a été relancé ?

                                        Et aussi je pourrais avoir un exemple de modification d’une booléenne dans une ExtentedProperties parce que j’ai ça:

                                        try
                                        {
                                        NBTTagCompound tag = CompressedStreamTools.readCompressed(new FileInputStream(playerData));
                                        tag.getCompoundTag(EEPRestrained.EXT_PROP_NAME).setBoolean("adjoint", true);
                                        CompressedStreamTools.write(tag, playerData);
                                        }
                                        

                                        Et ça ne marche pas 😕

                                        >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                        >! Site web     : https://lemnoslife.com
                                        TeamSpeak : ts.lemnoslife.com

                                        1 Reply Last reply Reply Quote 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                          Depuis sa création. C’est stocké dans un fichier json.

                                          Regardes avec un logiciel comme nbt explorer où se trouve ta propriété dans le fichier .dat.

                                          1 Reply Last reply Reply Quote 0
                                          • Benjamin Loison
                                            Benjamin Loison last edited by

                                            J’ai déjà essayé pour voir, il y a un dossier avec le nom de cette variable: EEPRestrained.EXT_PROP_NAME et il y a adjoint dedans mais tu ne m’as pas répondu de comment bien modifier ce sous-tag ?

                                            >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                            >! Site web     : https://lemnoslife.com
                                            TeamSpeak : ts.lemnoslife.com

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB