From e96cca77f4d0cde9d6e60e68ef7cd61f90142562 Mon Sep 17 00:00:00 2001 From: Voxelstice <95834462+Voxelstice@users.noreply.github.com> Date: Fri, 13 May 2022 16:23:57 +1000 Subject: [PATCH] Update TileEntityRBMKControl.java --- .../machine/rbmk/TileEntityRBMKControl.java | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index bfb9c2294..99978ff6b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -6,7 +6,14 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; -public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @SideOnly(Side.CLIENT) public double lastLevel; @@ -105,4 +112,40 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { data.setDouble("level", this.level); return data; } + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "rbmk_control_rod"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getLevel(Context context, Arguments args) { + return new Object[] {getMult()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getTargetLevel(Context context, Arguments args) { + return new Object[] {targetLevel}; + } + + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setLevel(Context context, Arguments args) { + double newLevel = Double.parseDouble(args.checkString(0))/100.0; + if (newLevel > 1) { // check if its above 100 so the control rod wont do funny things + newLevel = 1; + } + targetLevel = newLevel; + return new Object[] {}; + } }