use of buildcraft.robotics.ai.AIRobotGotoStation in project LogisticsPipes by RS485.
the class LogisticsRoutingBoardRobot method insertIntoPipe.
private void insertIntoPipe() {
TileEntity tile = targetStationPos.getTileEntity(robot.worldObj);
if (tile instanceof LogisticsTileGenericPipe) {
startDelegateAI(new ItemInsertionAIRobot(robot, (LogisticsTileGenericPipe) tile, this, targetStationSide.getOpposite()));
} else {
dropAndClear();
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
targetStationPos = null;
}
}
use of buildcraft.robotics.ai.AIRobotGotoStation in project LogisticsPipes by RS485.
the class LogisticsRoutingBoardRobot method lpUpdate.
public void lpUpdate() {
index();
if (robot.containsItems()) {
ticksWithContent++;
if (ticksWithContent > 20 * 2) {
startTransport();
ticksWithContent = 0;
}
} else {
ticksWithContent = 0;
acceptsItems = true;
if (currentTarget != null) {
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
currentTarget = null;
refreshRoutingTable();
} else if (robot.getDockingStation() == null) {
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
}
}
IEnergyStorage bat = robot.getBattery();
int need = bat.getMaxEnergyStored() - bat.getEnergyStored();
if (need <= 1000) {
return;
}
need = bat.receiveEnergy(need, true);
TileEntity tile = getLinkedStationPosition().getTileEntity(robot.worldObj);
if (tile instanceof LogisticsTileGenericPipe && ((LogisticsTileGenericPipe) tile).isRoutingPipe()) {
CoreRoutedPipe pipe = ((LogisticsTileGenericPipe) tile).getRoutingPipe();
boolean energyUsed = false;
int count = 0;
while (!energyUsed) {
if (pipe.useEnergy((int) (need * 1.5D * LogisticsPowerJunctionTileEntity.RFDivisor))) {
energyUsed = true;
}
if (count++ > 5) {
break;
}
}
if (energyUsed) {
bat.receiveEnergy(need, false);
}
}
}
use of buildcraft.robotics.ai.AIRobotGotoStation in project LogisticsPipes by RS485.
the class LogisticsRoutingBoardRobot method delegateAIEnded.
@Override
public void delegateAIEnded(AIRobot ai) {
super.delegateAIEnded(ai);
if (ai instanceof AIRobotGotoBlock) {
if (!ai.success()) {
dropAndClear();
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
} else {
startDelegateAI(new AIRobotStraightMoveTo(robot, (float) targetStationPos.getXCoord() + 0.5F + targetStationSide.offsetX * 0.5F, (float) targetStationPos.getYCoord() + 0.5F + targetStationSide.offsetY * 0.5F, (float) targetStationPos.getZCoord() + 0.5F + targetStationSide.offsetZ * 0.5F));
}
} else if (ai instanceof AIRobotStraightMoveTo) {
if (!ai.success()) {
dropAndClear();
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
} else {
insertIntoPipe();
}
} else if (ai instanceof ItemInsertionAIRobot) {
for (int i = 0; i < robot.getSizeInventory(); i++) {
robot.setInventorySlotContents(i, null);
}
if (!ai.success()) {
dropAndClear();
} else {
items.clear();
}
startDelegateAI(new AIRobotGotoStation(robot, robot.getLinkedStation()));
targetStationPos = null;
}
}
Aggregations