MFF

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

    Encore problème onUpdate

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    104 Messages 8 Publieurs 18.1k 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.
    • GabsG Hors-ligne
      Gabs
      dernière édition par

      @‘robin4002’:

      fais un print de stack.getTagCompound().getInteger(“key”) pour voir la valeur.

      Le reste de ton code est aussi un gros bordel, tu devrais le réorganiser.

      Il est à 0 car le packet n’est pas envoyer j’ai mis un print dans mon packet dans les logs j’ai pas le print.

      Pour le réorganiser c’est prévu!

      edit:

      J’ai rien dis j’ai mis un print dans frombyte:

      [15:34:51] [Server thread/INFO] [STDOUT]: [net.legacymod.packets.PacketKey:fromBytes:23]: packet
      

      Mais le truc c’est que c’est toujours a 0

      packet:

      
      public class PacketKey implements IMessage {
      
      public PacketKey(){
      
      }
      
      @Override
      public void fromBytes(ByteBuf buf) {
      System.out.println("packet");
      }
      
      @Override
      public void toBytes(ByteBuf buf) {
      
      }
      
      public static class Handler implements IMessageHandler <packetkey, imessage="">{
      
         public IMessage onMessage(PacketKey message, MessageContext ctx) {
      
          ItemStack stack = ctx.getServerHandler().playerEntity.inventory.getItemStack();
          if(stack != null){
          stack.setTagCompound(new NBTTagCompound());
          stack.getTagCompound().setInteger("key", 3);
          System.out.println("packet 2");
          System.out.println(stack.getTagCompound().getInteger("key"));
          }
          return null;
      
             }
         }
      }
      

      log:

      
      [15:34:50] [Server thread/INFO]: floriangabet a rejoint la partie
      [15:34:51] [Client thread/INFO] [STDOUT]: [net.legacymod.proxy.ClientProxy:keyTestTyped2:89]: num pad 6
      [15:34:51] [Server thread/INFO] [STDOUT]: [net.legacymod.packets.PacketKey:fromBytes:23]: packet
      [15:34:53] [Server thread/INFO] [STDOUT]: [net.legacymod.items.FlameBow:onPlayerStoppedUsing:144]: flèche normale
      0
      
      ```</packetkey,>
      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

        System.out.println(“packet 2”);
        ne s’affiche pas.

        Tu peux envoyer la ligne où tu as enregistré le paquet ?

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

          @‘robin4002’:

          System.out.println(“packet 2”);
          ne s’affiche pas.

          Tu peux envoyer la ligne où tu as enregistré le paquet ?

          Oui, 
          tien:  ```java
          network.registerMessage(PacketKey.Handler.class, PacketKey.class, 4, Side.SERVER);

          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

            étrange, je ne vois pas pourquoi ça ne fonctionne pas.
            Sinon envoies-moi un zip de ton dossier src.

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

              Mon src:

              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

                La flèche de feu est ok, appuies sur 6 pour changer de mode.
                En passant j’ai corrigé la convention Java et formaté ton code.

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

                  @‘robin4002’:

                  La flèche de feu est ok, appuies sur 6 pour changer de mode.
                  En passant j’ai corrigé la convention Java et formaté ton code.

                  Super! merci c’est exactement se qui me fallait!

                  Par contre j’ai un soucis,

                  Je m’explique:

                  Comme vous le savez très bien je veux faire un système de recharge pour chaque sort sur l’arc avec la fonction onUpdate.
                  Le soucis est que cette fonction fait bug mon arc comme ceci: https://youtu.be/wThsb3Fi4jU
                  Du coup pour évité ce problème je r’ajoute un world.isRemote comme ça:

                  
                   @Override
                      public void onUpdate(ItemStack item, World world, Entity player, int slotIndex, boolean inHand)
                      {
                          if(!item.hasTagCompound())
                          {
                              item.setTagCompound(new NBTTagCompound());
                          }
                          if(world.isRemote) // Comme ça
                          {
                              int timer = !item.getTagCompound().hasKey("timer") ? 0 : item.getTagCompound().getInteger("timer");
                              timer++;
                              item.getTagCompound().setInteger("timer", timer);
                  
                              int timer2 = !item.getTagCompound().hasKey("timer2") ? 0 : item.getTagCompound().getInteger("timer2");
                              timer2++;
                              item.getTagCompound().setInteger("timer2", timer2);
                  
                              int timer3 = !item.getTagCompound().hasKey("timer3") ? 0 : item.getTagCompound().getInteger("timer3");
                              timer3++;
                              item.getTagCompound().setInteger("timer3", timer3);
                  
                              super.onUpdate(item, world, player, slotIndex, inHand);
                          }
                      }
                  

                  Mais le soucis c’est que le world.isremote cause un soucis du coup les timers ils sont complètement faux j’ai fias un test sans le world.isremote avec le bug et la les timers marche.

                  Du coup je vois pas du tout comment faire car même avec un !world.isRemote c’est le même soucis!

                  J’espère que vous m’avez compris sinon faite le moi savoir!

                  Merci en tout cas robin 😄

                  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

                    Faudrait voir si on peut désactiver la synchro du tag nbt.
                    Car c’est ça qui fait ce bug visuel.

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

                      D’acc je cherche de mon côté demain la je vais dodo !

                      Edit:

                      J’ai pas trouvé perso sur internet.

                      C’est possible tu penses ?

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

                        
                        @Override
                        public boolean getShareTag()
                        {
                        return false;
                        }
                        
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • GabsG Hors-ligne
                          Gabs
                          dernière édition par

                          @‘BrokenSwing’:

                          
                          @Override
                          public boolean getShareTag()
                          {
                              return false;
                          }
                          
                          

                          Salut,

                          J’ai ajouté cette fonction dans la classe de mon arc et j’ai ensuite enlever le world.isremote mais j’ai toujours le problème “visuel” comme dis robin.

                          Je précise juste que ce bug influence aussi sur le “chargement” de l’arc c’est un peu compliqué a expliqué.

                          Je sais pas si vous voyez se que je veux dire au pire vous avez mon src juste au dessus vous enlevez le if(world.isremote) dans la fonction onUpdate de l’arc et vous verrez par vous même.

                          En tout cas merci quand même x) .

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

                            Je vais tester de mon côté, les sources n’ont pas été modifiées ?

                            EDIT : j’ai pris les sources données par robin. Mis à part quelques petits trucs qui ne sont pas très correctes, le code est globalement bon. En revanche je n’est pas ton problème lorsque je test de mon côté, est-ce que tu testes sur cauldron ou quelque chose comme ça ?

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

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

                              Coucou !
                              Bon, alors j’avais étudier le système de minecraft car je voulais faire un truc similaire.
                              En fait c’est simple : tu peux pas.

                              Quand tu mets à jour un NBT, ça met à jour ton ItemStack et ça fait planter le “Player Using Item”.
                              On peut très bien récupérer des données via le getter des NBTTagCompound, mais faut surtout pas utiliser les setters.
                              Pour les sceptiques, faites le test vous verrez. 😛

                              Du coup t’as plusieurs options : soit tu refait un système de  “Use Item”, un peu relou, soit tu utilises les ExtendedProperties et tu stock les cooldowns “sur le joueur”, par contre c’est un peu sale. (Ou une autre méthode à toi de voir, là c’est les deux qui me viennent à l’esprit tout de suite)

                              Fracture

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

                                Pourtant moi quand je teste j’ai aucun problème

                                Site web contenant mes scripts : http://SCAREXgaming.github.io

                                Pas de demandes de support par MP ni par skype SVP.
                                Je n'accepte sur skype que l…

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

                                  C’est bizarre, car en 1.7.10, c’est justement un problème.
                                  Utiliser les NBT dans le onUpdate ou dans le onUsingTick va empêcher la méthode onPlayerStoppedUsing d’être appelée. (Et en plus ça fait le problème visuel)
                                  Si tu veux jeter un oeil : http://www.minecraftforge.net/forum/index.php?topic=35035.0

                                  Fracture

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

                                    Peut être que le problème a été réglé dans ma version

                                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                                    Pas de demandes de support par MP ni par skype SVP.
                                    Je n'accepte sur skype que l…

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

                                      @‘SCAREX’:

                                      Peut être que le problème a été réglé dans ma version

                                      Euhh tu as enlever la ligne if(world.isRemote) dans la fonction onUpdate

                                      Salut Eikins,
                                      Merci des infos, du coup c’est chiant ouais…
                                      Y’a vraiment aucun moyen autre fonction ou une autre version de forge ?

                                      En tout cas merci de votre aides!

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

                                        Je n’ai absolument rien modifié, j’ai pris le zip donné par robin, s’il est différent du tiens, envoi le tiens

                                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                                        Pas de demandes de support par MP ni par skype SVP.
                                        Je n'accepte sur skype que l…

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

                                          @‘SCAREX’:

                                          Je n’ai absolument rien modifié, j’ai pris le zip donné par robin, s’il est différent du tiens, envoi le tiens

                                          Tien:

                                          Si tu veux “réglé” le problème tu rajoute un if(world.isremote) dans la fonction onUdpate de l’arc (FlameBow) mais ça fausse les timers…

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

                                            Effectivement je comprends d’où vient le problème maintenant : à chaque fois que tu modifies les nbt de l’itemStack, son utilisation est reset, le seul moyen est donc de stocker autre pars ton timer, par exemple dans un ExtendedEntityProperties, ce qui résoudrai le problème.

                                            EDIT : petite question, pourquoi utiliser un timer sachant que tu en as déjà un dans les paramètres ?

                                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                                            Pas de demandes de support par MP ni par skype SVP.
                                            Je n'accepte sur skype que l…

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB