package me.km.pathfinder; import java.util.Random; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec3d; public class PathfinderGoalDestroyBlock extends EntityAIBase { private final EntityLiving entity; public PathfinderGoalDestroyBlock(EntityLiving liv) { this.entity = liv; } @Override public boolean shouldExecute() { if(!entity.world.getGameRules().getBoolean("mobGriefing")) { return false; } return entity.getRNG().nextInt(3) == 0; } @Override public void updateTask() { Random random = entity.getRNG(); World world = entity.world; int x = MathHelper.floor(entity.posX - 2.0D + random.nextDouble() * 4.0D); int y = MathHelper.floor(entity.posY + random.nextDouble() * 3.0D); int z = MathHelper.floor(entity.posZ - 2.0D + random.nextDouble() * 4.0D); BlockPos blockpos = new BlockPos(x, y, z); RayTraceResult ray = world.rayTraceBlocks( new Vec3d(MathHelper.floor(entity.posX) + 0.5f, y + 0.5f, MathHelper.floor(entity.posZ) + 0.5F), new Vec3d(x + 0.5f, y + 0.5F, z + 0.5F), false, true, false); if(ray != null && ray.getBlockPos().equals(blockpos)) { world.setBlockToAir(blockpos); } } }