From 704bb64ce1c7a0a1e1852f7755caa9e82ec49868 Mon Sep 17 00:00:00 2001 From: Johannes Lohrer Date: Sat, 8 Feb 2014 19:48:36 +0100 Subject: [PATCH] added MassFab and Lamp --- .../li/cil/occ/mods/ic2/DriverMassFab.java | 40 ++++++++++++++++++ .../cil/occ/mods/ic2/ModIndustrialCraft2.java | 1 + .../occ/mods/thermalexpansion/DriverLamp.java | 42 +++++++++++++++++++ .../thermalexpansion/ModThermalExpansion.java | 1 + 4 files changed, 84 insertions(+) create mode 100644 src/main/java/li/cil/occ/mods/ic2/DriverMassFab.java create mode 100644 src/main/java/li/cil/occ/mods/thermalexpansion/DriverLamp.java diff --git a/src/main/java/li/cil/occ/mods/ic2/DriverMassFab.java b/src/main/java/li/cil/occ/mods/ic2/DriverMassFab.java new file mode 100644 index 000000000..669001935 --- /dev/null +++ b/src/main/java/li/cil/occ/mods/ic2/DriverMassFab.java @@ -0,0 +1,40 @@ +package li.cil.occ.mods.ic2; + + +import cpw.mods.fml.relauncher.ReflectionHelper; +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.prefab.DriverTileEntity; +import li.cil.oc.api.prefab.ManagedEnvironment; +import li.cil.occ.mods.ManagedTileEntityEnvironment; +import li.cil.occ.util.Reflection; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class DriverMassFab extends DriverTileEntity { + private static final Class TileController = Reflection.getClass("ic2.core.block.machine.tileentity.TileEntityMatter"); + + @Override + public Class getTileEntityClass() { + return TileController; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment(world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final TileEntity tileEntity) { + super(tileEntity, "mass_fab"); + } + + @Callback + public Object[] getProgress(final Context context, final Arguments args) { + double energy = (Double) Reflection.get(tileEntity, "energy"); + return new Object[]{Math.min(energy / 100000, 100)}; + } + + } +} diff --git a/src/main/java/li/cil/occ/mods/ic2/ModIndustrialCraft2.java b/src/main/java/li/cil/occ/mods/ic2/ModIndustrialCraft2.java index 53eeb9e87..d75e83579 100644 --- a/src/main/java/li/cil/occ/mods/ic2/ModIndustrialCraft2.java +++ b/src/main/java/li/cil/occ/mods/ic2/ModIndustrialCraft2.java @@ -22,6 +22,7 @@ public final class ModIndustrialCraft2 implements IMod { Driver.add(new DriverEnergyConductor()); Driver.add(new DriverEnergySink()); Driver.add(new DriverEnergySource()); + Driver.add(new DriverMassFab()); Driver.add(new DriverEnergyStorage()); } diff --git a/src/main/java/li/cil/occ/mods/thermalexpansion/DriverLamp.java b/src/main/java/li/cil/occ/mods/thermalexpansion/DriverLamp.java new file mode 100644 index 000000000..1472474e9 --- /dev/null +++ b/src/main/java/li/cil/occ/mods/thermalexpansion/DriverLamp.java @@ -0,0 +1,42 @@ +package li.cil.occ.mods.thermalexpansion; + + +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.prefab.DriverTileEntity; +import li.cil.oc.api.prefab.ManagedEnvironment; +import li.cil.occ.mods.ManagedTileEntityEnvironment; +import li.cil.occ.util.Reflection; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class DriverLamp extends DriverTileEntity { + private static final Class TileLamp = Reflection.getClass("thermalexpansion.block.lamp.TileLamp"); + + @Override + public Class getTileEntityClass() { + return TileLamp; + } + + @Override + public ManagedEnvironment createEnvironment(final World world, final int x, final int y, final int z) { + return new Environment(world.getBlockTileEntity(x, y, z)); + } + + public static final class Environment extends ManagedTileEntityEnvironment { + public Environment(final TileEntity tileEntity) { + super(tileEntity, "Lamp"); + } + + @Callback + public Object[] setColor(final Context context, final Arguments args) { + try { + return new Object[]{Reflection.invoke(tileEntity, "setColor", args.checkInteger(0))}; + } catch (Throwable t) { + return new Object[]{null, "Error"}; + } + } + + } +} diff --git a/src/main/java/li/cil/occ/mods/thermalexpansion/ModThermalExpansion.java b/src/main/java/li/cil/occ/mods/thermalexpansion/ModThermalExpansion.java index 0126872d3..9eb2fbac1 100644 --- a/src/main/java/li/cil/occ/mods/thermalexpansion/ModThermalExpansion.java +++ b/src/main/java/li/cil/occ/mods/thermalexpansion/ModThermalExpansion.java @@ -18,6 +18,7 @@ public final class ModThermalExpansion implements IMod { public void initialize() { Driver.add(new DriverEnderAttuned()); Driver.add(new DriverEnergyHandler()); + Driver.add(new DriverLamp()); Driver.add(new DriverEnergyInfo()); Driver.add(new DriverRedstoneControl()); Driver.add(new DriverSecureTile());