diff --git a/src/main/java/li/cil/oc/OpenComponents.java b/src/main/java/li/cil/oc/OpenComponents.java index 733aac8b6..d02e32947 100644 --- a/src/main/java/li/cil/oc/OpenComponents.java +++ b/src/main/java/li/cil/oc/OpenComponents.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.event.FMLInitializationEvent; import li.cil.oc.driver.Registry; import li.cil.oc.driver.buildcraft.HandlerBuildCraft; import li.cil.oc.driver.enderstorage.HandlerEnderStorage; +import li.cil.oc.driver.ic2.HandlerIndustrialCraft2; import li.cil.oc.driver.thermalexpansion.HandlerThermalExpansion; import li.cil.oc.driver.vanilla.HandlerVanilla; @@ -17,6 +18,7 @@ public class OpenComponents { public void init(final FMLInitializationEvent e) { Registry.add(new HandlerBuildCraft()); Registry.add(new HandlerEnderStorage()); + Registry.add(new HandlerIndustrialCraft2()); Registry.add(new HandlerThermalExpansion()); Registry.add(new HandlerVanilla()); } diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverEnergyConductor.java b/src/main/java/li/cil/oc/driver/ic2/DriverEnergyConductor.java new file mode 100644 index 000000000..6eaf56574 --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverEnergyConductor.java @@ -0,0 +1,48 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.energy.tile.IEnergyConductor; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverEnergyConductor extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IEnergyConductor.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IEnergyConductor) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IEnergyConductor tileEntity) { + super(tileEntity, "energy_conductor"); + } + + @Callback + public Object[] getConductionLoss(final Context context, final Arguments args) { + return new Object[]{tileEntity.getConductionLoss()}; + } + + @Callback + public Object[] getConductorBreakdownEnergy(final Context context, final Arguments args) { + return new Object[]{tileEntity.getConductorBreakdownEnergy()}; + } + + @Callback + public Object[] getInsulationBreakdownEnergy(final Context context, final Arguments args) { + return new Object[]{tileEntity.getInsulationBreakdownEnergy()}; + } + + @Callback + public Object[] getInsulationEnergyAbsorption(final Context context, final Arguments args) { + return new Object[]{tileEntity.getInsulationEnergyAbsorption()}; + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverEnergySink.java b/src/main/java/li/cil/oc/driver/ic2/DriverEnergySink.java new file mode 100644 index 000000000..a85eb69a6 --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverEnergySink.java @@ -0,0 +1,33 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.energy.tile.IEnergySink; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverEnergySink extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IEnergySink.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IEnergySink) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IEnergySink tileEntity) { + super(tileEntity, "energy_sink"); + } + + @Callback + public Object[] getMaxSafeInput(final Context context, final Arguments args) { + return new Object[]{tileEntity.getMaxSafeInput()}; + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverEnergySource.java b/src/main/java/li/cil/oc/driver/ic2/DriverEnergySource.java new file mode 100644 index 000000000..f860329f5 --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverEnergySource.java @@ -0,0 +1,33 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.energy.tile.IEnergySource; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverEnergySource extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IEnergySource.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IEnergySource) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IEnergySource tileEntity) { + super(tileEntity, "energy_source"); + } + + @Callback + public Object[] getOfferedEnergy(final Context context, final Arguments args) { + return new Object[]{tileEntity.getOfferedEnergy()}; + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverEnergyStorage.java b/src/main/java/li/cil/oc/driver/ic2/DriverEnergyStorage.java new file mode 100644 index 000000000..7d969991c --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverEnergyStorage.java @@ -0,0 +1,43 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.tile.IEnergyStorage; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverEnergyStorage extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IEnergyStorage.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IEnergyStorage) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IEnergyStorage tileEntity) { + super(tileEntity, "energy_storage"); + } + + @Callback + public Object[] getCapacity(final Context context, final Arguments args) { + return new Object[]{tileEntity.getCapacity()}; + } + + @Callback + public Object[] getOutput(final Context context, final Arguments args) { + return new Object[]{tileEntity.getOutput()}; + } + + @Callback + public Object[] getStored(final Context context, final Arguments args) { + return new Object[]{tileEntity.getStored()}; + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverReactor.java b/src/main/java/li/cil/oc/driver/ic2/DriverReactor.java new file mode 100644 index 000000000..d7724e27d --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverReactor.java @@ -0,0 +1,48 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.reactor.IReactor; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverReactor extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IReactor.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IReactor) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IReactor tileEntity) { + super(tileEntity, "reactor"); + } + + @Callback + public Object[] getHeat(final Context context, final Arguments args) { + return new Object[]{tileEntity.getHeat()}; + } + + @Callback + public Object[] getMaxHeat(final Context context, final Arguments args) { + return new Object[]{tileEntity.getMaxHeat()}; + } + + @Callback + public Object[] getReactorEnergyOutput(final Context context, final Arguments args) { + return new Object[]{tileEntity.getReactorEnergyOutput()}; + } + + @Callback + public Object[] producesEnergy(final Context context, final Arguments args) { + return new Object[]{tileEntity.produceEnergy()}; + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/DriverReactorChamber.java b/src/main/java/li/cil/oc/driver/ic2/DriverReactorChamber.java new file mode 100644 index 000000000..7bf0b54b6 --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/DriverReactorChamber.java @@ -0,0 +1,69 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.reactor.IReactor; +import ic2.api.reactor.IReactorChamber; +import li.cil.oc.api.network.Arguments; +import li.cil.oc.api.network.Callback; +import li.cil.oc.api.network.Context; +import li.cil.oc.api.network.ManagedEnvironment; +import li.cil.oc.driver.ManagedTileEntityEnvironment; +import li.cil.oc.driver.TileEntityDriver; +import net.minecraft.world.World; + +public final class DriverReactorChamber extends TileEntityDriver { + @Override + public Class getFilterClass() { + return IReactorChamber.class; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment((IReactorChamber) world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final IReactorChamber tileEntity) { + super(tileEntity, "reactor_chamber"); + } + + @Callback + public Object[] getHeat(final Context context, final Arguments args) { + final IReactor reactor = tileEntity.getReactor(); + if (reactor != null) { + return new Object[]{reactor.getHeat()}; + } else { + return new Object[]{0}; + } + } + + @Callback + public Object[] getMaxHeat(final Context context, final Arguments args) { + final IReactor reactor = tileEntity.getReactor(); + if (reactor != null) { + return new Object[]{tileEntity.getReactor().getMaxHeat()}; + } else { + return new Object[]{0}; + } + } + + @Callback + public Object[] getReactorEnergyOutput(final Context context, final Arguments args) { + final IReactor reactor = tileEntity.getReactor(); + if (reactor != null) { + return new Object[]{tileEntity.getReactor().getReactorEnergyOutput()}; + } else { + return new Object[]{0}; + } + } + + @Callback + public Object[] producesEnergy(final Context context, final Arguments args) { + final IReactor reactor = tileEntity.getReactor(); + if (reactor != null) { + return new Object[]{tileEntity.getReactor().produceEnergy()}; + } else { + return new Object[]{false}; + } + } + } +} diff --git a/src/main/java/li/cil/oc/driver/ic2/HandlerIndustrialCraft2.java b/src/main/java/li/cil/oc/driver/ic2/HandlerIndustrialCraft2.java new file mode 100644 index 000000000..e1c70cbb3 --- /dev/null +++ b/src/main/java/li/cil/oc/driver/ic2/HandlerIndustrialCraft2.java @@ -0,0 +1,40 @@ +package li.cil.oc.driver.ic2; + +import ic2.api.item.ElectricItem; +import ic2.api.item.IElectricItem; +import li.cil.oc.api.Driver; +import li.cil.oc.driver.IModHandler; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import java.util.Map; + +public class HandlerIndustrialCraft2 implements IModHandler { + @Override + public String getModId() { + return "IC2"; + } + + @Override + public void initialize() { + Driver.add(new DriverReactor()); + Driver.add(new DriverReactorChamber()); + Driver.add(new DriverEnergyConductor()); + Driver.add(new DriverEnergySink()); + Driver.add(new DriverEnergySource()); + Driver.add(new DriverEnergyStorage()); + } + + @Override + public void populate(Map map, ItemStack stack) { + final Item item = stack.getItem(); + if (item instanceof IElectricItem) { + final IElectricItem electricItem = (IElectricItem) item; + map.put("canProvideEnergy", electricItem.canProvideEnergy(stack)); + map.put("charge", ElectricItem.manager.getCharge(stack)); + map.put("maxCharge", electricItem.getMaxCharge(stack)); + map.put("tier", electricItem.getTier(stack)); + map.put("transferLimit", electricItem.getTransferLimit(stack)); + } + } +} diff --git a/src/main/java/li/cil/oc/driver/thermalexpansion/HandlerThermalExpansion.java b/src/main/java/li/cil/oc/driver/thermalexpansion/HandlerThermalExpansion.java index 7ab350d7c..cb435cbad 100644 --- a/src/main/java/li/cil/oc/driver/thermalexpansion/HandlerThermalExpansion.java +++ b/src/main/java/li/cil/oc/driver/thermalexpansion/HandlerThermalExpansion.java @@ -18,7 +18,7 @@ public final class HandlerThermalExpansion implements IModHandler { public void initialize() { Driver.add(new DriverEnderAttuned()); Driver.add(new DriverEnergyHandler()); - Driver.add(new DriverEnergyInfo()); ; + Driver.add(new DriverEnergyInfo()); Driver.add(new DriverRedstoneControl()); Driver.add(new DriverSecureTile()); } diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 7a95c3672..3556850f4 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,23 +3,18 @@ "modlist": [{ "modid": "OpenComputers|Components", "name": "OpenComponents", - "description": "This mod is an addon of OpenComputers that adds a bunch of drivers.", + "description": "This mod is an addon for OpenComputers that adds a bunch of drivers.", "version": "1.0.0", "mcversion": "1.6.4", - "url": "https://github.com/MightyPirates/OpenComputers/wiki", + "url": "https://github.com/MightyPirates/OpenComponents", "authors": ["Florian 'Sangar' Nücke", "Johannes 'Lord Joda' Lohrer"], - "credits" : "Inspired by OpenPeripherals.", + "credits" : "OpenPeripherals", "requiredMods": [ "Forge@[9.11.1.940,)", "OpenComputers@[1.2.0,)" ], "dependencies": [ - "BuildCraft|Energy", - "ComputerCraft", + "BuildCraft|Core", + "EnderStorage", "IC2", - "MineFactoryReloaded", - "ProjRed|Transmission", - "RedLogic", - "StargateTech2", - "ThermalExpansion", - "UniversalElectricity" + "ThermalExpansion" ], "useDependencyInformation": "true" }]