From 45cdf2c823cd57fab4d5855a9685cd8d39e84c33 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:18:25 -0500 Subject: [PATCH] launch pad compat!! ITER compat and ICF compat next probably --- .../bomb/TileEntityLaunchPadBase.java | 63 ++++++++++++++++++- .../bomb/TileEntityLaunchTable.java | 2 +- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index 3d36b7ff1..b9e87115c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -4,6 +4,11 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; +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 org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -49,7 +54,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); @@ -462,4 +468,59 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl /** Any extra conditions for launching in addition to the missile being valid and fueled */ public abstract boolean isReadyForLaunch(); public abstract double getLaunchOffset(); + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "ntm_launch_pad"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + this.tanks[0].getFill(), this.tanks[0].getMaxFill(), this.tanks[0].getTankType().getUnlocalizedName(), + this.tanks[1].getFill(), this.tanks[1].getMaxFill(), this.tanks[1].getTankType().getUnlocalizedName() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] canLaunch(Context context, Arguments args) { + return new Object[] {canLaunch()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTier(Context context, Arguments args) { + if(!isMissileValid()) + return new Object[] {}; + ItemMissile missile = (ItemMissile) slots[0].getItem(); + if(missile.tier == ItemMissile.MissileTier.TIER0) + return new Object[] {0}; + if(missile.tier == ItemMissile.MissileTier.TIER1) + return new Object[] {1}; + if(missile.tier == ItemMissile.MissileTier.TIER2) + return new Object[] {2}; + if(missile.tier == ItemMissile.MissileTier.TIER3) + return new Object[] {3}; + if(missile.tier == ItemMissile.MissileTier.TIER4) + return new Object[] {4}; + return new Object[] {5}; // unknown tier + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + if(canLaunch()) { + return new Object[] {sendCommandPosition(args.checkInteger(0), -1 /*unused anyway*/, args.checkInteger(1))}; + } + return new Object[] {false}; + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 0c4d1422e..db8c0d05b 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -649,7 +649,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide // do some opencomputer stuff @Override public String getComponentName() { - return "large_launch_pad"; + return "ntm_custom_launch_pad"; } @Callback