package li.cil.oc.api.internal; import li.cil.oc.api.machine.MachineHost; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import java.util.UUID; /** * General marker interface for autonomous agents such as robots and drones. */ public interface Agent extends MachineHost, Rotatable { /** * The equipment inventory of this agent. * <p/> * For example, for the robot this is the tool slot as well as slots * provided by containers installed in the robot, if any. * <p/> * If an agent has no equipment slots this will be a zero-sized inventory. */ IInventory equipmentInventory(); /** * The main inventory of this agent, which it (usually) also can * interact with on its own. * <p/> * If an agent has no inventory slots this will be a zero-sized inventory. */ IInventory mainInventory(); /** * Provides access to the tanks of the agent. * <p/> * If an agent has no tanks this will be a zero-sized multi-tank. */ MultiTank tank(); /** * Gets the index of the currently selected slot in the agent's inventory. */ int selectedSlot(); /** * Set the index of the currently selected slot. */ void setSelectedSlot(int index); /** * Get the index of the currently selected tank. */ int selectedTank(); /** * Set the index of the currently selected tank. */ void setSelectedTank(int index); /** * Returns the fake player used to represent the agent as an entity for * certain actions that require one. * <p/> * This will automatically be positioned and rotated to represent the * agent's current position and rotation in the world. Use this to trigger * events involving the agent that require a player entity. * <p/> * Note that this <em>may</em> be the common OpenComputers fake player. * * @return the fake player for the agent. */ EntityPlayer player(); /** * Get the name of this agent. */ String name(); /** * Set the name of the agent. */ void setName(String name); /** * The name of the player owning this agent, e.g. the player that placed it. */ String ownerName(); /** * The UUID of the player owning this agent, e.g. the player that placed it. */ UUID ownerUUID(); }