MFF

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

    Extended Entity Properties les données restent à 0

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.2
    25 Messages 3 Publieurs 4.2k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Oui en effet, pas de long ni de double. Pour les boolean suffit de faire passer un byte qui vaut 1 ou 0 et voila.
      Mais pour les long ou double il faut passer par les paquets, donc la faudrait voir avec gugu.

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

        Bah c’est pas grave ça m’étonnerais que les personnes récoltent assez afin de dépasser un la valeur maximal d’un int 😛 (2.147.483.647 il me semble)
        En revanche j’ai essayé plusieurs ids > 20 mais à chaque fois ils étaient utilisés (aussi bien le 29 que le 21)

        ^^

        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

          Ah ? J’utilise le 31, 30, 29, et 28, je n’ai pas de problème.

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

            ​java.lang.IllegalArgumentException: Duplicate id value for 29!
            at net.minecraft.entity.DataWatcher.addObject(DataWatcher.java:56)
            at lmac.sonic.ExtendedEntityPropSonic.<init>(ExtendedEntityPropSonic.java:29)
            at lmac.sonic.InfoOverlay.renderGameOverlay(InfoOverlay.java:67)
            at cpw.mods.fml.common.eventhandler.ASMEventHandler_15_InfoOverlay_renderGameOverlay_Post.invoke(.dynamic)
            at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51)
            at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122)
            at net.minecraftforge.client.GuiIngameForge.post(GuiIngameForge.java:901)
            at net.minecraftforge.client.GuiIngameForge.renderHelmet(GuiIngameForge.java:263)
            at net.minecraftforge.client.GuiIngameForge.renderGameOverlay(GuiIngameForge.java:120)
            at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1122)
            at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1025)
            at net.minecraft.client.Minecraft.run(Minecraft.java:912)
            at net.minecraft.client.main.Main.main(Main.java:112)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
            at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
            
            

            :s
            Pas d’idée 😞 ?</init>

            ^^

            1 réponse Dernière réponse Répondre Citer 0
            • isadorI Hors-ligne
              isador Moddeurs confirmés Modérateurs
              dernière édition par

              deux mob qui on le même id

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

                .<’
                C’est pas de mobs qui ont le même id c’est deux DataWatcher qui ont le même id mais le problème c’est que c’est pareil avec tout les ids dispo :s

                ^^

                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 as bien mit un id différent à chaque watcher ajouté ?

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

                    Bah apparemment non ._.

                    public final static String EXT_PROP_NAME = "ExtPropSonic";
                    
                    private final EntityPlayer player;
                    
                    public int Descendre;
                    public byte DoubleJump;
                    public int Ring;
                    int i = 28;
                    public ExtendedEntityPropSonic(EntityPlayer player) {
                    this.player = player;
                    this.Descendre = 0;
                    this.DoubleJump = 0;
                    this.Ring = 0;
                    
                    this.player.getDataWatcher().addObject(i + 1, Descendre);
                    this.player.getDataWatcher().addObject(i + 2, DoubleJump);
                    this.player.getDataWatcher().addObject(i + 3, Ring);
                    }
                    
                    @Override
                    public void saveNBTData(NBTTagCompound compound) {
                    compound.setInteger("Descendre", this.player.getDataWatcher().getWatchableObjectInt(i + 1));
                    compound.setByte("DoubleJump", this.player.getDataWatcher().getWatchableObjectByte(i + 2));
                    compound.setInteger("Ring", this.player.getDataWatcher().getWatchableObjectInt(i + 3));
                    }
                    
                    @Override
                    public void loadNBTData(NBTTagCompound compound) {
                    this.player.getDataWatcher().updateObject(i + 1, compound.getInteger("Descendre"));
                    this.player.getDataWatcher().updateObject(i + 2, compound.getByte("DoubleJump"));
                    this.player.getDataWatcher().updateObject(i + 3, compound.getLong("Ring"));
                    }
                    
                    @Override
                    public void init(Entity entity, World world) {
                    // TODO Auto-generated method stub
                    
                    }
                    
                    public static final void register(EntityPlayer player) {
                    player.registerExtendedProperties(ExtendedEntityPropSonic.EXT_PROP_NAME,
                    new ExtendedEntityPropSonic(player));
                    }
                    
                    public static final ExtendedEntityPropSonic get(EntityPlayer player) {
                    return (ExtendedEntityPropSonic) player.getExtendedProperties(EXT_PROP_NAME);
                    }
                    
                    private static String getSaveKey(EntityPlayer player) {
                    return player.getDisplayName() + ":" + EXT_PROP_NAME;
                    }
                    
                    public static void saveProxyData(EntityPlayer player) {
                    ExtendedEntityPropSonic playerData = ExtendedEntityPropSonic.get(player);
                    NBTTagCompound savedData = new NBTTagCompound();
                    
                    playerData.saveNBTData(savedData);
                    CommonProxy.storeEntityData(getSaveKey(player), savedData);
                    }
                    
                    public int getDescendre() {
                    return this.player.getDataWatcher().getWatchableObjectInt(i + 1);
                    }
                    
                    public void setDescendre(int newDescendre) {
                    this.player.getDataWatcher().updateObject(i + 1, newDescendre);
                    }
                    
                    public boolean getDoubleJump() {
                    if(this.player.getDataWatcher().getWatchableObjectInt(i + 2) == 0){
                    return false;
                    }
                    else{
                    return true;
                    }
                    }
                    
                    public void setDoubleJump(boolean newDoubleJump) {
                    if(newDoubleJump){
                    this.player.getDataWatcher().updateObject(i + 2, 0);
                    }
                    else{
                    this.player.getDataWatcher().updateObject(i + 2, 1);
                    }
                    }
                    
                    public long getRing() {
                    return this.player.getDataWatcher().getWatchableObjectInt(i + 3);
                    }
                    
                    public void setRing(long newRing) {
                    this.player.getDataWatcher().updateObject(i + 3, newRing);
                    }
                    

                    Je me sentirais bête si ça viens de là >.<

                    Edit: Je viens d’y penser mais le faite d’initialisé deux fois ExtendedEntityPropSonic doit être la cause du problème (je l’initialise dans l’event et dans un overlay)

                    ^^

                    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

                      C’est en effet étrange, tu n’as pas d’autre mod sur ta workspace si ? Car c’est peut être un autre mod qui les utilisent déjà.
                      Ou alors il y a vraiment un problème x)

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

                        Bah Glutils de (je ne vais pas citer le nom pour pas faire de faute, bon ok (jglrxavpok)) et FFTM

                        ^^

                        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 ce cas je ne vois pas pourquoi ça ne fonctionne pas 😕

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

                            Je crois avoir trouvé

                            cf: mon édit d’hier

                            Edit: Je viens d’y penser mais le faite d’initialisé deux fois ExtendedEntityPropSonic doit être la cause du problème (je l’initialise dans l’event et dans un overlay)

                            Le constructeur de mon ExtendedEntityPropSonic n’arrête pas d’être chargé donc la première fois ça l’ajoute mais la seconde bah … ça peut que buguer maintenant faut savoir qu’elle bétise ai-je fais pour le charger plusieurs fois >.<’

                            ^^

                            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

                              Ah oui en effet, c’est pas bon ça. Il faut seulement l’enregistrer dans l’event EntityConstructing
                              Dans les autres event il faut juste le get.

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

                                Yep justement je remettais

                                ExtendedEntityPropSonic propSonic = new ExtendedEntityPropSonic(player);
                                

                                Good maintenant ça ce charge effectivement qu’une seule fois ^^
                                Dernière petite question (même si je pense déjà connaître la réponse) cette méthode risque de causer des problèmes de compatibilité si deux mods utilisent le même id :s , non?

                                ^^

                                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

                                  Oui, c’est pour ça le mieux est de passer le système de config.
                                  Mais tu pourrais remettre le premier système, si ça se trouve (voir très surement) le problème venant aussi du fait que tu enregistrais deux fois l’extended prop

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

                                    tousse tousse
                                    Je me sens bête mais VRAIMENT bête >.<’
                                    Effectivement ça marche (mais qu’à moitié (me permettant d’avoir encore un peu de dignité :P))
                                    La valeur ring reste à 0, elle passe à un lors d’un packet puis … revient à 0 (ce qui n’était pas le cas avec l’autre méthode)

                                    Edit : En lançant en multiplayer je vois que les rings sont changés côté serveur mais pas transmis au client :s , de plus le nombre à l’air d’être reset si on relance la partie

                                    Re-edit : Je pense en faite que le packet n’est pas transmis au client mais je ne sais pas trop pourquoi :s

                                    ^^

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

                                      Aucune idée ?
                                      J’ai fais une barre qui change en fonction d’une donnée modifié côté serveur et pour le coup la modification s’effectue .. MAIS lors de la reconnexion bah la barre revient pleine. Je ne comprends vraiment pas ..

                                      ^^

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

                                        Je dois avouer ne pas très bien comprendre, ça marche enfin alors que je n’ai rien touché m’enfin ce qui compte c’est le résultat (même si je sens que je vais rapidement avoir un autre problème avec ça >.<

                                        Merci beaucoup de ton aide ^^

                                        ^^

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

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB