PathfinderGoalDestroyBlock.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package me.km.pathfinder;
  2. import java.util.Random;
  3. import net.minecraft.entity.EntityLiving;
  4. import net.minecraft.entity.ai.EntityAIBase;
  5. import net.minecraft.util.math.MathHelper;
  6. import net.minecraft.world.World;
  7. import net.minecraft.util.math.BlockPos;
  8. import net.minecraft.util.math.RayTraceResult;
  9. import net.minecraft.util.math.Vec3d;
  10. public class PathfinderGoalDestroyBlock extends EntityAIBase
  11. {
  12. private final EntityLiving entity;
  13. public PathfinderGoalDestroyBlock(EntityLiving liv)
  14. {
  15. this.entity = liv;
  16. }
  17. @Override
  18. public boolean shouldExecute()
  19. {
  20. if(!entity.world.getGameRules().getBoolean("mobGriefing"))
  21. {
  22. return false;
  23. }
  24. return entity.getRNG().nextInt(3) == 0;
  25. }
  26. @Override
  27. public void updateTask()
  28. {
  29. Random random = entity.getRNG();
  30. World world = entity.world;
  31. int x = MathHelper.floor(entity.posX - 2.0D + random.nextDouble() * 4.0D);
  32. int y = MathHelper.floor(entity.posY + random.nextDouble() * 3.0D);
  33. int z = MathHelper.floor(entity.posZ - 2.0D + random.nextDouble() * 4.0D);
  34. BlockPos blockpos = new BlockPos(x, y, z);
  35. RayTraceResult ray = world.rayTraceBlocks(
  36. new Vec3d(MathHelper.floor(entity.posX) + 0.5f, y + 0.5f, MathHelper.floor(entity.posZ) + 0.5F),
  37. new Vec3d(x + 0.5f, y + 0.5F, z + 0.5F), false, true, false);
  38. if(ray != null && ray.getBlockPos().equals(blockpos))
  39. {
  40. world.setBlockToAir(blockpos);
  41. }
  42. }
  43. }