MFF

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

    Système de rang

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    81 Messages 7 Publieurs 10.5k 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.
    • AymericRedA Hors-ligne
      AymericRed
      dernière édition par

      Il va falloir utiliser ceci : https://www.minecraftforgefrance.fr/showthread.php?tid=2444 pour sauvegarder le contenu de ta liste dans les tags nbt de ta map.

      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
      • GabsG Hors-ligne
        Gabs
        dernière édition par

        Ok par contre faut m’aider x)

        
        public class RankSave extends WorldSavedData {
        
        /**
        /* Ce constructeur est obligatoire
        */
        
        public static RankSave load(World w) {
        MapStorage storage = w.perWorldStorage; 
        final String KEY = getDataStorageKey(); // il faut modifier ici mais par quoi ? ServerProxy.RANK.get(…) ?
        RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);
        if (result == null) { 
        result = new RankSave(KEY);
        storage.setData(KEY, result);
        }
        
        return result; 
        }
        
        public RankSave(String key) {
        super(key);
        }
        
        @Override
        public void readFromNBT(NBTTagCompound p_76184_1_) {
        // Vous remplissez les attributs de votre objet via le NBTTagCompound
        
        }
        
        @Override
        public void writeToNBT(NBTTagCompound p_76187_1_) {
        // Vous écrivez le contenu de votre objet dans le NBTTagCompound
        
        }
        
        }
        
        
        1 réponse Dernière réponse Répondre Citer 0
        • AymericRedA Hors-ligne
          AymericRed
          dernière édition par

          Le KEY sera le nom de la sauvegarde donc tu peux mettre, par exemple, Ranks.

          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
          • GabsG Hors-ligne
            Gabs
            dernière édition par

            Ok mais le problème c’est que quand je met ServerProxy.Rank j’ai des érreurs:

            public static RankSave load(World w) {
            MapStorage storage = w.perWorldStorage; //On récupère la mapStorage de la dimension
            final HashMap <uuid, enumrank="">KEY = ServerProxy.RANK; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
            RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);//On charge nos données//ici a loadData
            if (result == null) { //Si nos données n'existe pas, …
            result = new RankSave(KEY);// ici a new RankSave
            storage.setData(KEY, result);// et ici a setData
            }
            ```</uuid,>
            1 réponse Dernière réponse Répondre Citer 0
            • AymericRedA Hors-ligne
              AymericRed
              dernière édition par

              As-tu créé une variable de type String qui s’appelle RANK dans ton ServerProxy :

              public static final String SAVE_KEY = "Ranks";
              

              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
              • BrokenSwingB Hors-ligne
                BrokenSwing Moddeurs confirmés Rédacteurs
                dernière édition par

                Le problème est qu’il a utilisé une HashMap pour clé, il n’a pas suivi correctement le tutoriel

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

                  D’acc j’ai fais ça:

                  RankSave:

                  
                  package net.legacymod.save;
                  
                  import java.util.HashMap;
                  import java.util.UUID;
                  
                  import net.legacymod.properties.EnumRank;
                  import net.legacymod.proxy.ServerProxy;
                  import net.minecraft.nbt.NBTBase;
                  import net.minecraft.nbt.NBTTagCompound;
                  import net.minecraft.nbt.NBTTagList;
                  import net.minecraft.nbt.NBTTagString;
                  import net.minecraft.world.World;
                  import net.minecraft.world.WorldSavedData;
                  import net.minecraft.world.storage.MapStorage;
                  
                  public class RankSave extends WorldSavedData {
                  
                  /**
                  /* Ce constructeur est obligatoire
                  */
                  
                  public static RankSave load(World w) {
                  MapStorage storage = w.perWorldStorage; //On récupère la mapStorage de la dimension
                  final String KEY = ServerProxy.SAVE_KEY; // Si vous avez choisis de faire une fonction static String. Quoiqu'il en soit, la variable KEY que nous utiliserons ici représente votre clé. Si vous utilisez un attribut static, utilisez le directement.
                  RankSave result = (RankSave)storage.loadData(RankSave.class, KEY);//On charge nos données
                  if (result == null) { //Si nos données n'existe pas, …
                  result = new RankSave(KEY);// Alors on les crée ...
                  storage.setData(KEY, result);// Et on les ajoutes à la mapStorage.
                  }
                  
                  return result; //On retourne notre objet qui représente les données a sauvegarder
                  }
                  
                  public RankSave(String key) {
                  super(key);
                  }
                  
                  public void readFromNBT(NBTTagCompound nbt) {
                  // Vous remplissez les attributs de votre objet via le NBTTagCompound
                  readFromNBT(nbt);
                  NBTTagCompound nbtTagCompound = nbt.getCompoundTag(ServerProxy.SAVE_KEY);
                  }
                  
                  @Override
                  public void writeToNBT(NBTTagCompound nbt) {
                  // Vous écrivez le contenu de votre objet dans le NBTTagCompound
                  writeToNBT(nbt);
                  NBTTagCompound nbtTagCompound = nbt.getCompoundTag(ServerProxy.SAVE_KEY); 
                  
                  }
                  
                  }
                  
                  

                  ServerProxy:

                  
                  package net.legacymod.proxy;
                  
                  import java.util.HashMap;
                  import java.util.UUID;
                  
                  import net.legacymod.packets.PacketGuerrier;
                  import net.legacymod.properties.EnumRank;
                  
                  public class ServerProxy {
                  
                  public static final HashMap <uuid, enumrank="">RANK = new HashMap<uuid, enumrank="">();
                  
                  public static final String SAVE_KEY = "Ranks"; 
                  
                  }
                  
                  

                  Dite moi si c’est bon sinon une fois que c’est fini je dois enregistrer la classe ?</uuid,></uuid,>

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

                    ça a l’air d’être bon, mis à part le fait que les fonctions readFromNBT et writeToNBT font chancune une boucle infinie…
                    Dans ta fonction write, il faut que tu mettes chaque élément de ta HashMap de rang dans le tag (en utilisant une NBTTagList()) et dans read, que tu lises ton tag et remplisses la liste avec ce qui a été lu.

                    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
                    • GabsG Hors-ligne
                      Gabs
                      dernière édition par

                      Je comprend pas tu me dis de que dans le write je met chaque élément de ma hashmap de rang c’est a dire -> EnumRank.Guerrier EnumRank.Archer etc… ? ou ServerProxy.Rank …
                      Et dans le read dont je lis le tag sa c’est bon et je le remplis avec la liste de se qui a été lu ? -> ?

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

                        En gros

                        
                        public static void writeToNBT(NBTTagCompound compound) {
                        NBTTagList rankList = new NBTTagList();
                        Iterator<entry<uuid, enumrank="">> iterator = RANK.entrySet().iterator();
                        while(iterator.hasNext()) {
                        NBTTagCompound rankTag = new NBTTagCompound();
                        Entry <uuid, enumrank="">entry = iterator.next();
                        rankTag.setString("uuid", entry.getKey().toString());
                        rankTag.setString("rank", entry.getValue().name());
                        rankList.appendTag(rankTag);
                        }
                        compound.setTag("rankList", rankList);
                        }
                        
                        

                        Et :

                        
                        public static void readFromNBT(NBTTagCompound compound) {
                        NBTTagList rankList= (NBTTagList)compound.getTag("rankList");
                        for(int i = 0; i < rankList.tagCount(); i++) {
                        NBTTagCompound rankTag = rankList.getCompoundTagAt(i);
                        RANK.put(UUID.fromString(rankTag.getString("uuid")), EnumRank.valueOf(rankTag.getString("rank")));
                        }
                        }
                        
                        ```</uuid,></entry<uuid,>
                        1 réponse Dernière réponse Répondre Citer 0
                        • GabsG Hors-ligne
                          Gabs
                          dernière édition par

                          Merci 🙂 c’est bon normalement!
                          Un dernier truc !
                          Je veux récupéré le rank exact du joueur si je fais:
                          if(ServerProxy.RANK.get(event.entityPlayer.getUniqueID()) != EnumRank.GUERRIER);
                          j’ai une érreur
                          Merci!

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

                            Tu devrais pas, refait voir ton proxy

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

                              C’est bon laisse ça marche finalement 😮 j’ai du me tromper x) 
                              Par contre quand je vais en solo je me met guerrier je save et quit je me re connecte en solo j’ai encore mon garde mais quand je save et que je quitte le jeu et que je le relance en me connectant en solo j’ai plus mon grade normal?

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

                                Aucune raison que ton code ne marche pas :

                                
                                if(ServerProxy.RANK.get(event.player.getUniqueID()) != EnumRank.GUERRIER) {
                                //Code
                                }
                                
                                

                                Il faut que tu garde le même pseudo, va dans : Run/Debug configurations … -> Arguments -> et tape --username tonPseudo

                                1 réponse Dernière réponse Répondre Citer 1
                                • GabsG Hors-ligne
                                  Gabs
                                  dernière édition par

                                  D’acc merci je close!

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

                                    @‘BrokenSwing’:

                                    Aucune raison que ton code ne marche pas :

                                    
                                    if(ServerProxy.RANK.get(event.player.getUniqueID()) != EnumRank.GUERRIER) {
                                                //Code
                                    }
                                    
                                    

                                    Il faut que tu garde le même pseudo, va dans : Run/Debug configurations … -> Arguments -> et tape --username tonPseudo

                                    Même pas avoir fais –username <pseudo>quand je relance mon jeu je ne suis plus Guerrier !</pseudo>

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

                                      Fais le –username, mets guerrier, quitte et relance.

                                      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
                                      • GabsG Hors-ligne
                                        Gabs
                                        dernière édition par

                                        C’est se que j’ai fais mais ça ne marche pas ^^

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

                                          Fait voir le code qui fait que tu met guerrier (je suis sûr à 90% que tu as oublié le .markDirty())

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

                                            case 1:
                                            if(ServerProxy.RANK.get(this.mc.thePlayer.getUniqueID()) == null){
                                            LegacyMod.network.sendToServer(new PacketGuerrier(EnumRank.GUERRIER));
                                            this.mc.thePlayer.closeScreen();
                                            EntityPlayer player1 = Minecraft.getMinecraft().thePlayer;
                                            ChatComponentText text1 = new ChatComponentText("§7Vous avez choisi la classe " + "§4Guerrier!");
                                            player1.addChatComponentMessage(text1);
                                            this.mc.thePlayer.closeScreen();
                                            
                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 4 / 5
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB