From edb94e966f7f22fbae0a40d83ac10ec9925cfb42 Mon Sep 17 00:00:00 2001 From: BallOfEnergy1 Date: Tue, 14 Mar 2023 15:48:45 -0500 Subject: [PATCH 1/5] Revamped some Opencomputers stuff --- .../machine/rbmk/TileEntityRBMKBoiler.java | 5 + .../machine/rbmk/TileEntityRBMKControl.java | 6 ++ .../machine/rbmk/TileEntityRBMKCooler.java | 96 +++++++++++-------- .../machine/rbmk/TileEntityRBMKOutgasser.java | 19 +++- .../machine/rbmk/TileEntityRBMKRod.java | 14 +++ 5 files changed, 100 insertions(+), 40 deletions(-) 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 f9601d4b0..4fb6fbc88 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -361,6 +361,11 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return new Object[] {feed.getMaxFill()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill()}; + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKGeneric(player.inventory); 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 c2a53c530..40966dc5c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -147,6 +147,12 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return new Object[] {heat}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, getMult() * 100, targetLevel * 100}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index d83d6f94d..1631e9b42 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -10,44 +10,51 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +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 TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent { -public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver { - private FluidTank tank; private int lastCooled; - + public TileEntityRBMKCooler() { super(); - + this.tank = new FluidTank(Fluids.CRYOGEL, 8000, 0); } - + @Override public void updateEntity() { - - if(!worldObj.isRemote) { - - if(this.worldObj.getTotalWorldTime() % 20 == 0) + + if (!worldObj.isRemote) { + + if (this.worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); - - if((int)(this.heat) > 750) { - - int heatProvided = (int)(this.heat - 750D); + + if ((int) (this.heat) > 750) { + + int heatProvided = (int) (this.heat - 750D); int cooling = Math.min(heatProvided, tank.getFill()); - + this.heat -= cooling; this.tank.setFill(this.tank.getFill() - cooling); - + this.lastCooled = cooling; - - if(lastCooled > 0) { + + if (lastCooled > 0) { List entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 4, zCoord, xCoord + 1, yCoord + 8, zCoord + 1)); - - for(Entity e : entities) { + + for (Entity e : entities) { e.setFire(5); e.attackEntityFrom(DamageSource.inFire, 10); } @@ -55,44 +62,44 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc } else { this.lastCooled = 0; } - + } else { - - if(this.lastCooled > 100) { - for(int i = 0; i < 2; i++) { + + if (this.lastCooled > 100) { + for (int i = 0; i < 2; i++) { worldObj.spawnParticle("flame", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); worldObj.spawnParticle("smoke", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); } - - if(worldObj.rand.nextInt(20) == 0) + + if (worldObj.rand.nextInt(20) == 0) worldObj.spawnParticle("lava", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.0, 0); - } else if(this.lastCooled > 50) { - for(int i = 0; i < 2; i++) { + } else if (this.lastCooled > 50) { + for (int i = 0; i < 2; i++) { worldObj.spawnParticle("cloud", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, worldObj.rand.nextGaussian() * 0.05, 0.2, worldObj.rand.nextGaussian() * 0.05); } - } else if(this.lastCooled > 0) { - - if(worldObj.getTotalWorldTime() % 2 == 0) + } else if (this.lastCooled > 0) { + + if (worldObj.getTotalWorldTime() % 2 == 0) worldObj.spawnParticle("cloud", xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 4.5, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, 0, 0.2, 0); - + } } - + super.updateEntity(); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + tank.readFromNBT(nbt, "cryo"); this.lastCooled = nbt.getInteger("cooled"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + tank.writeToNBT(nbt, "cryo"); nbt.setInteger("cooled", this.lastCooled); } @@ -109,7 +116,7 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc @Override public void setFluidFill(int fill, FluidType type) { - if(type == tank.getTankType()) + if (type == tank.getTankType()) tank.setFill(fill); } @@ -130,12 +137,23 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc @Override public FluidTank[] getAllTanks() { - return new FluidTank[] {tank}; + return new FluidTank[]{tank}; } @Override public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tank}; + return new FluidTank[]{tank}; } + //do some opencomputers stuff + + public String getComponentName() { + return "rbmk_cooler"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{heat, tank.getMaxFill(), tank.getFill()}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index ab1fb6774..e9dfc523a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -14,8 +14,13 @@ import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardSender; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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 net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -23,7 +28,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent { public FluidTank gas; public double progress; @@ -215,6 +221,17 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return new FluidTank[] {gas}; } + //do some opencomputers stuff + @Override + public String getComponentName() { + return "rbmk_outgasser"; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {gas.getFill(), gas.getMaxFill(), progress}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKOutgasser(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 132e4eefc..35edbe368 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -420,6 +420,20 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + Object OC_enrich_buf; + Object OC_poison_buf; + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); + OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); + } else { + OC_enrich_buf = "N/A"; + OC_poison_buf = "N/A"; + } + return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf}; + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { From a2b798c1e20144874d4082ce85e266bc8e876f82 Mon Sep 17 00:00:00 2001 From: BallOfEnergy1 Date: Tue, 14 Mar 2023 17:12:56 -0500 Subject: [PATCH 2/5] Added a bit more OC compat, along with individual OC fields for grabbing singular fields. --- .../machine/rbmk/TileEntityRBMKCooler.java | 20 +++++++++++++++++- .../machine/rbmk/TileEntityRBMKHeater.java | 21 ++++++++++++++++++- .../machine/rbmk/TileEntityRBMKOutgasser.java | 19 +++++++++++++++++ .../storage/TileEntityMachineBattery.java | 6 ++++++ 4 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 1631e9b42..c8d0403ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -151,9 +151,27 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[]{heat}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCryo(Context context, Arguments args) { + return new Object[]{tank.getFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCryoMax(Context context, Arguments args) { + return new Object[]{tank.getMaxFill()}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{heat, tank.getMaxFill(), tank.getFill()}; + return new Object[]{heat, tank.getFill(), tank.getMaxFill()}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 29c75427d..f17914d3f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -27,8 +27,14 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +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; -public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) +public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent { public FluidTank feed; public FluidTank steam; @@ -268,6 +274,19 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return new FluidTank[] {feed}; } + //opencomputers stuff + + @Override + public String getComponentName() { + return "rbmk_control_rod"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKHeater(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index e9dfc523a..85ae56fce 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -226,6 +226,25 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement public String getComponentName() { return "rbmk_outgasser"; } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getGas(Context context, Arguments args) { + return new Object[] {gas.getFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getGasMax(Context context, Arguments args) { + return new Object[] {gas.getMaxFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getProgress(Context context, Arguments args) { + return new Object[] {progress}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 9a36c8493..5704599fa 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -388,6 +388,12 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return new Object[] {getMaxPower()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + @Override public void writeNBT(NBTTagCompound nbt) { NBTTagCompound data = new NBTTagCompound(); From 3b564d5f928fd9dad1b4b9063353b2aede4a370f Mon Sep 17 00:00:00 2001 From: BallOfEnergy1 Date: Wed, 15 Mar 2023 17:29:16 -0500 Subject: [PATCH 3/5] Fixed some crucial issues with the heater OC compatibility, along with some added functionality for detecting core and skin heat of rods in the RBMK fuel columns. --- .../machine/rbmk/TileEntityRBMKHeater.java | 43 ++++++++++++++++++- .../machine/rbmk/TileEntityRBMKRod.java | 19 ++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index f17914d3f..15469487b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -278,7 +278,48 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I @Override public String getComponentName() { - return "rbmk_control_rod"; + return "rbmk_heater"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getFill(Context context, Arguments args) { + return new Object[] {feed.getFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getFillMax(Context context, Arguments args) { + return new Object[] {feed.getMaxFill()}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getExport(Context context, Arguments args) { + return new Object[] {steam.getFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getExportMax(Context context, Arguments args) { + return new Object[] {steam.getMaxFill()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getFillType(Context context, Arguments args) { + return new Object[] {feed.getTankType().getID()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getExportType(Context context, Arguments args) { + return new Object[] {steam.getTankType().getID()}; } @Callback diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 35edbe368..c9b3f22e8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -420,6 +420,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoreHeat(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + return new Object[] {ItemRBMKRod.getCoreHeat(slots[0])}; + } + return new Object[] {"N/A"}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getSkinHeat(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + return new Object[] {ItemRBMKRod.getHullHeat(slots[0])}; + } + return new Object[] {"N/A"}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { From 6a52f65a5362e7e5ba1d092907bbd2e192dd3089 Mon Sep 17 00:00:00 2001 From: BallOfEnergy1 Date: Wed, 15 Mar 2023 17:51:29 -0500 Subject: [PATCH 4/5] Added the ability to change/read the steam type to and from the RBMK boiler columns. --- .../machine/rbmk/TileEntityRBMKBoiler.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) 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 4fb6fbc88..9a77815eb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -366,6 +366,40 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill()}; } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getSteamType(Context context, Arguments args) { + FluidType type = steam.getTankType(); + if(type == Fluids.STEAM) {return new Object[] {"0"};} + else if(type == Fluids.HOTSTEAM) {return new Object[] {"1"};} + else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {"2"};} + else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {"3"};} + else {return new Object[] {"Unknown Error"};} + } + + public Object[] setSteamType(Context context, Arguments args) { + int type = args.checkInteger(0); + if(type > 3) { + type = 3; + } else if(type < 0) { + type = 0; + } + if(type == 0) { + steam.setTankType(Fluids.STEAM); + return new Object[] {"true"}; + } else if(type == 1) { + steam.setTankType(Fluids.HOTSTEAM); + return new Object[] {"true"}; + } else if(type == 2) { + steam.setTankType(Fluids.SUPERHOTSTEAM); + return new Object[] {"true"}; + } else { + steam.setTankType(Fluids.ULTRAHOTSTEAM); + return new Object[] {"true"}; + } + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKGeneric(player.inventory); From 54be75f71f283bd939435be6eb5e762e86845897 Mon Sep 17 00:00:00 2001 From: BallOfEnergy1 Date: Thu, 16 Mar 2023 16:50:49 -0500 Subject: [PATCH 5/5] Finished up most OC compatibility, tested and ready for merge. --- .../machine/TileEntityCoreEmitter.java | 6 +++ .../machine/TileEntityCoreInjector.java | 6 +++ .../machine/TileEntityCoreReceiver.java | 6 +++ .../machine/TileEntityCoreStabilizer.java | 12 +++++ .../machine/TileEntityMachineRadar.java | 47 ++++++++++++++++++- .../TileEntityMachineReactorBreeding.java | 6 +++ .../machine/TileEntityReactorResearch.java | 6 +++ .../machine/TileEntityReactorZirnox.java | 6 +++ .../machine/rbmk/TileEntityRBMKBoiler.java | 9 +++- 9 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index cf5fe55b6..5dd663165 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -335,6 +335,12 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return new Object[] {watts}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 9625a40c3..5b7e90266 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -212,6 +212,12 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return new Object[] {tanks[1].getFill()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerCoreInjector(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index f08b9264c..d3e203e67 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -209,6 +209,12 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return new Object[] {tank.getFill()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {joules, power, tank.getFill()}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerCoreReceiver(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 2d9bfdf2b..27f060d89 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -200,6 +200,18 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + Object lens_damage_buf; + if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { + lens_damage_buf = ItemLens.getLensDamage(slots[0]); + } else { + lens_damage_buf = "N/A"; + } + return new Object[] {power, maxPower, watts, lens_damage_buf}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 907a5be9d..d7c16c07d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -14,6 +14,8 @@ import com.hbm.tileentity.TileEntityTickingBase; import api.hbm.energy.IEnergyUser; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectable.RadarTargetType; +import cpw.mods.fml.client.config.GuiEditArrayEntries; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -25,8 +27,13 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; +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; -public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineRadar extends TileEntityTickingBase implements IEnergyUser, IGUIProvider, SimpleComponent { public List entList = new ArrayList(); public List nearbyMissiles = new ArrayList(); @@ -285,6 +292,44 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn return 65536.0D; } + // do some opencomputer stuff + + @Override + public String getComponentName() { + return "ntm_radar"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {power}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] isJammed(Context context, Arguments args) { + return new Object[] {jammed}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEntities(Context context, Arguments args) { + int index = args.checkInteger(0); + boolean raw = args.checkBoolean(1); + if(!raw && !jammed) { + Entity e = entList.get(index); + double a = (e.posX); + double b = (e.posY); + double c = (e.posZ); + boolean d = (e instanceof EntityPlayer); + return new Object[] {a, b, c, d}; + } else if (!jammed) { + return new Object[] {entList}; + } else { + return new Object[] {"Radar jammed!"}; + } + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineRadar(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 33c2c9486..3a8cec7ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -233,6 +233,12 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl return new Object[] {progress}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {flux, progress}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineReactorBreeding(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 975d55198..aae6849e0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -415,6 +415,12 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return new Object[] {totalFlux}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, level, targetLevel, totalFlux}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 00d8de6de..143795070 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -581,6 +581,12 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return new Object[] {isOn}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, pressure, water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { 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 9a77815eb..f3457b1e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -364,7 +364,14 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill()}; + FluidType type = steam.getTankType(); + Object type_1; + if(type == Fluids.STEAM) {type_1 = "0";} + else if(type == Fluids.HOTSTEAM) {type_1 = "1";} + else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} + else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} + else {type_1 = "Unknown Error";} + return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1}; } @Callback