diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index c4e930c6d..b1508d53b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -19,10 +19,15 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +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 io.netty.buffer.ByteBuf; +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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,7 +37,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent { public long laser; public long maxLaser; @@ -284,4 +290,58 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.consumption); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, this.output); } + + //OC stuff + + @Override + public String getComponentName() { + return "ntm_icf_reactor"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {this.heat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeatingRate(Context context, Arguments args) { + return new Object[] {this.heatup}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxHeat(Context context, Arguments args) { + return new Object[] {maxHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {this.laser}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(), + tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(), + tanks[2].getFill(), tanks[2].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPelletStats(Context context, Arguments args) { + return new Object[] { + ItemICFPellet.getDepletion(slots[5]), + ItemICFPellet.getMaxDepletion(slots[5]), + ItemICFPellet.getFusingDifficulty(slots[5]), + ItemICFPellet.getType(slots[5], true).name(), + ItemICFPellet.getType(slots[5], false).name() + }; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index d6bf0e065..759274b54 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -23,6 +23,7 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -228,6 +229,19 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg return new Object[] {"This is a testing device for everything OC."}; } + @Callback(direct = true, getter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableget(Context context, Arguments args) { + return new Object[] {speed, "test of the `getter` callback function"}; + } + + @Callback(direct = true, setter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableset(Context context, Arguments args) { + speed = MathHelper.clamp_int(args.checkInteger(0), 0, 5); + return new Object[] {"test of the `setter` callback function"}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this);