MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    EntityExtendedProperty modifiable quand joueur déconnecté

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    46 Messages 5 Publieurs 6.0k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Benjamin LoisonB Hors-ligne
      Benjamin Loison
      dernière édition par

      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

      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • Benjamin LoisonB Hors-ligne
          Benjamin Loison
          dernière édition par

          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

          1 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

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

            1 réponse Dernière réponse Répondre Citer 0
            • AymericRedA Hors-ligne
              AymericRed
              dernière édition par

              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 réponse Dernière réponse Répondre Citer 0
              • Benjamin LoisonB Hors-ligne
                Benjamin Loison
                dernière édition par

                :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

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                         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 réponse Dernière réponse Répondre Citer 0
                  • Benjamin LoisonB Hors-ligne
                    Benjamin Loison
                    dernière édition par

                    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

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      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 réponse Dernière réponse Répondre Citer 0
                      • Benjamin LoisonB Hors-ligne
                        Benjamin Loison
                        dernière édition par

                        “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

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par

                          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 réponse Dernière réponse Répondre Citer 0
                          • Benjamin LoisonB Hors-ligne
                            Benjamin Loison
                            dernière édition par

                            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

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002R Hors-ligne
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                              dernière édition par

                              Ton code actuelle devrait fonctionner. Étrange.

                              1 réponse Dernière réponse Répondre Citer 0
                              • Benjamin LoisonB Hors-ligne
                                Benjamin Loison
                                dernière édition par

                                tag.getCompoundTag(EEPRestrained.EXT_PROP_NAME).setBoolean("adjoint", true);
                                

                                tag.getCompoundTag est un get et pas un set mais pourtant quand je regette adjoint derrière ça me dit true du coup 😕 l’incompréhension totale, j’ai essayé avec joueur déconnecté, jamais connecté etc rien ne marche 😕

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

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Tu peux envoyer les deux fonctions de ton eep en report avec les nbt ?

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • AymericRedA Hors-ligne
                                    AymericRed
                                    dernière édition par

                                    Ah mais tu changes la valeur, mais est ce que tu resauvegardes le fichier après ?

                                    Edit: ah non tu le réécris

                                    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 réponse Dernière réponse Répondre Citer 0
                                    • Benjamin LoisonB Hors-ligne
                                      Benjamin Loison
                                      dernière édition par

                                      Je n’ai pas compris ta question Robin, voici mon code actuel :

                                      SaveHandler saveHandler = (SaveHandler)DimensionManager.getWorld(0).getSaveHandler();
                                      File players = new File(saveHandler.getWorldDirectory(), "playerdata");
                                      GameProfile game = MinecraftServer.getServer().func_152358_ax().func_152655_a(list[0]);
                                      if(game == null)
                                      return;
                                      File playerData = new File(players, game.getId().toString() + ".dat");
                                      if(playerData.exists() && playerData.isFile())
                                      {
                                      try
                                      {
                                      NBTTagCompound tag = CompressedStreamTools.readCompressed(new FileInputStream(playerData));
                                      tag.getCompoundTag(EEPRestrained.EXT_PROP_NAME).setBoolean("adjoint", true);
                                      CompressedStreamTools.write(tag, playerData);
                                      }
                                      catch(Exception e)
                                      {}
                                      }
                                      

                                      Et voici ma classe EEPRestrained :

                                      package fr.altiscraft.benjaminloison.entity;
                                      
                                      import java.io.File;
                                      import java.io.FileWriter;
                                      import java.util.List;
                                      import java.util.Scanner;
                                      
                                      import org.apache.commons.lang3.StringUtils;
                                      
                                      import fr.altiscraft.benjaminloison.api.Nombre;
                                      import fr.altiscraft.benjaminloison.api.SlashOS;
                                      import fr.altiscraft.benjaminloison.common.ModAltisCraft;
                                      import fr.altiscraft.benjaminloison.packets.PacketMessage;
                                      import fr.altiscraft.benjaminloison.packets.PacketRestrainClientServer;
                                      import fr.altiscraft.benjaminloison.packets.PacketRestrainServer;
                                      import fr.altiscraft.benjaminloison.proxy.CommonProxy;
                                      import net.minecraft.entity.Entity;
                                      import net.minecraft.entity.player.EntityPlayer;
                                      import net.minecraft.entity.player.EntityPlayerMP;
                                      import net.minecraft.init.Items;
                                      import net.minecraft.item.ItemStack;
                                      import net.minecraft.nbt.NBTTagCompound;
                                      import net.minecraft.server.MinecraftServer;
                                      import net.minecraft.util.ChatComponentText;
                                      import net.minecraft.util.EnumChatFormatting;
                                      import net.minecraft.world.World;
                                      import net.minecraftforge.common.IExtendedEntityProperties;
                                      
                                      public class EEPRestrained implements IExtendedEntityProperties
                                      {
                                      public final static String EXT_PROP_NAME = "EEPRestrained";
                                      private EntityPlayer player;
                                      public long cash, money;
                                      public boolean escorte, menotte, spawned, vip, vipp, rebelle, staff, gendarme, adjoint, brigadier, sergent, adjudant, aspirant, major, lieutenant, capitaine, commandant, colonel, general, bac, transaltis, samu, garagiste, antv, velo, conduire, camion, bateau, arme, pilote, diamant, archeologie, sirene;
                                      public String gang, gangInviting;
                                      public String[] raisonInterpol = new String[50];
                                      public int[] montantInterpol = new int[50];
                                      
                                      public EEPRestrained(EntityPlayer player)
                                      {
                                      this.player = player;
                                      escorte = false;
                                      menotte = false;
                                      cash = 0;
                                      money = 0;
                                      spawned = false;
                                      vip = false;
                                      vipp = false;
                                      rebelle = false;
                                      staff = false;
                                      gendarme = false;
                                      adjoint = false;
                                      brigadier = false;
                                      sergent = false;
                                      adjudant = false;
                                      aspirant = false;
                                      major = false;
                                      lieutenant = false;
                                      capitaine = false;
                                      commandant = false;
                                      colonel = false;
                                      general = false;
                                      bac = false;
                                      transaltis = false;
                                      samu = false;
                                      garagiste = false;
                                      antv = false;
                                      velo = false;
                                      conduire = false;
                                      camion = false;
                                      bateau = false;
                                      arme = false;
                                      pilote = false;
                                      diamant = false;
                                      archeologie = false;
                                      sirene = false;
                                      gang = "";
                                      gangInviting = "";
                                      for(int i = 0; i < raisonInterpol.length; i++)
                                      {
                                      raisonInterpol* = "";
                                      }
                                      for(int i = 0; i < montantInterpol.length; i++)
                                      {
                                      montantInterpol* = 0;
                                      }
                                      }
                                      
                                      public static final void register(EntityPlayer player)
                                      {
                                      player.registerExtendedProperties(EEPRestrained.EXT_PROP_NAME, new EEPRestrained(player));
                                      }
                                      
                                      public static final EEPRestrained get(EntityPlayer player)
                                      {
                                      return (EEPRestrained)player.getExtendedProperties(EXT_PROP_NAME);
                                      }
                                      
                                      @Override
                                      public void saveNBTData(NBTTagCompound compound)
                                      {
                                      NBTTagCompound properties = new NBTTagCompound();
                                      properties.setBoolean("Escorte", escorte);
                                      properties.setBoolean("Menotte", menotte);
                                      properties.setLong("Cash", cash);
                                      properties.setLong("Money", money);
                                      properties.setBoolean("vip", vip);
                                      properties.setBoolean("vipp", vipp);
                                      properties.setBoolean("rebelle", rebelle);
                                      properties.setBoolean("staff", staff);
                                      properties.setBoolean("gendarme", gendarme);
                                      properties.setBoolean("adjoint", adjoint);
                                      properties.setBoolean("brigadier", brigadier);
                                      properties.setBoolean("sergent", sergent);
                                      properties.setBoolean("adjudant", adjudant);
                                      properties.setBoolean("major", major);
                                      properties.setBoolean("aspirant", aspirant);
                                      properties.setBoolean("lieutenant", lieutenant);
                                      properties.setBoolean("capitaine", capitaine);
                                      properties.setBoolean("commandant", commandant);
                                      properties.setBoolean("colonel", colonel);
                                      properties.setBoolean("general", general);
                                      properties.setBoolean("bac", bac);
                                      properties.setBoolean("transaltis", transaltis);
                                      properties.setBoolean("samu", samu);
                                      properties.setBoolean("garagiste", garagiste);
                                      properties.setBoolean("antv", antv);
                                      properties.setBoolean("velo", velo);
                                      properties.setBoolean("conduire", conduire);
                                      properties.setBoolean("camion", camion);
                                      properties.setBoolean("bateau", bateau);
                                      properties.setBoolean("arme", arme);
                                      properties.setBoolean("pilote", pilote);
                                      properties.setBoolean("diamant", diamant);
                                      properties.setBoolean("archeologie", archeologie);
                                      properties.setBoolean("sirene", sirene);
                                      properties.setString("gang", gang);
                                      properties.setString("gangInviting", gangInviting);
                                      for(int i = 0; i < raisonInterpol.length; i++)
                                      {
                                      properties.setString("raisonInterpol" + i, raisonInterpol*);
                                      }
                                      for(int i = 0; i < montantInterpol.length; i++)
                                      {
                                      properties.setInteger("montantInterpol" + i, montantInterpol*);
                                      }
                                      compound.setTag(EXT_PROP_NAME, properties);
                                      }
                                      
                                      public void saveNBTDataMoney(NBTTagCompound compound)
                                      {
                                      NBTTagCompound properties = new NBTTagCompound();
                                      properties.setLong("Money", money);
                                      properties.setBoolean("vip", vip);
                                      properties.setBoolean("vipp", vipp);
                                      properties.setBoolean("rebelle", rebelle);
                                      properties.setBoolean("staff", staff);
                                      properties.setBoolean("gendarme", gendarme);
                                      properties.setBoolean("adjoint", adjoint);
                                      properties.setBoolean("brigadier", brigadier);
                                      properties.setBoolean("sergent", sergent);
                                      properties.setBoolean("adjudant", adjudant);
                                      properties.setBoolean("aspirant", aspirant);
                                      properties.setBoolean("major", major);
                                      properties.setBoolean("lieutenant", lieutenant);
                                      properties.setBoolean("capitaine", capitaine);
                                      properties.setBoolean("commandant", commandant);
                                      properties.setBoolean("colonel", colonel);
                                      properties.setBoolean("general", general);
                                      properties.setBoolean("bac", bac);
                                      properties.setBoolean("transaltis", transaltis);
                                      properties.setBoolean("samu", samu);
                                      properties.setBoolean("garagiste", garagiste);
                                      properties.setBoolean("antv", antv);
                                      properties.setBoolean("velo", velo);
                                      properties.setBoolean("conduire", conduire);
                                      properties.setBoolean("camion", camion);
                                      properties.setBoolean("bateau", bateau);
                                      properties.setBoolean("arme", arme);
                                      properties.setBoolean("pilote", pilote);
                                      properties.setBoolean("diamant", diamant);
                                      properties.setBoolean("archeologie", archeologie);
                                      properties.setBoolean("sirene", sirene);
                                      properties.setString("gang", gang);
                                      properties.setString("gangInviting", gangInviting);
                                      compound.setTag(EXT_PROP_NAME, properties);
                                      }
                                      
                                      @Override
                                      public void loadNBTData(NBTTagCompound compound)
                                      {
                                      NBTTagCompound properties = (NBTTagCompound)compound.getTag(EXT_PROP_NAME);
                                      escorte = properties.getBoolean("Escorte");
                                      menotte = properties.getBoolean("Menotte");
                                      cash = properties.getLong("Cash");
                                      money = properties.getLong("Money");
                                      vip = properties.getBoolean("vip");
                                      vipp = properties.getBoolean("vipp");
                                      rebelle = properties.getBoolean("rebelle");
                                      staff = properties.getBoolean("staff");
                                      gendarme = properties.getBoolean("gendarme");
                                      adjoint = properties.getBoolean("adjoint");
                                      brigadier = properties.getBoolean("brigadier");
                                      sergent = properties.getBoolean("sergent");
                                      adjudant = properties.getBoolean("adjudant");
                                      major = properties.getBoolean("major");
                                      aspirant = properties.getBoolean("aspirant");
                                      lieutenant = properties.getBoolean("lieutenant");
                                      capitaine = properties.getBoolean("capitaine");
                                      commandant = properties.getBoolean("commandant");
                                      colonel = properties.getBoolean("colonel");
                                      general = properties.getBoolean("general");
                                      bac = properties.getBoolean("bac");
                                      transaltis = properties.getBoolean("transaltis");
                                      samu = properties.getBoolean("samu");
                                      garagiste = properties.getBoolean("garagiste");
                                      antv = properties.getBoolean("antv");
                                      velo = properties.getBoolean("velo");
                                      conduire = properties.getBoolean("conduire");
                                      camion = properties.getBoolean("camion");
                                      bateau = properties.getBoolean("bateau");
                                      arme = properties.getBoolean("arme");
                                      pilote = properties.getBoolean("pilote");
                                      diamant = properties.getBoolean("diamant");
                                      archeologie = properties.getBoolean("archeologie");
                                      sirene = properties.getBoolean("sirene");
                                      gang = properties.getString("gang");
                                      gangInviting = properties.getString("gangInviting");
                                      for(int i = 0; i < raisonInterpol.length; i++)
                                      {
                                      raisonInterpol* = properties.getString("raisonInterpol" + i);
                                      }
                                      for(int i = 0; i < montantInterpol.length; i++)
                                      {
                                      montantInterpol* = properties.getInteger("montantInterpol" + i);
                                      }
                                      }
                                      
                                      @Override
                                      public void init(Entity e, World w)
                                      {}
                                      
                                      public final void sync()
                                      {
                                      if(player.worldObj.isRemote)
                                      {
                                      ModAltisCraft.instance.network.sendToServer(new PacketRestrainServer(escorte, menotte, cash, money, spawned, vip, vipp, rebelle, staff, gendarme, adjoint, brigadier, sergent, adjudant, major, aspirant, lieutenant, capitaine, commandant, colonel, general, bac, transaltis, samu, garagiste, antv, velo, conduire, camion, bateau, arme, pilote, diamant, archeologie, sirene, gang, gangInviting, raisonInterpol, montantInterpol));
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketRestrainClientServer(escorte, menotte, cash, money, spawned, vip, vipp, rebelle, staff, gendarme, adjoint, brigadier, sergent, adjudant, major, aspirant, lieutenant, capitaine, commandant, colonel, general, bac, transaltis, samu, garagiste, antv, velo, conduire, camion, bateau, arme, pilote, diamant, archeologie, sirene, gang, gangInviting, raisonInterpol, montantInterpol), (EntityPlayerMP)player);
                                      }
                                      }
                                      
                                      private static String getSaveKey(EntityPlayer player)
                                      {
                                      return player.getDisplayName() + ":" + EXT_PROP_NAME;
                                      }
                                      
                                      public static void saveProxyData(EntityPlayer player)
                                      {
                                      NBTTagCompound savedData = new NBTTagCompound();
                                      EEPRestrained.get(player).saveNBTData(savedData);
                                      CommonProxy.storeEntityData(getSaveKey(player), savedData);
                                      }
                                      
                                      public static void loadProxyData(EntityPlayer player)
                                      {
                                      EEPRestrained playerData = EEPRestrained.get(player);
                                      NBTTagCompound savedData = CommonProxy.getEntityData(getSaveKey(player));
                                      if(savedData != null)
                                      {
                                      playerData.loadNBTData(savedData);
                                      }
                                      playerData.sync();
                                      }
                                      
                                      public void creditCash(ItemStack item, int prix)
                                      {
                                      if(player.inventory.hasItem(ModAltisCraft.CarteBancaire))
                                      {
                                      if(cash + money >= prix)
                                      {
                                      setMoney(getMoney() - (prix - cash));
                                      setCash(0);
                                      boolean isEmpty = false;
                                      for(int i = 0; i <= player.inventory.getSizeInventory() - 5; i++)
                                      {
                                      if(player.inventory.mainInventory* == item || player.inventory.mainInventory* == null)
                                      {
                                      isEmpty = true;
                                      break;
                                      }
                                      }
                                      if(isEmpty)
                                      {
                                      player.inventory.addItemStackToInventory(item);
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage(EnumChatFormatting.GREEN + "Item achete !", false), (EntityPlayerMP)player);
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage(EnumChatFormatting.RED + "Vous n'avez pas de place !", true), (EntityPlayerMP)player);
                                      }
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage(EnumChatFormatting.RED + "Pas assez d'argent au total !", true), (EntityPlayerMP)player);
                                      sync();
                                      }
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage(EnumChatFormatting.RED + "Pas assez d'argent !", true), (EntityPlayerMP)player);
                                      sync();
                                      }
                                      }
                                      
                                      public String recherchesraisonall()
                                      {
                                      String recherchesraisonall = "";
                                      for(int i = 0; i < raisonInterpol.length; i++)
                                      {
                                      if(i == 0)
                                      {
                                      recherchesraisonall = recherchesraisonall + raisonInterpol*;
                                      }
                                      else
                                      {
                                      recherchesraisonall = recherchesraisonall + " " + raisonInterpol*;
                                      }
                                      }
                                      return recherchesraisonall;
                                      }
                                      
                                      public int nombre()
                                      {
                                      int number = 0;
                                      for(int i = 0; i < montantInterpol.length; i++)
                                      {
                                      if(montantInterpol* != 0)
                                      {
                                      number += montantInterpol*;
                                      }
                                      }
                                      sync();
                                      return number;
                                      }
                                      
                                      public void resetInterpol()
                                      {
                                      for(int i = 0; i < raisonInterpol.length; i++)
                                      {
                                      raisonInterpol* = "";
                                      montantInterpol* = 0;
                                      }
                                      sync();
                                      }
                                      
                                      private boolean mis = false;
                                      
                                      public void addInterpol(String raison, int montant)
                                      {
                                      if(!gendarme)
                                      {
                                      mis = false;
                                      for(int i = 0; i < raisonInterpol.length && !mis; i++)
                                      {
                                      if(raisonInterpol*.equals("") && raisonInterpol* != null && !mis)
                                      {
                                      raisonInterpol* = raison;
                                      montantInterpol* = montant;
                                      mis = true;
                                      }
                                      }
                                      sync();
                                      }
                                      }
                                      
                                      public void vip(boolean vip2)
                                      {
                                      vip = vip2;
                                      sync();
                                      }
                                      
                                      public boolean getvip()
                                      {
                                      return vip;
                                      }
                                      
                                      public void vipp(boolean vipp2)
                                      {
                                      vipp = vipp2;
                                      sync();
                                      }
                                      
                                      public boolean getvipp()
                                      {
                                      return vipp;
                                      }
                                      
                                      public void sirene(boolean sirene)
                                      {
                                      this.sirene = sirene;
                                      }
                                      
                                      public void rebelle(boolean rebelle2)
                                      {
                                      rebelle = rebelle2;
                                      sync();
                                      }
                                      
                                      public boolean getrebelle()
                                      {
                                      return rebelle;
                                      }
                                      
                                      public void staff(boolean staff2)
                                      {
                                      staff = staff2;
                                      sync();
                                      }
                                      
                                      public boolean getstaff()
                                      {
                                      return staff;
                                      }
                                      
                                      public void gendarme(boolean gendarme2)
                                      {
                                      gendarme = gendarme2;
                                      sync();
                                      }
                                      
                                      public boolean getgendarme()
                                      {
                                      return gendarme;
                                      }
                                      
                                      public void gang(String gang2)
                                      {
                                      gang = gang2;
                                      sync();
                                      }
                                      
                                      public String getgang()
                                      {
                                      return gang;
                                      }
                                      
                                      public void adjoint(boolean adjoint2)
                                      {
                                      adjoint = adjoint2;
                                      sync();
                                      }
                                      
                                      public boolean getadjoint()
                                      {
                                      return adjoint;
                                      }
                                      
                                      public void brigadier(boolean brigadier2)
                                      {
                                      brigadier = brigadier2;
                                      sync();
                                      }
                                      
                                      public boolean getbrigadier()
                                      {
                                      return brigadier;
                                      }
                                      
                                      public void sergent(boolean sergent2)
                                      {
                                      sergent = sergent2;
                                      sync();
                                      }
                                      
                                      public boolean getsergent()
                                      {
                                      return sergent;
                                      }
                                      
                                      public void adjudant(boolean adjudant2)
                                      {
                                      adjudant = adjudant2;
                                      sync();
                                      }
                                      
                                      public boolean getadjudant()
                                      {
                                      return adjudant;
                                      }
                                      
                                      public void major(boolean major2)
                                      {
                                      major = major2;
                                      sync();
                                      }
                                      
                                      public boolean getmajor()
                                      {
                                      return major;
                                      }
                                      
                                      public void aspirant(boolean aspirant2)
                                      {
                                      aspirant = aspirant2;
                                      sync();
                                      }
                                      
                                      public boolean getaspirant()
                                      {
                                      return aspirant;
                                      }
                                      
                                      public void lieutenant(boolean lieutenant2)
                                      {
                                      lieutenant = lieutenant2;
                                      sync();
                                      }
                                      
                                      public boolean getlieutenant()
                                      {
                                      return lieutenant;
                                      }
                                      
                                      public void escorte(boolean escorte2)
                                      {
                                      escorte = escorte2;
                                      sync();
                                      }
                                      
                                      public boolean getescorte()
                                      {
                                      return escorte;
                                      }
                                      
                                      public void capitaine(boolean capitaine2)
                                      {
                                      capitaine = capitaine2;
                                      sync();
                                      }
                                      
                                      public boolean getcapitaine()
                                      {
                                      return capitaine;
                                      }
                                      
                                      public void commandant(boolean commandant2)
                                      {
                                      commandant = commandant2;
                                      sync();
                                      }
                                      
                                      public boolean getcommandant()
                                      {
                                      return commandant;
                                      }
                                      
                                      public void colonel(boolean colonel2)
                                      {
                                      colonel = colonel2;
                                      sync();
                                      }
                                      
                                      public boolean getcolonel()
                                      {
                                      return colonel;
                                      }
                                      
                                      public void general(boolean general2)
                                      {
                                      general = general2;
                                      sync();
                                      }
                                      
                                      public boolean getgeneral()
                                      {
                                      return general;
                                      }
                                      
                                      public void bac(boolean bac2)
                                      {
                                      bac = bac2;
                                      sync();
                                      }
                                      
                                      public boolean getbac()
                                      {
                                      return bac;
                                      }
                                      
                                      public void transaltis(boolean transaltis2)
                                      {
                                      transaltis = transaltis2;
                                      sync();
                                      }
                                      
                                      public boolean gettransaltis()
                                      {
                                      return transaltis;
                                      }
                                      
                                      public void samu(boolean samu2)
                                      {
                                      samu = samu2;
                                      sync();
                                      }
                                      
                                      public boolean getsamu()
                                      {
                                      return samu;
                                      }
                                      
                                      public void garagiste(boolean garagiste2)
                                      {
                                      garagiste = garagiste2;
                                      sync();
                                      }
                                      
                                      public boolean getgaragiste()
                                      {
                                      return garagiste;
                                      }
                                      
                                      public void antv(boolean antv2)
                                      {
                                      antv = antv2;
                                      sync();
                                      }
                                      
                                      public boolean getantv()
                                      {
                                      return antv;
                                      }
                                      
                                      public void velo(boolean velo2)
                                      {
                                      velo = velo2;
                                      sync();
                                      }
                                      
                                      public boolean getvelo()
                                      {
                                      return velo;
                                      }
                                      
                                      public void conduire(boolean conduire2)
                                      {
                                      conduire = conduire2;
                                      sync();
                                      }
                                      
                                      public boolean getconduire()
                                      {
                                      return conduire;
                                      }
                                      
                                      public void bateau(boolean bateau2)
                                      {
                                      bateau = bateau2;
                                      sync();
                                      }
                                      
                                      public boolean getbateau()
                                      {
                                      return bateau;
                                      }
                                      
                                      public void camion(boolean camion2)
                                      {
                                      camion = camion2;
                                      sync();
                                      }
                                      
                                      public boolean getcamion()
                                      {
                                      return camion;
                                      }
                                      
                                      public void arme(boolean arme2)
                                      {
                                      arme = arme2;
                                      sync();
                                      }
                                      
                                      public boolean getarme()
                                      {
                                      return arme;
                                      }
                                      
                                      public void pilote(boolean pilote2)
                                      {
                                      pilote = pilote2;
                                      sync();
                                      }
                                      
                                      public boolean getpilote()
                                      {
                                      return pilote;
                                      }
                                      
                                      public void diamant(boolean diamant2)
                                      {
                                      diamant = diamant2;
                                      sync();
                                      }
                                      
                                      public boolean getdiamant()
                                      {
                                      return diamant;
                                      }
                                      
                                      public void archeologie(boolean archeologie2)
                                      {
                                      archeologie = archeologie2;
                                      sync();
                                      }
                                      
                                      public boolean getarcheologie()
                                      {
                                      return archeologie;
                                      }
                                      
                                      public void gangInviting(String gangInviting2)
                                      {
                                      gangInviting = gangInviting2;
                                      sync();
                                      }
                                      
                                      public String getGangInviting()
                                      {
                                      return gangInviting;
                                      }
                                      
                                      public void menotte(boolean menotte2)
                                      {
                                      menotte = menotte2;
                                      sync();
                                      }
                                      
                                      public boolean isRestrained()
                                      {
                                      return menotte;
                                      }
                                      
                                      public void pay()
                                      {
                                      sync();
                                      }
                                      
                                      public void addCash(long amount)
                                      {
                                      boolean sufficient = amount <= getMoney();
                                      if(sufficient)
                                      {
                                      cash += amount;
                                      money -= amount;
                                      sync();
                                      }
                                      }
                                      
                                      public boolean sufficient(long amount)
                                      {
                                      boolean sufficient = amount <= getCash();
                                      if(sufficient)
                                      {
                                      return true;
                                      }
                                      else
                                      {
                                      return false;
                                      }
                                      }
                                      
                                      public boolean sufficientm(long amount)
                                      {
                                      boolean sufficient = amount <= getMoney();
                                      if(sufficient)
                                      {
                                      return true;
                                      }
                                      else
                                      {
                                      return false;
                                      }
                                      }
                                      
                                      public String buyCashTest(long amount, ItemStack item)
                                      {
                                      boolean sufficient = amount <= getCash();
                                      if(sufficient)
                                      {
                                      if(item != null)
                                      {
                                      boolean isEmpty = false;
                                      for(int i = 0; i <= player.inventory.getSizeInventory() - 5; i++)
                                      {
                                      if(player.inventory.mainInventory* == item || player.inventory.mainInventory* == null)
                                      {
                                      isEmpty = true;
                                      break;
                                      }
                                      }
                                      if(isEmpty)
                                      {
                                      return "mod.boughtitem";
                                      }
                                      else
                                      {
                                      return "mod.notenoughspace";
                                      }
                                      }
                                      }
                                      else
                                      {
                                      return "mod.notenoughmoney";
                                      }
                                      return null;
                                      }
                                      
                                      public void buyMoneyGang(int amount, ItemStack item, EntityPlayerMP sender)
                                      {
                                      if(item != null)
                                      {
                                      boolean isEmpty = false;
                                      for(int i = 0; i <= player.inventory.getSizeInventory() - 5; i++)
                                      {
                                      if(player.inventory.mainInventory* == item || player.inventory.mainInventory* == null)
                                      {
                                      isEmpty = true;
                                      break;
                                      }
                                      }
                                      if(isEmpty)
                                      {
                                      delMoneyGang(amount);
                                      player.inventory.addItemStackToInventory(item);
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("Item achete !", false, amount), sender);
                                      List <entityplayermp>players = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
                                      for(EntityPlayerMP joueur : players)
                                      {
                                      EEPRestrained props = EEPRestrained.get(joueur);
                                      if(props.gang.equals(gang) && !joueur.getDisplayName().equals(sender.getDisplayName()))
                                      {
                                      player.addChatMessage(new ChatComponentText(player.getDisplayName() + " a achete " + item.getDisplayName() + " a " + Nombre.main(amount) + " euros !"));
                                      }
                                      }
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("Pas assez de place !", true, amount), sender);
                                      }
                                      }
                                      }
                                      
                                      public void buyCash(long amount, ItemStack item)
                                      {
                                      boolean sufficient = amount <= getCash();
                                      if(sufficient)
                                      {
                                      if(item != null)
                                      {
                                      boolean isEmpty = false;
                                      for(int i = 0; i <= player.inventory.getSizeInventory() - 5; i++)
                                      {
                                      if(player.inventory.mainInventory* == item || player.inventory.mainInventory* == null)
                                      {
                                      isEmpty = true;
                                      break;
                                      }
                                      }
                                      if(isEmpty)
                                      {
                                      delCash2(amount);
                                      player.inventory.addItemStackToInventory(item);
                                      }
                                      }
                                      }
                                      }
                                      
                                      public void buyPermis(long amount, String permis)
                                      {
                                      boolean sufficient = amount <= getCash();
                                      EEPRestrained props = EEPRestrained.get(player);
                                      if(sufficient)
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("mod.bought", false, Math.round(amount)), (EntityPlayerMP)player);
                                      if(permis.contains("velo"))
                                      {
                                      props.velo(true);
                                      }
                                      else if(permis.contains("conduire"))
                                      {
                                      props.conduire(true);
                                      }
                                      else if(permis.contains("camion"))
                                      {
                                      props.camion(true);
                                      }
                                      else if(permis.contains("bateau"))
                                      {
                                      props.bateau(true);
                                      }
                                      else if(permis.contains("pilote"))
                                      {
                                      props.pilote(true);
                                      }
                                      else if(permis.contains("arme"))
                                      {
                                      props.arme(true);
                                      }
                                      else if(permis.contains("diamant"))
                                      {
                                      props.diamant(true);
                                      }
                                      else if(permis.contains("archeologie"))
                                      {
                                      props.archeologie(true);
                                      }
                                      else if(permis.contains("rebelle"))
                                      {
                                      props.rebelle(true);
                                      }
                                      props.delCash2(amount);
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("mod.notenoughmoney ", true), (EntityPlayerMP)player);
                                      }
                                      }
                                      
                                      public void buyColorant(long amount, int color)
                                      {
                                      if(amount <= getCash())
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("mod.bought", false, Math.round(amount)), (EntityPlayerMP)player);
                                      player.inventory.addItemStackToInventory(new ItemStack(Items.dye, 1, color));
                                      EEPRestrained.get(player).delCash2(amount);
                                      }
                                      else
                                      {
                                      ModAltisCraft.instance.network.sendTo(new PacketMessage("mod.notenoughmoney ", true), (EntityPlayerMP)player);
                                      }
                                      }
                                      
                                      public void addCashRaw(long amount)
                                      {
                                      cash += amount;
                                      sync();
                                      }
                                      
                                      public void delCash(long amount)
                                      {
                                      boolean sufficient = amount <= getCash();
                                      if(sufficient)
                                      {
                                      cash -= amount;
                                      money += amount;
                                      sync();
                                      }
                                      }
                                      
                                      public void delCash2(long amount)
                                      {
                                      if(amount <= getCash())
                                      {
                                      cash -= amount;
                                      sync();
                                      }
                                      }
                                      
                                      public void delMoney(long amount)
                                      {
                                      if(amount <= getMoney())
                                      {
                                      money -= amount;
                                      sync();
                                      }
                                      }
                                      
                                      public void delMoneyGang(int amount)
                                      {
                                      File fichiergang = new File(path + SlashOS.main() + "mods" + SlashOS.main() + "AltisCraft.fr" + SlashOS.main() + "Gang" + SlashOS.main() + gang + ".txt");
                                      File gangtemp = new File(path + SlashOS.main() + "mods" + SlashOS.main() + "AltisCraft.fr" + SlashOS.main() + "Gang" + SlashOS.main() + gang + ".temp");
                                      try
                                      {
                                      Scanner sc = new Scanner(fichiergang);
                                      Scanner sct = new Scanner(fichiergang);
                                      FileWriter fw = new FileWriter(gangtemp);
                                      fw.write(sc.nextLine());
                                      sc.nextLine();
                                      sct.nextLine();
                                      sct.nextLine();
                                      if(sct.hasNextLine())
                                      {
                                      sct.nextLine();
                                      }
                                      fw.write("\n" + (getMoneyGang() - amount));
                                      while(sc.hasNextLine())
                                      {
                                      if(sct.hasNextLine())
                                      {
                                      fw.write(sc.nextLine() + "\n");
                                      }
                                      else
                                      {
                                      fw.write(sc.nextLine());
                                      }
                                      sct.nextLine();
                                      }
                                      fw.close();
                                      sc.close();
                                      sct.close();
                                      fichiergang.delete();
                                      gangtemp.renameTo(fichiergang);
                                      }
                                      catch(Exception e)
                                      {}
                                      }
                                      
                                      String path = new File("").getAbsolutePath();
                                      
                                      public int getMoneyGang()
                                      {
                                      int amount = -1;
                                      try
                                      {
                                      Scanner sc = new Scanner(new File(path + SlashOS.main() + "mods" + SlashOS.main() + "AltisCraft.fr" + SlashOS.main() + "Gang" + SlashOS.main() + gang + ".txt"));
                                      if(sc.hasNextLine())
                                      {
                                      sc.nextLine();
                                      }
                                      if(sc.hasNextLine())
                                      {
                                      String scan = sc.nextLine();
                                      if(StringUtils.isNumeric(scan))
                                      {
                                      amount = Integer.parseInt(scan);
                                      }
                                      }
                                      sc.close();
                                      }
                                      catch(Exception e)
                                      {}
                                      return amount;
                                      }
                                      
                                      public long getCash()
                                      {
                                      return cash;
                                      }
                                      
                                      public void addMoney(long amount)
                                      {
                                      money += amount;
                                      sync();
                                      }
                                      
                                      public void setMoney(long amount)
                                      {
                                      money = amount;
                                      sync();
                                      }
                                      
                                      public void setCash(long amount)
                                      {
                                      cash = amount;
                                      sync();
                                      }
                                      
                                      public long getMoney()
                                      {
                                      return money;
                                      }
                                      }
                                      ```</entityplayermp>

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

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • robin4002R Hors-ligne
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                        dernière édition par

                                        Dans ta fonction loadNBTData
                                        Tu as :
                                        NBTTagCompound properties = (NBTTagCompound)compound.getTag(EXT_PROP_NAME);
                                        puis :
                                        adjoint = properties.getBoolean(“adjoint”);
                                        ça correspond bien, donc je ne vois pas pourquoi ça ne fonctionne pas 😕

                                        Après avoir écrit relis le fichier pour vérifier que la modification s’est bien effectué. Il y a peut être un problème avec
                                        CompressedStreamTools.write(tag, playerData);

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • Benjamin LoisonB Hors-ligne
                                          Benjamin Loison
                                          dernière édition par

                                          Les tests sont fait sur serveur :

                                          Lorsque j’éxécute le code quand je suis connecté, ça ne marche pas (normal, ça modifier la donnée dans le .dat mais à la déconnexion ça corrige le .dat avec les données que j’avais à la déconnexion en cache).
                                          Lorsque j’éxécute le code quand je suis déconnecté (bon pseudo), ça ne marche pas (il y a modification du fichier mais à la déconnexion, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies 😕

                                          Et pas de soucis au niveau de réinitilisation possible, avec un autre code similaire quand je suis connecté et que je met Adjoint pas de soucis, je relance le serveur, je le suis toujours.

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

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • robin4002R Hors-ligne
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                            dernière édition par

                                            @‘Benjamin Loison’:

                                            Lorsque j’éxécute le code quand je suis déconnecté (bon pseudo), ça ne marche pas (il y a modification du fichier mais à la déconnexion, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies 😕

                                            ?!?
                                            Comment tu peux te déconnecté si tu n’es pas connecté ?

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB