• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Probleme Event PickedUp Item

    1.7.x
    1.7.10
    2
    16
    4759
    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.
    • sosoh
      sosoh dernière édition par

      Salut, j’ai créé un nouvel inventaire, je souhaiterais que quand on a son inventaire de base, remplit, ca ramasse les items et les mette dans mon nouvel inventaire. J’ai utilisé un l’event [size=smallPlayerEvent.ItemPickupEvent], mes méthodes sont bien j’ai testé avec un println, mais ca ne marche pas:

      [font=Courier New@SubscribeEvent
      ]**public void **itemPickedUp(PlayerEvent.ItemPickupEvent event){
      System.***out***.println(**"1"**);
      EntityPlayer player = event.**player**;
      EntityItem item = event.**pickedUp**;
      **minefusContainer **= **new **MinefusContainerPlayer(player, player.**inventory**, ExtendedPlayer.*get*(player).**inventory**);
      **if**(player.**inventory**.getFirstEmptyStack() == -1){
      System.***out***.println(**"2"**);
      **if**(**minefusInventory**.getFirstEmptyStack() == -1){
      System.***out***.println(**"3-1"**);
      }**else**{
      System.***out***.println(**"3-2"**);
      **int **slotId = **minefusInventory**.getFirstEmptyStack();
      **if**(**minefusInventory**.isItemValidForSlot(slotId, event.**pickedUp**.getEntityItem()) == **true**){
      System.***out***.println(**"4"**);
      **minefusContainer**.putStackInSlot(slotId, event.**pickedUp**.getEntityItem());
      event.**pickedUp**.setDead();
      }
      }
      }
      }
      

      :::
      [23:01:03] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:94]: 1

      [23:01:03] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:99]: 2
      [23:01:03] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:103]: 3-2
      [23:01:03] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:106]: 4
      :::

      Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

        Il manque des crochets dans tes if.

        EDIT : en fait non, c’est juste l’indexation qui m’a troublé.

        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
        • sosoh
          sosoh dernière édition par

          Non il n’en manque aucun.

          Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

            Fait un system.out.println montrant le contenu de l’inventaire ainsi que l’item contenu dans l’entité.

            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
            • sosoh
              sosoh dernière édition par

              Mon code:

              ​@SubscribeEvent
              public void itemPickedUp(PlayerEvent.ItemPickupEvent event){
              System.out.println("1");
              EntityPlayer player = event.player;
              EntityItem item = event.pickedUp;
              minefusContainer = new MinefusContainerPlayer(player, player.inventory, ExtendedPlayer.get(player).inventory);
              if(player.inventory.getFirstEmptyStack() == -1){
              System.out.println(player.inventory.getFirstEmptyStack());
              if(minefusInventory.getFirstEmptyStack() == -1){
              System.out.println(minefusInventory.getFirstEmptyStack());
              }else{
              System.out.println(minefusInventory.getFirstEmptyStack());
              int slotId = minefusInventory.getFirstEmptyStack();
              if(minefusInventory.isItemValidForSlot(slotId, event.pickedUp.getEntityItem()) == true){
              System.out.println(event.pickedUp.getEntityItem().getDisplayName());
              minefusContainer.putStackInSlot(slotId, event.pickedUp.getEntityItem());
              event.pickedUp.setDead();
              }
              }
              }
              }
              

              Les logs:

              [20:04:42] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:95]: 1
              -1
              0
              [20:04:42] [Server thread/INFO] [STDOUT]: [com.google.kujaff42530.moddofus.eventHandlers.MinefusEventHandler:itemPickedUp:108]: Sand
              

              Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                Le contenu n’est pas sauvegardé.

                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
                • sosoh
                  sosoh dernière édition par

                  Quel contenu ? Comment je dois procéder alors ?

                  Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                    @‘sosoh’:

                    Quel contenu ? Comment je dois procéder alors ?

                    Ton entityExtendedProperties n’est pas sauvegardé.

                    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
                    • sosoh
                      sosoh dernière édition par

                      Et donc je dois faire comment, je la sync ?

                      Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                        @‘sosoh’:

                        Et donc je dois faire comment, je la sync ?

                        
                        NBTTagCompound playerData = new NBTTagCompound();
                        ((ExtendedEntityPropTuto)(event.entity.getExtendedProperties(ExtendedEntityPropTuto.EXT_PROP_NAME))).saveNBTData(playerData);
                        proxy.storeEntityData(((EntityPlayer) event.entity).getDisplayName(), playerData);
                        ExtendedEntityPropTuto.saveProxyData((EntityPlayer) event.entity);
                        
                        

                        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
                        • sosoh
                          sosoh dernière édition par

                          Jai fait ca mais ca ne marche pas non plus:

                          ​[font=Courier New**if**](**minefusInventory**.isItemValidForSlot(slotId, event.**pickedUp**.getEntityItem()) == **true**){
                          System.***out***.println(**"Nom item" **+ event.**pickedUp**.getEntityItem().getDisplayName());
                          ItemStack itemStack = event.**pickedUp**.getEntityItem();
                          **minefusContainer**.putStackInSlot(slotId, itemStack);
                          NBTTagCompound playerData = **new **NBTTagCompound();
                          ((ExtendedPlayer)(player.getExtendedProperties(ExtendedPlayer.***EXT_PROP_MINEFUSINV***))).saveNBTData(playerData);
                          **proxy**.*storeEntityData*(player.getDisplayName(), playerData);
                          ExtendedPlayer.*saveProxyData*(player);
                          event.**pickedUp**.setDead();
                          }
                          

                          Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                            Il faut utiliser l’entityExtendedProperties que tu as récupérer auparavant car là tu enregistres l’EEP qui était déjà enregistré.

                            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
                            • sosoh
                              sosoh dernière édition par

                              Je n’ai récupéré aucune ExtendedProperties auparavant. Je ne comprends pas 😕

                              Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                                @‘sosoh’:

                                Je n’ai récupéré aucune ExtendedProperties auparavant. Je ne comprends pas 😕

                                et là ?

                                ExtendedPlayer.get(player).inventory
                                

                                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
                                • sosoh
                                  sosoh dernière édition par

                                  Cette méthode fait la meme chose que celle dans mon code:

                                  ​[font=Courier New**public static final **]ExtendedPlayer get(EntityPlayer player) {
                                  **return **(ExtendedPlayer) player.getExtendedProperties(***EXT_PROP_MINEFUSINV***);
                                  }
                                  
                                  ​%(#000000)[[font=Courier New]((ExtendedPlayer)(player.getExtendedProperties(ExtendedPlayer.***EXT_PROP_MINEFUSINV***])))
                                  

                                  Donc ca revient au meme non ?

                                  Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

                                    @‘sosoh’:

                                    Cette méthode fait la meme chose que celle dans mon code:

                                    ​[font=Courier New**public static final **]ExtendedPlayer get(EntityPlayer player) {
                                    **return **(ExtendedPlayer) player.getExtendedProperties(***EXT_PROP_MINEFUSINV***);
                                    }
                                    
                                    ​%(#000000)[[font=Courier New]((ExtendedPlayer)(player.getExtendedProperties(ExtendedPlayer.***EXT_PROP_MINEFUSINV***])))
                                    

                                    Donc ca revient au meme non ?

                                    Non, puisque en premier tu récupère l’EEP puis tu le modifie, puis tu le récupère encore et tu le sauvegardes.

                                    Exemple :
                                    -tu récupère la date du jour
                                    -tu changes la date
                                    -tu récupère la date du jour
                                    -tu la sauvegarde dans une variable

                                    au final, dans ta variable il y aura la date du jour et non la date modifiée.

                                    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 / 1
                                    • Premier message
                                      Dernier message
                                    Design by Woryk
                                    Contact / Mentions Légales

                                    MINECRAFT FORGE FRANCE © 2018

                                    Powered by NodeBB