diff --git a/resources/assemblyline/textures/gui_encoder.png b/resources/assemblyline/textures/gui_encoder.png index 6166e33e..61cd12bf 100644 Binary files a/resources/assemblyline/textures/gui_encoder.png and b/resources/assemblyline/textures/gui_encoder.png differ diff --git a/src/minecraft/assemblyline/client/gui/GuiEncoder.java b/src/minecraft/assemblyline/client/gui/GuiEncoder.java index f0515dfc..39d32e41 100644 --- a/src/minecraft/assemblyline/client/gui/GuiEncoder.java +++ b/src/minecraft/assemblyline/client/gui/GuiEncoder.java @@ -27,6 +27,7 @@ import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.network.PacketManager; import assemblyline.common.AssemblyLine; +import assemblyline.common.machine.armbot.Command; import assemblyline.common.machine.encoder.ContainerEncoder; import assemblyline.common.machine.encoder.IInventoryWatcher; import assemblyline.common.machine.encoder.ItemDisk; @@ -62,22 +63,22 @@ public class GuiEncoder extends GuiContainer implements IInventoryWatcher this.allowUserInput = true; - containerWidth = (this.width - this.xSize) / 2; - containerHeight = (this.height - this.ySize) / 2; + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; - addButton = new GuiButton(0, containerWidth + (xSize - 25), containerHeight + 148, 18, 20, "+"); - delButton = new GuiButton(1, containerWidth + (xSize - 43), containerHeight + 148, 18, 20, "-"); - pUpButton = new GuiButton(2, containerWidth + (xSize - 25), containerHeight + 48, 18, 20, ""); - pDnButton = new GuiButton(3, containerWidth + (xSize - 25), containerHeight + 128, 18, 20, ""); - commandField = new GuiTextField(fontRenderer, 8, 149, xSize - 52, 18); + this.addButton = new GuiButton(0, containerWidth + (xSize - 25), containerHeight + 128, 18, 20, "+"); + this.delButton = new GuiButton(1, containerWidth + (xSize - 43), containerHeight + 128, 18, 20, "-"); + this.pUpButton = new GuiButton(2, containerWidth + (xSize - 25), containerHeight + 48, 18, 20, ""); + this.pDnButton = new GuiButton(3, containerWidth + (xSize - 25), containerHeight + 108, 18, 20, ""); + this.commandField = new GuiTextField(fontRenderer, 8, 129, xSize - 52, 18); // commandList = new GuiCommandList(mc, xSize - 7, 128, 7, 120, 170, 20); - controlList.add(addButton); - controlList.add(delButton); - controlList.add(pUpButton); - controlList.add(pDnButton); + this.controlList.add(addButton); + this.controlList.add(delButton); + this.controlList.add(pUpButton); + this.controlList.add(pDnButton); - minCommand = 0; + this.minCommand = 0; } @Override @@ -92,15 +93,14 @@ public class GuiEncoder extends GuiContainer implements IInventoryWatcher if (this.tileEntity != null) { ItemStack disk = this.tileEntity.getStackInSlot(0); - if (disk != null) + + if (disk != null && Command.getCommand(this.commandField.getText()) != null) { ArrayList tempCmds = ItemDisk.getCommands(disk); tempCmds.add(commandField.getText()); ItemDisk.setCommands(disk, tempCmds); this.tileEntity.setInventorySlotContents(0, disk); - // TODO: Change command ID to corresponding ones. - int commandID = 0; - PacketDispatcher.sendPacketToServer(PacketManager.getPacket(AssemblyLine.CHANNEL, this.tileEntity, (int) commandID)); + PacketDispatcher.sendPacketToServer(PacketManager.getPacket(AssemblyLine.CHANNEL, this.tileEntity, (String) this.commandField.getText())); } } @@ -193,7 +193,7 @@ public class GuiEncoder extends GuiContainer implements IInventoryWatcher this.mc.renderEngine.bindTexture(var4); this.drawTexturedModalRect(containerWidth, containerHeight, 0, 0, this.xSize, this.ySize); - drawOutlineRect(containerWidth + 7, containerHeight + 48, containerWidth + (xSize - 25), containerHeight + 48 + 100, 0, 0, 0, 0.5f, 0.5f, 0.5f); + drawOutlineRect(containerWidth + 7, containerHeight + 48, containerWidth + (xSize - 25), containerHeight + 48 + 80, 0, 0, 0, 0.5f, 0.5f, 0.5f); } public static void drawOutlineRect(int x1, int y1, int x2, int y2, float rR, float rG, float rB, float lR, float lG, float lB) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 33c03cdc..a62a54f8 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -35,7 +35,7 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; -@Mod(modid = AssemblyLine.CHANNEL, name = AssemblyLine.NAME, version = AssemblyLine.VERSION, dependencies = "required-after:BasicComponents") +@Mod(modid = AssemblyLine.CHANNEL, name = AssemblyLine.NAME, version = AssemblyLine.VERSION, dependencies = "after:BasicComponents") @NetworkMod(channels = { AssemblyLine.CHANNEL }, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketManager.class) public class AssemblyLine { @@ -84,8 +84,6 @@ public class AssemblyLine CONFIGURATION.load(); blockConveyorBelt = new BlockConveyorBelt(CONFIGURATION.getBlock("Conveyor Belt", BLOCK_ID_PREFIX).getInt()); blockManipulator = new BlockManipulator(CONFIGURATION.getBlock("Manipulator", BLOCK_ID_PREFIX + 1).getInt()); - // blockEncoder = new BlockEncoder2(CONFIGURATION.getBlock("Encoder", BLOCK_ID_PREFIX + - // 2).getInt()); blockCrate = new BlockCrate(CONFIGURATION.getBlock("Crate", BLOCK_ID_PREFIX + 3).getInt(), 0); blockImprinter = new BlockImprinter(CONFIGURATION.getBlock("Imprinter", BLOCK_ID_PREFIX + 4).getInt(), 0); blockDetector = new BlockDetector(CONFIGURATION.getBlock("Detector", BLOCK_ID_PREFIX + 5).getInt(), 1); diff --git a/src/minecraft/assemblyline/common/machine/armbot/Command.java b/src/minecraft/assemblyline/common/machine/armbot/Command.java index 63560b53..c1cc4db8 100644 --- a/src/minecraft/assemblyline/common/machine/armbot/Command.java +++ b/src/minecraft/assemblyline/common/machine/armbot/Command.java @@ -1,5 +1,7 @@ package assemblyline.common.machine.armbot; +import java.util.HashMap; + import assemblyline.common.machine.crafter.TileEntityArmbot; /** @@ -11,9 +13,26 @@ import assemblyline.common.machine.crafter.TileEntityArmbot; public abstract class Command { /** - * A class of all available commands. Command IDs are the indexes of the array. + * A class of all available commands. + * + * String - Command name. Command - The actual command class. */ - public static Class[] COMMANDS = { CommandIdle.class }; + private static final HashMap COMMANDS = new HashMap(); + + static + { + registerCommand("idle", CommandIdle.class); + } + + public static void registerCommand(String command, Class commandClass) + { + COMMANDS.put(command, commandClass); + } + + public static Class getCommand(String command) + { + return COMMANDS.get(command); + } protected int ticks; protected TileEntityArmbot tileEntity; diff --git a/src/minecraft/assemblyline/common/machine/encoder/ContainerEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/ContainerEncoder.java index 3b27cbec..ff15abb8 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/ContainerEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/ContainerEncoder.java @@ -22,23 +22,21 @@ public class ContainerEncoder extends Container this.encoder = encoder; // Disk - this.addSlotToContainer(new Slot(encoder, 0, 80, 24)); - // Output Disk - // this.addSlotToContainer(new SlotDiskResult(this, 2, 136, 24)); - + this.addSlotToContainer(new Slot(encoder, 0, 80, 17)); + int var3; for (var3 = 0; var3 < 3; ++var3) { for (int var4 = 0; var4 < 9; ++var4) { - this.addSlotToContainer(new Slot(inventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 170 + var3 * 18)); + this.addSlotToContainer(new Slot(inventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 155 + var3 * 18)); } } for (var3 = 0; var3 < 9; ++var3) { - this.addSlotToContainer(new Slot(inventoryPlayer, var3, 8 + var3 * 18, 228)); + this.addSlotToContainer(new Slot(inventoryPlayer, var3, 8 + var3 * 18, 213)); } } diff --git a/src/minecraft/assemblyline/common/machine/encoder/ItemDisk.java b/src/minecraft/assemblyline/common/machine/encoder/ItemDisk.java index 91f893a6..71bd5493 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/ItemDisk.java +++ b/src/minecraft/assemblyline/common/machine/encoder/ItemDisk.java @@ -36,7 +36,12 @@ public class ItemDisk extends Item if (commands.size() > 0) { - list.add(commands.size() + " commands"); + list.add(commands.size() + " command(s)"); + + for (String command : commands) + { + list.add(command); + } } else { diff --git a/src/minecraft/assemblyline/common/machine/encoder/TileEntityEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/TileEntityEncoder.java index b996622e..9387800e 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/TileEntityEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/TileEntityEncoder.java @@ -1,6 +1,6 @@ package assemblyline.common.machine.encoder; -import com.google.common.io.ByteArrayDataInput; +import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -11,6 +11,9 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ISidedInventory; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.tile.TileEntityAdvanced; +import assemblyline.common.machine.armbot.Command; + +import com.google.common.io.ByteArrayDataInput; public class TileEntityEncoder extends TileEntityAdvanced implements IPacketReceiver, ISidedInventory { @@ -160,9 +163,14 @@ public class TileEntityEncoder extends TileEntityAdvanced implements IPacketRece /** * Only the server receives this from the client's button click action. */ - - int newAddCommandID = dataStream.readInt(); - + String newCommand = dataStream.readUTF(); + + if (Command.getCommand(newCommand) != null && this.disk != null) + { + ArrayList tempCmds = ItemDisk.getCommands(this.disk); + tempCmds.add(newCommand); + ItemDisk.setCommands(this.disk, tempCmds); + } } catch (Exception e) {