package mods.ocminecart.common.driver; import li.cil.oc.api.Driver; import li.cil.oc.api.Items; import li.cil.oc.api.driver.EnvironmentProvider; import li.cil.oc.api.driver.Item; import li.cil.oc.api.driver.item.HostAware; import li.cil.oc.api.network.EnvironmentHost; import li.cil.oc.api.network.ManagedEnvironment; import li.cil.oc.server.component.UpgradeInventoryController; import mods.ocminecart.common.minecart.ComputerCart; import mods.ocminecart.common.minecart.IComputerCart; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class DriverInventoryController implements Item, HostAware, EnvironmentProvider { @Override public boolean worksWith(ItemStack stack, Class<? extends EnvironmentHost> host) { if(IComputerCart.class.isAssignableFrom(host)) return this.worksWith(stack); return false; } @Override public boolean worksWith(ItemStack stack) { if(stack!= null && Items.get("inventoryControllerUpgrade").createItemStack(1).isItemEqual(stack)){ return true; } return false; } @Override public String slot(ItemStack stack) { return Driver.driverFor(stack).slot(stack); } @Override public int tier(ItemStack stack) { return Driver.driverFor(stack).tier(stack); } @Override public NBTTagCompound dataTag(ItemStack stack) { return CustomDriver.dataTag(stack); } @Override public Class<?> getEnvironment(ItemStack stack) { if(stack!= null && Items.get("inventoryControllerUpgrade").createItemStack(1).isItemEqual(stack)) return UpgradeInventoryController.Drone.class; return null; } @Override public ManagedEnvironment createEnvironment(ItemStack stack, EnvironmentHost host) { //I can use the Component for the Drone because it just require a Agent if(host instanceof ComputerCart) return new UpgradeInventoryController.Drone((ComputerCart)host); return null; } }