diff --git a/dependencies.gradle b/dependencies.gradle index c1e0b0e..0ccf9f7 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,5 +1,7 @@ dependencies { implementation("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev") + api('com.github.GTNewHorizons:EnderCore:0.3.0:dev') + implementation("com.github.GTNewHorizons:EnderIO:2.4.16:dev") implementation("curse.maven:cofh-core-69162:2388751") implementation(fileTree(dir: 'libs/', include: '*.jar')) } \ No newline at end of file diff --git a/src/main/java/space/gtimpact/mixinmodule/mixinplugin/Mixin.java b/src/main/java/space/gtimpact/mixinmodule/mixinplugin/Mixin.java index 748a192..e001c3d 100644 --- a/src/main/java/space/gtimpact/mixinmodule/mixinplugin/Mixin.java +++ b/src/main/java/space/gtimpact/mixinmodule/mixinplugin/Mixin.java @@ -39,7 +39,9 @@ public enum Mixin { OreDictionaryArbiter_Mixin("cofh.OreDictionaryArbiter_Mixin", COFH, VANILLA), CoFHCoreUpdate_Mixin_Mixin("cofh.CoFHCoreUpdate_Mixin", COFH, VANILLA), + AbstractLiquidConduit_Mixin("ei.AbstractLiquidConduit_Mixin", EI, GREGTECH, VANILLA), ; + public final String mixinClass; public final List targetedMods; private final Side side; diff --git a/src/main/java/space/gtimpact/mixinmodule/mixinplugin/TargetedMod.java b/src/main/java/space/gtimpact/mixinmodule/mixinplugin/TargetedMod.java index 1ff8bec..81f6148 100644 --- a/src/main/java/space/gtimpact/mixinmodule/mixinplugin/TargetedMod.java +++ b/src/main/java/space/gtimpact/mixinmodule/mixinplugin/TargetedMod.java @@ -19,6 +19,8 @@ public enum TargetedMod { AE("Applied Energistics 2", "appliedenergistics2", true), AE2FC("Fluid Craft For AE2", "ae2fc", true), COFH("CoFHCore", "CoFHCore", true), + EC2("Extra Cells 2", "extracells", true), + EI("Ender IO", "EnderIO", true), ; public final String modName; diff --git a/src/main/java/space/gtimpact/mixinmodule/mixins/ei/AbstractLiquidConduit_Mixin.java b/src/main/java/space/gtimpact/mixinmodule/mixins/ei/AbstractLiquidConduit_Mixin.java new file mode 100644 index 0000000..ffee902 --- /dev/null +++ b/src/main/java/space/gtimpact/mixinmodule/mixins/ei/AbstractLiquidConduit_Mixin.java @@ -0,0 +1,34 @@ +package space.gtimpact.mixinmodule.mixins.ei; + +import crazypants.enderio.conduit.liquid.AbstractLiquidConduit; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.IFluidHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(AbstractLiquidConduit.class) +public abstract class AbstractLiquidConduit_Mixin { + + @Shadow(remap = false) public abstract IFluidHandler getExternalHandler(ForgeDirection direction); + + @Inject(method = "canConnectToExternal", at = @At("HEAD"), remap = false, cancellable = true) + private void canConnectToExternal(ForgeDirection direction, boolean ignoreDisabled, CallbackInfoReturnable cir) { + IFluidHandler h = getExternalHandler(direction); + if (h == null) { + cir.setReturnValue(false); + return; + } + + if (h instanceof IGregTechTileEntity) { + IMetaTileEntity mte = ((IGregTechTileEntity) h).getMetaTileEntity(); + cir.setReturnValue(mte != null && mte.getCapacity() > 0); + return; + } + cir.setReturnValue(true); + } +}