diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 5ae5bc423..0b763ac40 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -345,7 +345,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 9221bcb5d..6cc3bd5ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -347,7 +347,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 2e0775a00..869255de8 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -15,9 +15,13 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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 net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -464,4 +468,11 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretArty(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index f4866fe7a..e499c6d0a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -6,7 +6,12 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.IRadarCommandReceiver; +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 net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -69,4 +74,14 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase } } } + + @Override + public String getComponentName() { + return "ntm_artillery"; + } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getCurrentTarget(Context context, Arguments args) { + return new Object[] {targetQueue.get(0).xCoord, targetQueue.get(0).yCoord, targetQueue.get(0).zCoord}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 6006a5767..227bb9d3f 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -29,9 +29,14 @@ import com.hbm.util.CompatExternal; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectableNT; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -48,6 +53,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; @@ -58,7 +64,8 @@ import net.minecraftforge.common.util.ForgeDirection; * @author hbm * */ -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent { @Override public boolean hasPermission(EntityPlayer player) { @@ -899,4 +906,110 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerTurretBase(player.inventory, this); } + + // OC stuff + // This is a large compat, so I have to leave comments to know what I'm doing + + @Override + public String getComponentName() { + return "ntm_turret"; + } + + // On/Off + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setActive(Context context, Arguments args) { + this.isOn = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isActive(Context context, Arguments args) { + return new Object[] {this.isOn}; + } + + // Energy information + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {this.getPower(), this.getMaxPower()}; + } + + /////////////////////// + // Whitelist Control // + /////////////////////// + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getWhitelisted(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { + String[] array = ItemTurretBiometry.getNames(slots[0]); + return new Object[] {array}; + } + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] addWhitelist(Context context, Arguments args) { + if(this.getWhitelist() != null) { + List names = this.getWhitelist(); + if (names.contains(args.checkString(0))) + return new Object[]{false}; + } + this.addName(args.checkString(0)); + return new Object[]{true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] removeWhitelist(Context context, Arguments args) { + List names = this.getWhitelist(); + if(!names.contains(args.checkString(0))) + return new Object[] {false}; + this.removeName(names.indexOf(args.checkString(0))); + return new Object[] {true}; + } + + /////////////////////// + // Targeting Control // + /////////////////////// + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setTargeting(Context context, Arguments args) { + Object[] oldTargeting = new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; + this.targetPlayers = args.checkBoolean(0); + this.targetAnimals = args.checkBoolean(1); + this.targetMobs = args.checkBoolean(2); + this.targetMachines = args.checkBoolean(3); + return oldTargeting; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTargeting(Context context, Arguments args) { + return new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] hasTarget(Context context, Arguments args) { + return new Object[] {this.target != null}; + } + + /////////////////// + // Angle Control // + /////////////////// + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAngle(Context context, Arguments args) { + return new Object[] {Math.toDegrees(this.rotationPitch), Math.toDegrees(this.rotationYaw)}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isAligned(Context context, Arguments args) { + return new Object[] {this.aligned}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 4cd07246e..149dc136c 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -14,8 +14,12 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +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 net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -373,4 +377,11 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretHIMARS(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {}; + } }