/** * 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.statements; import java.util.Collection; import java.util.LinkedList; import java.util.List; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftRobotics; import buildcraft.api.robots.DockingStation; import buildcraft.api.statements.IActionExternal; import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IActionProvider; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.IPipeTile.PipeType; import buildcraft.robotics.RobotUtils; public class RobotsActionProvider implements IActionProvider { @Override public Collection<IActionInternal> getInternalActions(IStatementContainer container) { LinkedList<IActionInternal> result = new LinkedList<IActionInternal>(); TileEntity tile = container.getTile(); if (!(tile instanceof IPipeTile)) { return result; } IPipeTile pipeTile = (IPipeTile) tile; List<DockingStation> stations = RobotUtils.getStations(pipeTile); if (stations.size() == 0) { return result; } result.add(BuildCraftRobotics.actionRobotGotoStation); result.add(BuildCraftRobotics.actionRobotWorkInArea); result.add(BuildCraftRobotics.actionRobotLoadUnloadArea); result.add(BuildCraftRobotics.actionRobotWakeUp); result.add(BuildCraftRobotics.actionRobotFilter); result.add(BuildCraftRobotics.actionRobotFilterTool); result.add(BuildCraftRobotics.actionStationForbidRobot); result.add(BuildCraftRobotics.actionStationForceRobot); if (pipeTile.getPipeType() == PipeType.ITEM) { result.add(BuildCraftRobotics.actionStationRequestItems); result.add(BuildCraftRobotics.actionStationAcceptItems); } if (pipeTile.getPipeType() == PipeType.FLUID) { result.add(BuildCraftRobotics.actionStationAcceptFluids); } for (DockingStation station : stations) { if (station.getItemInput() != null) { result.add(BuildCraftRobotics.actionStationProvideItems); } if (station.getFluidInput() != null) { result.add(BuildCraftRobotics.actionStationProvideFluids); } if (station.getRequestProvider() != null) { result.add(BuildCraftRobotics.actionStationMachineRequestItems); } } return result; } @Override public Collection<IActionExternal> getExternalActions(ForgeDirection side, TileEntity tile) { return null; } }