Merge pull request #2558 from Kubuxu/robots-fix1

Potential fix for block breaking robots hanging up on air blocks.
This commit is contained in:
Adrian Siekierka 2015-03-15 10:12:35 +01:00
commit 591b7e9908

View file

@ -56,33 +56,38 @@ public class AIRobotBreak extends AIRobot {
@Override
public void update() {
if (block == null || block.isAir(robot.worldObj, blockToBreak.x, blockToBreak.y, blockToBreak.z)) {
terminate();
}
if (hardness != 0) {
blockDamage += speed / hardness / 30F;
blockDamage += speed / hardness / 30F;
} else {
// Instantly break the block
blockDamage = 1.1F;
// Instantly break the block
blockDamage = 1.1F;
}
if (blockDamage > 1.0F) {
robot.worldObj.destroyBlockInWorldPartially(robot.getEntityId(), blockToBreak.x,
blockToBreak.y, blockToBreak.z, -1);
blockToBreak.y, blockToBreak.z, -1);
blockDamage = 0;
if (robot.getHeldItem() != null) {
robot.getHeldItem().getItem()
.onBlockStartBreak(robot.getHeldItem(), blockToBreak.x, blockToBreak.y, blockToBreak.z,
CoreProxy.proxy.getBuildCraftPlayer((WorldServer) robot.worldObj).get());
.onBlockStartBreak(robot.getHeldItem(), blockToBreak.x, blockToBreak.y, blockToBreak.z,
CoreProxy.proxy.getBuildCraftPlayer((WorldServer) robot.worldObj).get());
}
if (BlockUtils.breakBlock((WorldServer) robot.worldObj, blockToBreak.x, blockToBreak.y, blockToBreak.z, 6000)) {
robot.worldObj.playAuxSFXAtEntity(null, 2001,
blockToBreak.x, blockToBreak.y, blockToBreak.z,
Block.getIdFromBlock(block) + (meta << 12));
blockToBreak.x, blockToBreak.y, blockToBreak.z,
Block.getIdFromBlock(block) + (meta << 12));
if (robot.getHeldItem() != null) {
robot.getHeldItem().getItem()
.onBlockDestroyed(robot.getHeldItem(), robot.worldObj, block, blockToBreak.x,
blockToBreak.y, blockToBreak.z, robot);
.onBlockDestroyed(robot.getHeldItem(), robot.worldObj, block, blockToBreak.x,
blockToBreak.y, blockToBreak.z, robot);
if (robot.getHeldItem().getItemDamage() >= robot.getHeldItem().getMaxDamage()) {
robot.setItemInUse(null);
@ -93,7 +98,7 @@ public class AIRobotBreak extends AIRobot {
terminate();
} else {
robot.worldObj.destroyBlockInWorldPartially(robot.getEntityId(), blockToBreak.x,
blockToBreak.y, blockToBreak.z, (int) (blockDamage * 10.0F) - 1);
blockToBreak.y, blockToBreak.z, (int) (blockDamage * 10.0F) - 1);
}
}