MFF

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

    Bloc repaire

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    6 Messages 3 Publieurs 1.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.
    • darkvince37D Hors-ligne
      darkvince37
      dernière édition par

      Bonjour,

      Je suis entreint de faire un block que quand on marche dessus il repaire notre armure et nos item

      package fr.darkvince.ultrav2;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      
      public class Repaire extends Block{
      
      protected Repaire(Material p_i45394_1_) {
      super(p_i45394_1_);
      // TODO Auto-generated constructor stub
      }
      public void onEntityWalking(World world, int x, int y, int z, Entity entity)
          {
      ItemStack stack = null;
      
        if ((entity instanceof EntityPlayer))
         {
           EntityPlayer player = (EntityPlayer)entity;
           for (int i = 0; i < 4; i++)
           {
             ItemStack armor = player.getCurrentArmor(i);
             if (armor != null) {
               if ((armor.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
               {
                 stack.setItemDamage(stack.getItemDamage() + 1);
                 armor.setItemDamage(armor.getItemDamage() - 1);
               }
             }
           }
           for (int i = 0; i < 9; i++)
           {
             ItemStack targetStack = player.inventory.getStackInSlot(i);
             if ((targetStack != null) && (targetStack.getItem().isRepairable()) && 
               (targetStack != null) && (targetStack.getItem() != Main.hoeLinarite)) {
               if ((targetStack.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
               {
                 stack.setItemDamage(stack.getItemDamage() + 1);
                 targetStack.setItemDamage(targetStack.getItemDamage() - 1);
               }
             }
           }
         }
       }
      
      }
      
      

      Je pense que sa vien du null mais je c’est pas part quoi le remplacer

      –-- Minecraft Crash Report ----
      // Quite honestly, I wouldn’t worry myself about that.

      Time: 30/11/16 16:06
      Description: Ticking entity

      java.lang.NullPointerException: Ticking entity
      at fr.darkvince.ultrav2.Repaire.onEntityWalking(Repaire.java:39)
      at net.minecraft.entity.Entity.moveEntity(Entity.java:889)
      at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1680)
      at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1862)
      at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2023)
      at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:612)
      at net.minecraft.client.entity.EntityPlayerSP.onLivingUpdate(EntityPlayerSP.java:299)
      at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816)
      at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:327)
      at net.minecraft.client.entity.EntityClientPlayerMP.onUpdate(EntityClientPlayerMP.java:96)
      at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2298)
      at net.minecraft.world.World.updateEntity(World.java:2258)
      at net.minecraft.world.World.updateEntities(World.java:2108)
      at net.minecraft.client.Minecraft.runTick(Minecraft.java:2097)
      at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
      at net.minecraft.client.Minecraft.run(Minecraft.java:962)
      at net.minecraft.client.main.Main.main(Main.java:164)
      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:135)
      at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
      at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
      at GradleStart.main(Unknown Source)

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

        Ridicule je trouve…
        Faudra quand même un jour apprendre à résoudre tout seul des NPE _
        Surtout là ! Plus visible tu peux pas !

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

          @‘Plaigon’:

          Ridicule je trouve…
          Faudra quand même un jour apprendre à résoudre tout seul des NPE _
          Surtout là ! Plus visible tu peux pas !

          Je c’est que sa vient de cette ligne je pense que c’est a cause stack que j’ai mis en null

           if ((targetStack.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
          
          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

            Je vais créer une nouvelle règle : interdiction de demande de l’aide pour un NPE …

            EDIT : oui c’est bien ça, tu as créé un objet qui a pour valeur null, puis tu as appelé une fonction de cette objet. Forcement ça ne fonctionne pas.

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

              Du coup j’ai changer un peu mon code ma sa fonctionne toujours pas

              public void onEntityWalking(World world, int x, int y, int z, Entity entity)
                  {
              
                if ((entity instanceof EntityPlayer))
                 {
                   EntityPlayer player = (EntityPlayer)entity;
              ItemStack stack = player.getItemInUse();
                   for (int i = 0; i < 4; i++)
                   {
                     ItemStack armor = player.getCurrentArmor(i);
                     if (armor != null) {
                       if ((armor.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
                       {
                         stack.setItemDamage(stack.getItemDamage() + 1);
                         armor.setItemDamage(armor.getItemDamage() - 1);
                       }
                     }
                   }
                   for (int i = 0; i < 9; i++)
                   {
                     ItemStack targetStack = player.inventory.getStackInSlot(i);
                     if ((targetStack != null) && (targetStack.getItem().isRepairable()) && 
                       (targetStack != null) && (targetStack.getItem() != Main.hoeLinarite)) {
                       if ((targetStack.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
                       {
                         stack.setItemDamage(stack.getItemDamage() + 1);
                         targetStack.setItemDamage(targetStack.getItemDamage() - 1);
                       }
                     }
                   }
                 }
               }
              

              Si vous pouvais juste m’expliqué l’erreur pour que je puisse comprendre

              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

                Tout ce qui est en rapport avec stack, c’est pour faire un item qui répare les autres.
                Toi tu veux juste le bloc et non cette item, donc retires cette ligne :
                ItemStack stack = player.getItemInUse();

                Et toutes les conditions qui en dépendent :
                if ((armor.getItemDamage() > 0) && (stack.getItemDamage() < stack.getMaxDamage()))
                devient :
                if (armor.getItemDamage() > 0)

                stack.setItemDamage(stack.getItemDamage() + 1); -> à retirer.
                etc …

                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