From f67449e6ec66b34a4f1ca8347fea3c879338f17a Mon Sep 17 00:00:00 2001 From: Tianyou Mei Date: Wed, 25 Dec 2024 03:00:00 +0800 Subject: [PATCH] add oc integration for tectech multis --- .../gregtech5/DriverTTMultiblockBase.java | 55 +++++++++++++++++++ .../oc/IntegrationOpenComputers.java | 2 + 2 files changed, 57 insertions(+) create mode 100644 src/main/java/pl/asie/computronics/integration/gregtech/gregtech5/DriverTTMultiblockBase.java diff --git a/src/main/java/pl/asie/computronics/integration/gregtech/gregtech5/DriverTTMultiblockBase.java b/src/main/java/pl/asie/computronics/integration/gregtech/gregtech5/DriverTTMultiblockBase.java new file mode 100644 index 00000000..54e420e8 --- /dev/null +++ b/src/main/java/pl/asie/computronics/integration/gregtech/gregtech5/DriverTTMultiblockBase.java @@ -0,0 +1,55 @@ +package pl.asie.computronics.integration.gregtech.gregtech5; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import gregtech.api.metatileentity.BaseMetaTileEntity; +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.ManagedEnvironment; +import li.cil.oc.api.prefab.DriverSidedTileEntity; +import pl.asie.computronics.integration.ManagedEnvironmentOCTile; +import tectech.thing.metaTileEntity.multi.base.Parameters; +import tectech.thing.metaTileEntity.multi.base.TTMultiblockBase; + +public class DriverTTMultiblockBase extends DriverSidedTileEntity { + + public static class ManagedEnvironmentTTMultiblockBase extends ManagedEnvironmentOCTile { + + public ManagedEnvironmentTTMultiblockBase(BaseMetaTileEntity tile, String name) { + super(tile, name); + } + + @Callback(doc = "function(hatch:int, id: int, val:double); Sets a parameter", direct = true) + public Object[] setParameters(Context c, Arguments a) { + Parameters p = ((TTMultiblockBase) tile.getMetaTileEntity()).parametrization; + p.trySetParameters(a.checkInteger(0), a.checkInteger(1), a.checkDouble(2)); + return null; + } + + @Callback(doc = "function(hatch:int, id: int);double Returns the value of a parameter", direct = true) + public Object[] getParameters(Context c, Arguments a) { + return new Object[] { ((TTMultiblockBase) tile.getMetaTileEntity()).parametrization + .getGroup(a.checkInteger(0)).parameterIn[a.checkInteger((1))].get() }; + } + } + + @Override + public Class getTileEntityClass() { + return BaseMetaTileEntity.class; + } + + @Override + public boolean worksWith(World world, int x, int y, int z, ForgeDirection side) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + return (tileEntity != null) && tileEntity instanceof BaseMetaTileEntity + && ((BaseMetaTileEntity) tileEntity).getMetaTileEntity() instanceof TTMultiblockBase; + } + + @Override + public ManagedEnvironment createEnvironment(World world, int x, int y, int z, ForgeDirection side) { + return new ManagedEnvironmentTTMultiblockBase((BaseMetaTileEntity) world.getTileEntity(x, y, z), "tt_machine"); + } +} diff --git a/src/main/java/pl/asie/computronics/oc/IntegrationOpenComputers.java b/src/main/java/pl/asie/computronics/oc/IntegrationOpenComputers.java index 729135a1..a47fd3da 100644 --- a/src/main/java/pl/asie/computronics/oc/IntegrationOpenComputers.java +++ b/src/main/java/pl/asie/computronics/oc/IntegrationOpenComputers.java @@ -61,6 +61,7 @@ import pl.asie.computronics.integration.gregtech.gregtech5.DriverDeviceInformation; import pl.asie.computronics.integration.gregtech.gregtech5.DriverDigitalChest; import pl.asie.computronics.integration.gregtech.gregtech5.DriverMachine; +import pl.asie.computronics.integration.gregtech.gregtech5.DriverTTMultiblockBase; import pl.asie.computronics.integration.mekanism.DriverStrictEnergyStorage; import pl.asie.computronics.integration.railcraft.driver.DriverElectricGrid; import pl.asie.computronics.integration.railcraft.driver.DriverRoutingDetector; @@ -274,6 +275,7 @@ public void init() { Driver.add(new DriverDeviceInformation()); Driver.add(new DriverMachine()); Driver.add(new DriverBatteryBuffer()); + Driver.add(new DriverTTMultiblockBase()); } if (compat.isCompatEnabled(Compat.GregTech_DigitalChests)) { Driver.add(new DriverDigitalChest());