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

    Résolu MINECRAFT 1.7.10 - Hammer casse la bedrock

    1.7.x
    1.7.10
    3
    7
    988
    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.
    • S
      Sushi_Pvp dernière édition par Sushi_Pvp

      Hello tous le monde !
      J’ai un petit problème avec mon hammer. Tout fonctionne très bien sauf que je peux arriver a casser de la bedrock.
      En gros je prends de la bedrock, je fais un cube de 3*3 et je place n’importe quel bloc au milieu et pouff la bedrock se casse grace au bloc que j’ai placé au milieu…

      Si quelqu’un pourrait m’aider, ce sertait hyper cool de sa part 🙂 !

      package com.mod.aktezia.items;
      
      import java.util.List;
      import java.util.Set;
      
      import com.google.common.collect.ImmutableSet;
      import com.google.common.collect.Sets;
      
      import net.minecraft.block.Block;
      import net.minecraft.enchantment.EnchantmentHelper;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.init.Blocks;
      import net.minecraft.item.ItemPickaxe;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.MathHelper;
      import net.minecraft.util.Vec3;
      import net.minecraft.world.World;
      import net.minecraftforge.common.ForgeHooks;
      import net.minecraftforge.common.MinecraftForge;
      import net.minecraftforge.event.world.BlockEvent.BreakEvent;
      
      public class ItemHammer extends ItemPickaxe
      {
          
          public ItemHammer(ToolMaterial p_i45347_1_)
          {
              super(p_i45347_1_);
              // TODO Auto-generated constructor stub
          }
      
      
          public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
              if(entity instanceof EntityPlayer) {
      
              EntityPlayer player = (EntityPlayer)entity;
              stack.damageItem(1, entity);
      
              Vec3 lookVec = player.getLookVec();
              double xLook = Math.abs(lookVec.xCoord);
              double yLook = Math.abs(lookVec.yCoord);
              double zLook = Math.abs(lookVec.zCoord);
              
      
      
              double max = Math.max(xLook, Math.max(yLook, zLook));
      
      
      
              int addX = 1;
              int addY = 1;
              int addZ = 1;
      
              if(max == xLook) {
              y -= 1;
              z -= 1;
              addX = 3;
              } else if(max == yLook) {
              x -= 1;
              z -= 1;
              addY = 3;
              } else if(max == zLook) {
              x -= 1;
              y -= 1;
              addZ = 3;
              }
      
              for(int xOffset = 0; xOffset < 3; xOffset += addX) {
              for(int yOffset = 0; yOffset < 3; yOffset += addY) {
              for(int zOffset = 0; zOffset < 3; zOffset += addZ) {
      
              Block currentBlock = world.getBlock(x + xOffset, y + yOffset, z + zOffset);
              int blockMetadata = world.getBlockMetadata(x + xOffset, y + yOffset, z + zOffset);
      
              BreakEvent event = new BreakEvent(x + xOffset, y + yOffset, x + zOffset, world, currentBlock, blockMetadata, (EntityPlayer)player);
              event.setCanceled(!player.capabilities.isCreativeMode);
      
              if(currentBlock.getBlockHardness(world, x + xOffset, y + yOffset, z + zOffset) <= 4.0F) {
              event.setCanceled(false);
              }
      
              MinecraftForge.EVENT_BUS.post(event);
      
              if(!event.isCanceled()) {
              currentBlock.harvestBlock(world, (EntityPlayer)player, x + xOffset, y + yOffset, z + zOffset, blockMetadata);
              world.setBlockToAir(x + xOffset, y + yOffset, z + zOffset);
      
              boolean hasSilk = EnchantmentHelper.getSilkTouchModifier(player);
              boolean canSilk = currentBlock.canSilkHarvest(world, (EntityPlayer)player, x + xOffset, y + yOffset, z + zOffset, blockMetadata);
              if(ForgeHooks.canHarvestBlock(currentBlock, (EntityPlayer)player, blockMetadata) && (!hasSilk || hasSilk && !canSilk)) {
      
              int exp = currentBlock.getExpDrop(world, blockMetadata, EnchantmentHelper.getFortuneModifier(player));
              currentBlock.dropXpOnBlockBreak(world, x + xOffset, y + yOffset, z + zOffset, exp);
              }
              }
              }
              }
              }
              return true;
              }
              return false;
              }
          
          public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par2List, boolean par4)
          {
          par2List.add("\u00A73" + "> Ce marteau permet:");
      
          par2List.add("\u00A7e" + "> De miner en 3*3*1");
          
          par2List.add("\u00A7e" + "> Utile pour le minage");
          }
         
      
          
      
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • SpyMan
        SpyMan dernière édition par SpyMan

        yop, ce code est immonde, ya bcp trop de chose inutile dedans, pour ton probleme de bedrock verifie juste si l’outil peut casser se block ya un fonction pour : entityplayer#canHarvestBlock

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

          le truc, c’est qu’il ne peut pas casser la bedrock mais il peut grâce au block au milieu qui lieu peut être casser.

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

            Compléter la condition suivante :

            if(currentBlock.getBlockHardness(world, x + xOffset, y + yOffset, z + zOffset) <= 4.0F) {
                    event.setCanceled(false);
            }
            

            Comme ceci :

            if(currentBlock.getBlockHardness(world, x + xOffset, y + yOffset, z + zOffset) <= 4.0F && currentBlock.getBlockHardness(world, x + xOffset, y + yOffset, z + zOffset)  >= 0F) {
                    event.setCanceled(false);
            }
            

            réglera le problème.

            Actuellement tu autorise à casse le bloc s’il est en créatif ou si la résistance du bloc est inférieur à 4. Problème, les blocs incassable ont une résistance de -1, il faut donc les exclure en ajoutant une condition vérifiant que la résistance est >= 0.

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

              Oulala, vous êtes mes sauveurs, merci beaucoup !

              Vous pouvez passer ce sujet en résolu en espérant que cela puisse aider d’autres gens

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

                le passer en resolu c’est a toi de le faire x)

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

                  Voir https://www.minecraftforgefrance.fr/topic/5/règles-à-lire-avant-de-poster#apres-resolution pour comment faire.

                  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