123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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);
- }
- }
- }
|