From a94c13edc7961614bbdcb81bdc2f291a0695e969 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Mon, 20 Jul 2015 11:09:44 -0700 Subject: [PATCH] Implement new computer framework in primary machines --- .../integration/IComputerIntegration.java | 2 +- .../mekanism/common/integration/OCDriver.java | 3 +- .../TileEntityAdvancedElectricMachine.java | 34 +++-------- .../common/tile/TileEntityBasicMachine.java | 46 +++++++++----- .../common/tile/TileEntityChanceMachine.java | 38 ++++++++---- .../tile/TileEntityElectricMachine.java | 16 ++--- .../mekanism/common/tile/TileEntityPRC.java | 61 ++++++++++--------- 7 files changed, 110 insertions(+), 90 deletions(-) diff --git a/src/main/java/mekanism/common/integration/IComputerIntegration.java b/src/main/java/mekanism/common/integration/IComputerIntegration.java index 15fe642a6..71e7216e7 100644 --- a/src/main/java/mekanism/common/integration/IComputerIntegration.java +++ b/src/main/java/mekanism/common/integration/IComputerIntegration.java @@ -12,5 +12,5 @@ public interface IComputerIntegration extends IInventory, IPeripheral { public String[] getMethods(); - public Object[] invoke(String method, Object[] args) throws Exception; + public Object[] invoke(int method, Object[] args) throws Exception; } diff --git a/src/main/java/mekanism/common/integration/OCDriver.java b/src/main/java/mekanism/common/integration/OCDriver.java index bf27a4c00..9ddc3cd6d 100644 --- a/src/main/java/mekanism/common/integration/OCDriver.java +++ b/src/main/java/mekanism/common/integration/OCDriver.java @@ -11,6 +11,7 @@ import li.cil.oc.api.prefab.ManagedEnvironment; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import java.util.Arrays; import java.util.Locale; /** @@ -60,7 +61,7 @@ public class OCDriver extends DriverTileEntity @Override public Object[] invoke(String method, Context context, Arguments args) throws Exception { - return computerTile.invoke(method, args.toArray()); + return computerTile.invoke(Arrays.asList(methods()).indexOf(method), args.toArray()); } @Override diff --git a/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java b/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java index 48e75c999..f3c9796ed 100644 --- a/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java +++ b/src/main/java/mekanism/common/tile/TileEntityAdvancedElectricMachine.java @@ -1,23 +1,12 @@ package mekanism.common.tile; import io.netty.buffer.ByteBuf; - -import java.util.ArrayList; - import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.Range4D; -import mekanism.api.gas.Gas; -import mekanism.api.gas.GasStack; -import mekanism.api.gas.GasTank; -import mekanism.api.gas.IGasHandler; -import mekanism.api.gas.ITubeConnection; +import mekanism.api.gas.*; import mekanism.api.transmitters.TransmissionType; -import mekanism.common.Mekanism; -import mekanism.common.MekanismBlocks; -import mekanism.common.MekanismItems; -import mekanism.common.SideData; -import mekanism.common.Upgrade; +import mekanism.common.*; import mekanism.common.base.IFactory.RecipeType; import mekanism.common.network.PacketTileEntity.TileEntityMessage; import mekanism.common.recipe.RecipeHandler; @@ -36,10 +25,8 @@ import mekanism.common.util.StatUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -import cpw.mods.fml.common.Optional.Method; -import dan200.computercraft.api.lua.ILuaContext; -import dan200.computercraft.api.lua.LuaException; -import dan200.computercraft.api.peripheral.IComputerAccess; + +import java.util.ArrayList; public abstract class TileEntityAdvancedElectricMachine> extends TileEntityBasicMachine implements IGasHandler, ITubeConnection { @@ -437,16 +424,16 @@ public abstract class TileEntityAdvancedElectricMachine, OUTPUT extends MachineOutput, RECIPE extends MachineRecipe> extends TileEntityNoisyElectricBlock implements IElectricMachine, IPeripheral, ISideConfiguration, IUpgradeTile, IRedstoneControl +public abstract class TileEntityBasicMachine, OUTPUT extends MachineOutput, RECIPE extends MachineRecipe> extends TileEntityNoisyElectricBlock implements IElectricMachine, IComputerIntegration, ISideConfiguration, IUpgradeTile, IRedstoneControl { /** How much energy this machine uses per tick, un-upgraded. */ public double BASE_ENERGY_PER_TICK; @@ -244,6 +242,26 @@ public abstract class TileEntityBasicMachine, return this == other; } + @Override + @Method(modid = "ComputerCraft") + public String[] getMethodNames() + { + return getMethods(); + } + + @Override + @Method(modid = "ComputerCraft") + public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws LuaException, InterruptedException + { + try { + return invoke(method, arguments); + } catch(NoSuchMethodException e) { + return new Object[] {"Unknown command."}; + } finally { + return new Object[] {"Error."}; + } + } + @Override public boolean canSetFacing(int facing) { diff --git a/src/main/java/mekanism/common/tile/TileEntityChanceMachine.java b/src/main/java/mekanism/common/tile/TileEntityChanceMachine.java index 1fc7c7efd..c25b3407a 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChanceMachine.java +++ b/src/main/java/mekanism/common/tile/TileEntityChanceMachine.java @@ -1,7 +1,5 @@ package mekanism.common.tile; -import java.util.Map; - import mekanism.api.EnumColor; import mekanism.api.transmitters.TransmissionType; import mekanism.common.MekanismItems; @@ -18,10 +16,8 @@ import mekanism.common.util.InventoryUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; -import cpw.mods.fml.common.Optional.Method; -import dan200.computercraft.api.lua.ILuaContext; -import dan200.computercraft.api.lua.LuaException; -import dan200.computercraft.api.peripheral.IComputerAccess; + +import java.util.Map; public abstract class TileEntityChanceMachine> extends TileEntityBasicMachine { @@ -163,17 +159,35 @@ public abstract class TileEntityChanceMachine implements IFluidHandler, IGasHandler, ITubeConnection, ISustainedData, ITankManager { @@ -310,18 +293,40 @@ public class TileEntityPRC extends TileEntityBasicMachine