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

    Non résolu Probleme hammer 1.12.2

    Sans suite
    1.12.2
    2
    6
    238
    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.
    • P
      Prutix dernière édition par robin4002

      Bonjour a tous je viens de creer un hammer pour mon mod minecraft mais le probleme c’est que… Il casse la bedrock. Je ne sais pas comment régler ce probleme c’est pourquoi je fais appelle à vous.
      Code :

      package fr.exatium.examod.exaitems;
      
      import fr.exatium.examod.ExaMod;
      import fr.exatium.examod.exainit.ExaItemsMods;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemStack;
      import net.minecraft.item.Item.ToolMaterial;
      import net.minecraft.item.ItemPickaxe;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.util.math.RayTraceResult;
      import net.minecraft.util.math.Vec3d;
      import net.minecraft.world.World;
      
      public class ExateHammer extends ItemPickaxe
      {
      	public ExateHammer(String name, ToolMaterial material) {
      		super(material);
      		setUnlocalizedName(name);
      		setRegistryName(name);
      		setCreativeTab(ExaMod.tabTools);
      		
      	}
      	public boolean getIsRepairable(ItemStack stack, ItemStack repairItem)
      		{
      			if(stack.getItem().equals(this) && repairItem.getItem() == ExaItemsMods.exate_ingot)
      				return true;
      			return false;
      		}
      	public RayTraceResult rayTrace(double blockReachDistance, float partialTicks, World w, EntityLivingBase e)
          {
              Vec3d vec3d = e.getPositionEyes(partialTicks);
              Vec3d vec3d1 = e.getLook(partialTicks);
              Vec3d vec3d2 = vec3d.addVector(vec3d1.x * blockReachDistance, vec3d1.y * blockReachDistance, vec3d1.z * blockReachDistance);
              return w.rayTraceBlocks(vec3d, vec3d2, false, false, true);
          }
          
          public boolean onBlockDestroyed(ItemStack breaker, World w, IBlockState state, BlockPos pos, EntityLivingBase e)
          {
              if (e instanceof EntityPlayer && !w.isRemote)
              {
                  EntityPlayer p = (EntityPlayer) e;
                  RayTraceResult r = this.rayTrace(5.0D, 0.0F, w, e);
                  if (r.typeOfHit == RayTraceResult.Type.BLOCK)
                  {
                      int x = pos.getX();
                      int y = pos.getY();
                      int z = pos.getZ();
                      EnumFacing side = r.sideHit;
                      
                      if (side == EnumFacing.DOWN || side == EnumFacing.UP)
                      {
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y, z - 1);
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y, z);
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y, z + 1);
                          this.destroyAndDropBlock(w, p, breaker, x, y, z - 1);
                          
                          this.destroyAndDropBlock(w, p, breaker, x, y, z + 1);
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y, z - 1);
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y, z);
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y, z + 1);
                      }
                      
                      else if (side == EnumFacing.NORTH || side == EnumFacing.SOUTH)
                      {
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y + 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x, y + 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y + 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y, z);
                          
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y, z);
                          this.destroyAndDropBlock(w, p, breaker, x + 1, y - 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x, y - 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x - 1, y - 1, z);
                      }
                      
                      else if (side == EnumFacing.EAST || side == EnumFacing.WEST)
                      {
                          this.destroyAndDropBlock(w, p, breaker, x, y + 1, z + 1);
                          this.destroyAndDropBlock(w, p, breaker, x, y + 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x, y + 1, z - 1);
                          this.destroyAndDropBlock(w, p, breaker, x, y, z + 1);
                          
                          this.destroyAndDropBlock(w, p, breaker, x, y, z - 1);
                          this.destroyAndDropBlock(w, p, breaker, x, y - 1, z + 1);
                          this.destroyAndDropBlock(w, p, breaker, x, y - 1, z);
                          this.destroyAndDropBlock(w, p, breaker, x, y - 1, z - 1);
                      }
                      return true;
                  }
              }
              return super.onBlockDestroyed(breaker, w, state, pos, e);
          }
          private void destroyAndDropBlock(World w, EntityPlayer p, ItemStack breaker, int x, int y, int z)
          {
              BlockPos pos = new BlockPos(x, y, z);
              w.getBlockState(pos).getBlock().harvestBlock(w, p, pos, w.getBlockState(pos), w.getTileEntity(pos), breaker);
              w.setBlockToAir(pos);
          }
      
      }
      
      

      Merci D’avance.

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Bonjour,

        J’ai déplacé dans la section support pour les moddeurs, qui est la section appropriée pour le modding. Merci de faire plus attention la prochaine fois.

        Dans ta fonction destroyAndDropBlock il faut que tu vérifies que l’hardness du bloc est supérieur ou égal à 0 (les blocs indestructibles ont une valeur négative).

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

          En fait même si je vérifie je sais pas comment faire pour qu’il regarde les blocks que je vais casser autour parce que en fait je peux pas casser la bedrock a proprement parler en fait si je casse de la stone et que a coté il y a de la bedrock ca la casse aussi

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002

            Non mais c’est pas compliqué …

                private void destroyAndDropBlock(World w, EntityPlayer p, ItemStack breaker, int x, int y, int z)
                {
                    BlockPos pos = new BlockPos(x, y, z);
                    if (w.getBlockState(pos).getBlockHardness(w, pos) >= 0)
                    {
                        w.getBlockState(pos).getBlock().harvestBlock(w, p, pos, w.getBlockState(pos), w.getTileEntity(pos), breaker);
                        w.setBlockToAir(pos);
                    }
                }
            
            1 réponse Dernière réponse Répondre Citer 0
            • P
              Prutix dernière édition par Prutix

              Le hammer ne marche plus je ne sais pas a quoi c’est du

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                Ajoutes des points d’arrêt et debug ton code.

                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