Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Bloc repaire

    Sans suite
    1.7.10
    3
    6
    921
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • darkvince37
      darkvince37 last edited by

      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 Reply Last reply Reply Quote 0
      • Deleted
        Deleted last edited by

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

        1 Reply Last reply Reply Quote 0
        • darkvince37
          darkvince37 last edited by

          @‘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 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

            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 Reply Last reply Reply Quote 0
            • darkvince37
              darkvince37 last edited by

              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 Reply Last reply Reply Quote 0
              • robin4002
                robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                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 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Design by Woryk
                Contact / Mentions Légales / Faire un don

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB