Résolu Hammer qui mine du 3x3x1
-
Bonjour,
J’ai trouver ce code mais il mine en 3x3x3 or je voudrais le faire miner en 3x3x1 voici le code
package fr.circus.celestart.Tool; import java.util.List; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult.Type; import net.minecraft.world.World; public class StarModHammer extends ItemPickaxe { public StarModHammer(ToolMaterial material) { super(material); } public boolean onBlockDestroyed(ItemStack stack, World world, IBlockState block,BlockPos pos, int x, int y, int z, EntityLivingBase living) { if(living instanceof EntityPlayer) { for(int x1 = -2; x1 < 3; x1++) { for(int y1 = -2; y1 < 3; y1++) { for(int z1 = -2; z1 < 3; z1++) { BlockPos pos1 = new BlockPos(x + x1, y + y1, z + z1); if(world.getBlockState(pos1).getBlock().getBlockHardness(block ,world, pos1) >= 0) { world.getBlockState(pos1).getBlock().harvestBlock(world, (EntityPlayer)living, pos, world.getBlockState(pos1), TileEntity.create(world, getNBTShareTag(stack) ), stack ); world.setBlockToAir(pos1); } } } } } return super.onBlockDestroyed(stack, world, block,pos, living); } }
Je ne comprend pas comment faire le Système de direction en 1.12.2
Si quelqu’un peut m’aider je lui en serais très reconnaissant
Amicalement,
Circus -
Si le sujet est résolu, il serait sympa d’indiquer la solution.
-
Voici la solution
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); } @Override 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; // Y // UP - DOWN 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); // Middle block 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); } // Z // NORTH - SOUTH 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); // Middle block 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); } // X // EAST - WEST 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); // Middle block 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); }