From 3ed24016f4a51f7aa27807dcf5c98dfeaf620170 Mon Sep 17 00:00:00 2001 From: hinyb <40139991+hinyb@users.noreply.github.com> Date: Wed, 18 Mar 2026 15:15:48 +0800 Subject: [PATCH] fix(gregtech): resolve incorrect value for LSC --- dependencies.gradle | 2 +- .../gregtech/DriverEnergyContainer.java | 14 +++++- .../oc/integration/gregtech/DriverLSC.scala | 43 +++++++++++++++++++ .../oc/integration/gregtech/ModGregtech.scala | 1 + 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/main/scala/li/cil/oc/integration/gregtech/DriverLSC.scala diff --git a/dependencies.gradle b/dependencies.gradle index 996b710cf6..70fac78cda 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,7 +7,7 @@ dependencies { api("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.5.39-gtnh:dev") compileOnly("com.github.GTNewHorizons:Angelica:1.0.0-beta68a:api") {transitive = false} - api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-betea-777-GTNH:dev") + api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-777-GTNH:dev") compileOnly("com.github.GTNewHorizons:Avaritiaddons:1.9.3-GTNH:dev") {transitive = false} compileOnly("com.github.GTNewHorizons:BloodMagic:1.8.8:dev") {transitive = false} compileOnly("com.github.GTNewHorizons:BuildCraft:7.1.48:dev") {transitive = false} diff --git a/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java b/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java index 6c37ff86ae..d5b593b178 100644 --- a/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java +++ b/src/main/scala/li/cil/oc/integration/gregtech/DriverEnergyContainer.java @@ -2,6 +2,7 @@ import com.gtnewhorizon.gtnhlib.capability.Capabilities; import gregtech.api.interfaces.tileentity.IBasicEnergyContainer; +import li.cil.oc.api.driver.NamedBlock; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -23,7 +24,18 @@ public ManagedEnvironment createEnvironment( return new Environment(Capabilities.getCapability(world.getTileEntity(x, y, z), IBasicEnergyContainer.class, side)); } - public static final class Environment extends ManagedTileEntityEnvironment { + public static final class Environment extends ManagedTileEntityEnvironment implements NamedBlock { + + @Override + public String preferredName() { + return "gt_energyContainer"; + } + + @Override + public int priority() { + return -1; + } + public Environment(final IBasicEnergyContainer tileEntity) { super(tileEntity, "gt_energyContainer"); } diff --git a/src/main/scala/li/cil/oc/integration/gregtech/DriverLSC.scala b/src/main/scala/li/cil/oc/integration/gregtech/DriverLSC.scala new file mode 100644 index 0000000000..95a1a9d1e0 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/gregtech/DriverLSC.scala @@ -0,0 +1,43 @@ +package li.cil.oc.integration.gregtech + +import gregtech.api.interfaces.tileentity.IGregTechTileEntity +import kekztech.common.tileentities.MTELapotronicSuperCapacitor +import li.cil.oc.api.driver.{NamedBlock, SidedBlock} +import li.cil.oc.api.machine.{Arguments, Callback, Context} +import li.cil.oc.api.network.ManagedEnvironment +import li.cil.oc.integration.ManagedTileEntityEnvironment +import li.cil.oc.util.ResultWrapper.result +import net.minecraft.world.World +import net.minecraftforge.common.util.ForgeDirection + +object DriverLSC extends SidedBlock { + override def worksWith(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): Boolean = { + world.getTileEntity(x, y, z) match { + case tile: IGregTechTileEntity => tile.getMetaTileEntity.isInstanceOf[MTELapotronicSuperCapacitor] + case _ => false + } + } + + override def createEnvironment(world: World, x: Int, y: Int, z: Int, side: ForgeDirection): ManagedEnvironment = { + val tile = world.getTileEntity(x, y, z).asInstanceOf[IGregTechTileEntity] + new Environment(tile.getMetaTileEntity.asInstanceOf[MTELapotronicSuperCapacitor]) + } + + final class Environment(tile: MTELapotronicSuperCapacitor) extends ManagedTileEntityEnvironment[MTELapotronicSuperCapacitor](tile, "LSC") with NamedBlock { + override def preferredName(): String = "LSC" + + override def priority(): Int = 0 + + @Callback(doc = "function():number -- Returns the amount of electricity contained in this Block, in EU units! NOTE: Value is clamped to Long.MaxValue to prevent overflow.") + def getStoredEU(context: Context, args: Arguments): Array[AnyRef] = result(tileEntity.getEUVar) + + @Callback(doc = "function():string -- Returns the amount of electricity contained in this Block, in EU units! (As a string for HUGE amounts.)") + def getStoredEUString(context: Context, args: Arguments) = Array[AnyRef](tileEntity.getStored.toString) + + @Callback(doc = "function():number -- Returns the amount of electricity containable in this Block, in EU units! NOTE: Value is clamped to Long.MaxValue to prevent overflow.") + def getEUCapacity(context: Context, args: Arguments): Array[AnyRef] = result(tileEntity.maxEUStore) + + @Callback(doc = "function():number -- Returns the amount of electricity containable in this Block, in EU units! (As a string for HUGE amounts.)") + def getEUCapacityString(context: Context, args: Arguments) = Array[AnyRef](tileEntity.getEnergyCapacity.toString) + } +} diff --git a/src/main/scala/li/cil/oc/integration/gregtech/ModGregtech.scala b/src/main/scala/li/cil/oc/integration/gregtech/ModGregtech.scala index b1cf2cbff5..230a067e15 100644 --- a/src/main/scala/li/cil/oc/integration/gregtech/ModGregtech.scala +++ b/src/main/scala/li/cil/oc/integration/gregtech/ModGregtech.scala @@ -15,6 +15,7 @@ object ModGregtech extends ModProxy { MinecraftForge.EVENT_BUS.register(EventHandlerGregTech) Driver.add(new DriverEnergyContainer) + Driver.add(DriverLSC) Driver.add(new ConverterDataStick) RecipeHandler.init()