From ed432211978150aae6b80b13b831583e5b7b05c4 Mon Sep 17 00:00:00 2001 From: Voxelstice Date: Mon, 16 Jan 2023 17:58:45 +0300 Subject: [PATCH 1/3] some more opencomputers stuff --- .../tileentity/bomb/TileEntityLaunchPad.java | 69 ++++++++++++++++++- .../machine/TileEntityCoreEmitter.java | 6 +- .../machine/TileEntityCoreStabilizer.java | 4 +- .../machine/TileEntityReactorResearch.java | 8 ++- .../machine/TileEntityReactorZirnox.java | 2 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 43 +++++++++++- .../machine/rbmk/TileEntityRBMKControl.java | 10 +-- 7 files changed, 128 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index c17fe69f8..dbee46cb6 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -19,8 +19,21 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { +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; +import api.hbm.item.IDesignatorItem; +import net.minecraft.block.Block; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, SimpleComponent { + + public LaunchPad launchpadBlock = (LaunchPad) ModBlocks.launch_pad; public ItemStack slots[]; public long power; @@ -30,7 +43,6 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI private static final int[] slots_bottom = new int[] { 0, 1, 2}; private static final int[] slots_side = new int[] {0}; public int state = 0; - private String customName; public TileEntityLaunchPad() { @@ -256,4 +268,57 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI { return 65536.0D; } + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "launch_pad"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyStored(Context context, Arguments args) { + return new Object[] {getPower()}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxEnergy(Context context, Arguments args) { + return new Object[] {getMaxPower()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + + // Not sure if i should have this + if(xCoord2 == xCoord && zCoord2 == zCoord) { + xCoord2 += 1; + } + + return new Object[] {xCoord2, zCoord2}; + } + return new Object[] {"Designator not found"}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); + slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); + + return new Object[] {"Success"}; + } + return new Object[] {"Designator not found"}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); + launchpadBlock.explode(worldObj, xCoord, yCoord, zCoord); + return new Object[] {}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 4aca127f2..48ea0c69e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -339,16 +339,18 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne @Callback @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { - isOn = Boolean.parseBoolean(args.checkString(0)); + isOn = args.checkBoolean(0); return new Object[] {}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { - int newOutput = Integer.parseInt(args.checkString(0)); + int newOutput = args.checkInteger(0); if (newOutput > 100) { newOutput = 100; + } else if (newOutput < 0) { + newOutput = 0; } watts = newOutput; return new Object[] {}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index d66736845..2d708dc83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -197,9 +197,11 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I @Callback @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { - int newOutput = Integer.parseInt(args.checkString(0)); + int newOutput = args.checkInteger(0); if (newOutput > 100) { newOutput = 100; + } else if (newOutput < 0) { + newOutput = 0; } watts = newOutput; return new Object[] {}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 49cf57163..c19264cf8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -413,9 +413,11 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements @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; + double newLevel = args.checkDouble(0)/100.0; + if (newLevel > 1.0) { + newLevel = 1.0; + } else if (newLevel < 0.0) { + newLevel = 0.0; } targetLevel = newLevel; return new Object[] {}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 85c27518e..f56240304 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -578,7 +578,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF @Callback @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { - isOn = Boolean.parseBoolean(args.checkString(0)); + isOn = args.checkBoolean(0); return new Object[] {}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 27139dc0a..05caa6325 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -23,7 +23,14 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; -public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver { +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 class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent { public FluidTank feed; public FluidTank steam; @@ -314,4 +321,38 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public FluidTank[] getReceivingTanks() { return new FluidTank[] {feed}; } + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "rbmk_boiler"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getSteam(Context context, Arguments args) { + return new Object[] {steam.getFill()}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getSteamMax(Context context, Arguments args) { + return new Object[] {steam.getMaxFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getWater(Context context, Arguments args) { + return new Object[] {feed.getFill()}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getWaterMax(Context context, Arguments args) { + return new Object[] {feed.getMaxFill()}; + } } 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 59772c142..118949b2e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -150,10 +150,12 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im @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; - } + double newLevel = args.checkDouble(0)/100.0; + if (newLevel > 1.0) { + newLevel = 1.0; + } else if (newLevel < 0.0) { + newLevel = 0.0; + } targetLevel = newLevel; return new Object[] {}; } From 1c0006ba3915e17dcb76e49fa3d8fca0a8509a68 Mon Sep 17 00:00:00 2001 From: Voxelstice <95834462+Voxelstice@users.noreply.github.com> Date: Mon, 16 Jan 2023 18:01:23 +0300 Subject: [PATCH 2/3] i think a variable is not necessary for this --- src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index dbee46cb6..46319ad09 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -33,7 +33,6 @@ import com.hbm.blocks.bomb.LaunchPad; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, SimpleComponent { - public LaunchPad launchpadBlock = (LaunchPad) ModBlocks.launch_pad; public ItemStack slots[]; public long power; @@ -318,7 +317,7 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Optional.Method(modid = "OpenComputers") public Object[] launch(Context context, Arguments args) { //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); - launchpadBlock.explode(worldObj, xCoord, yCoord, zCoord); + ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); return new Object[] {}; } } From 830f742ac0ef39eb70b52f9c249364020bcdf037 Mon Sep 17 00:00:00 2001 From: Voxelstice <95834462+Voxelstice@users.noreply.github.com> Date: Mon, 16 Jan 2023 18:29:23 +0300 Subject: [PATCH 3/3] why did i not do this earlier --- .../hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 118949b2e..c2a53c530 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -131,13 +131,13 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im @Callback @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { - return new Object[] {getMult()}; + return new Object[] {getMult() * 100}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { - return new Object[] {targetLevel}; + return new Object[] {targetLevel * 100}; }