MFF

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

    Crash Null Pointer Exception

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    6 Messages 4 Publieurs 1.6k 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.
    • sosohS Hors-ligne
      sosoh
      dernière édition par

      Salut, j’ai mis ce code dans mon container, j’ai fait un Gui, mais je voudrais que lorsqu’on met un sceau d’eau dans un slot (le n°1), ca le vide: ca change le contenu par un sceau vide, mais sans passer par un bouton ou autre.:

      ​public void detectAndSendChanges()
      
          {
      if(tileEntity.getStackInSlot(1).getItem() == Items.water_bucket){
      tileEntity.setContenu(1);
      tileEntity.setInventorySlotContents(1, new ItemStack(Items.bucket));
      }
          }
      

      mais je crash:

      [22:44:02] [Server thread/ERROR]: Encountered an unexpected exception

      net.minecraft.util.ReportedException: Ticking memory connection
      at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
      at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
      at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
      at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
      at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
      at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
      Caused by: java.lang.NullPointerException
      at com.harrypotter.sosoh.common.container.ContainerChaudron.detectAndSendChanges(ContainerChaudron.java:107) ~[ContainerChaudron.class:?]
      at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:54) ~[Container.class:?]
      at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?]
      at com.harrypotter.sosoh.common.blocks.BlockChaudron.onBlockActivated(BlockChaudron.java:69) ~[BlockChaudron.class:?]
      at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409) ~[ItemInWorldManager.class:?]
      at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:593) ~[NetHandlerPlayServer.class:?]
      at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
      at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
      at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
      at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
      … 5 more

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

        Essais :

        public void detectAndSendChanges()
        
           {
        if(tileEntity.getStackInSlot(1).getItem() == Items.water_bucket && tileEntity.getStackInSlot(1).getItem() != null){
        tileEntity.setContenu(1);
        tileEntity.setInventorySlotContents(1, new ItemStack(Items.bucket));
        }
           }
        

        EDIT : Celui la fonctionnera mieux ^^

        public void detectAndSendChanges()
          {
        if(tileEntity.getStackInSlot(1).getItem() != null && tileEntity.getStackInSlot(1).getItem() == Items.water_bucket){
        tileEntity.setContenu(1);
        tileEntity.setInventorySlotContents(1, new ItemStack(Items.bucket));
        }
          }
        

        >! Bonjour/Bonsoir,
        >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

        1 réponse Dernière réponse Répondre Citer 0
        • jglrxavpokJ Hors-ligne
          jglrxavpok Modérateurs
          dernière édition par

          Unknown, faudrait juste inverser les conditions de ton if pour que ce soit bon 😉

          Sent from my GT-I9000 using Tapatalk 2

          Modérateur sur MFF. 
          Mon Github: http://github.com/jglrxavpok
          Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

            Effectivement…

            Dans le bon sens c’est mieux -_-  Ca semble plus logique aussi x)

            >! Bonjour/Bonsoir,
            >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

              Je comprends pas pourquoi il faut Check si il n’est pas null on peut m’expliquer ?

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

                Non, le null check n’ai pas bon. Ça ne devrait pas être :

                tileEntity.getStackInSlot(1).getItem() != null
                

                mais :

                tileEntity.getStackInSlot(1) != null
                

                Et il faut faire un null check pour la semble et bonne raison que si il n’y a pas d’item dans un slot, le contenu est null. Or si tu appelle une fonction depuis un objet null ->  NPE

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

                MINECRAFT FORGE FRANCE © 2024

                Powered by NodeBB