67 lines
1.4 KiB
Java
67 lines
1.4 KiB
Java
/**
|
|
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
|
* http://www.mod-buildcraft.com
|
|
* <p/>
|
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
|
* License 1.0, or MMPL. Please check the contents of the license located in
|
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
|
*/
|
|
package buildcraft.robotics.ai;
|
|
|
|
import buildcraft.api.robots.AIRobot;
|
|
import buildcraft.api.robots.EntityRobotBase;
|
|
|
|
public class AIRobotShutdown extends AIRobot {
|
|
private int skip;
|
|
private double motionX;
|
|
private double motionZ;
|
|
|
|
public AIRobotShutdown(EntityRobotBase iRobot) {
|
|
super(iRobot);
|
|
skip = 0;
|
|
motionX = robot.motionX;
|
|
motionZ = robot.motionZ;
|
|
}
|
|
|
|
@Override
|
|
public void start() {
|
|
robot.undock();
|
|
robot.motionX = motionX;
|
|
robot.motionY = -0.075f;
|
|
robot.motionZ = motionZ;
|
|
}
|
|
|
|
private boolean isBlocked(float yOffset) {
|
|
return robot.worldObj.getCollidingBoundingBoxes(robot,
|
|
robot.getBoundingBox().addCoord(robot.motionX, yOffset, robot.motionZ)).size() > 0;
|
|
}
|
|
|
|
@Override
|
|
public void update() {
|
|
if (skip == 0) {
|
|
if (!isBlocked(-0.075f)) {
|
|
robot.motionY = -0.075f;
|
|
} else {
|
|
while (isBlocked(0)) {
|
|
robot.posY += 0.075f;
|
|
}
|
|
robot.motionY = 0f;
|
|
if (robot.motionX != 0 || robot.motionZ != 0) {
|
|
robot.motionX = 0f;
|
|
robot.motionZ = 0f;
|
|
skip = 0;
|
|
} else {
|
|
skip = 20;
|
|
}
|
|
}
|
|
} else {
|
|
skip--;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getEnergyCost() {
|
|
return 0;
|
|
}
|
|
}
|