diff --git a/src/main/java/storagecraft/gui/GuiBase.java b/src/main/java/storagecraft/gui/GuiBase.java index b11de1235..3d229432e 100644 --- a/src/main/java/storagecraft/gui/GuiBase.java +++ b/src/main/java/storagecraft/gui/GuiBase.java @@ -1,7 +1,9 @@ package storagecraft.gui; import com.google.common.base.Joiner; +import java.util.ArrayList; import java.util.List; +import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.inventory.Container; @@ -12,8 +14,17 @@ import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import storagecraft.StorageCraft; +import storagecraft.gui.sidebutton.SideButton; public abstract class GuiBase extends GuiContainer { + public static final int SIDE_BUTTON_WIDTH = 20; + public static final int SIDE_BUTTON_HEIGHT = 20; + + private List sideButtons = new ArrayList(); + + private int lastButtonId = 0; + private int lastSideButtonY = 6; + public GuiBase(Container container, int w, int h) { super(container); @@ -46,26 +57,70 @@ public abstract class GuiBase extends GuiContainer { protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - drawForeground(mouseX - guiLeft, mouseY - guiTop); + mouseX -= guiLeft; + mouseY -= guiTop; + + for (SideButton sideButton : sideButtons) { + sideButton.draw(this, sideButton.getX() + 2, sideButton.getY() + 1); + + if (inBounds(sideButton.getX(), sideButton.getY(), SIDE_BUTTON_WIDTH, SIDE_BUTTON_HEIGHT, mouseX, mouseY)) { + drawTooltip(mouseX, mouseY, sideButton.getTooltip(this)); + } + } + + drawForeground(mouseX, mouseY); } - protected boolean inBounds(int x, int y, int w, int h, int ox, int oy) { + @Override + protected void actionPerformed(GuiButton button) { + super.actionPerformed(button); + + for (SideButton sideButton : sideButtons) { + if (sideButton.getId() == button.id) { + sideButton.actionPerformed(); + } + } + } + + public GuiButton addButton(int x, int y, int w, int h) { + return addButton(x, y, w, h, ""); + } + + public GuiButton addButton(int x, int y, int w, int h, String text) { + GuiButton button = new GuiButton(lastButtonId++, x, y, w, h, text); + + buttonList.add(button); + + return button; + } + + public void addSideButton(SideButton button) { + button.setX(xSize - 1); + button.setY(lastSideButtonY); + button.setId(addButton(guiLeft + button.getX(), guiTop + button.getY(), SIDE_BUTTON_WIDTH, SIDE_BUTTON_HEIGHT).id); + + lastSideButtonY += SIDE_BUTTON_HEIGHT + 4; + + sideButtons.add(button); + } + + public boolean inBounds(int x, int y, int w, int h, int ox, int oy) { return ox >= x && ox <= x + w && oy >= y && oy <= y + h; } - protected void bindTexture(String file) { + public void bindTexture(String file) { bindTexture(StorageCraft.ID, file); } - protected void bindTexture(String base, String file) { + public void bindTexture(String base, String file) { mc.getTextureManager().bindTexture(new ResourceLocation(base, "textures/" + file)); } - protected void drawItem(int x, int y, ItemStack stack) { + public void drawItem(int x, int y, ItemStack stack) { drawItem(x, y, stack, false); } - protected void drawItem(int x, int y, ItemStack stack, boolean withOverlay) { + public void drawItem(int x, int y, ItemStack stack, boolean withOverlay) { zLevel = 100; itemRender.zLevel = 100; @@ -89,16 +144,16 @@ public abstract class GuiBase extends GuiContainer { zLevel = 0; } - protected void drawString(int x, int y, String message) { + public void drawString(int x, int y, String message) { drawString(x, y, message, 4210752); } - protected void drawString(int x, int y, String message, int color) { + public void drawString(int x, int y, String message, int color) { fontRendererObj.drawString(message, x, y, color); } // https://github.com/AppliedEnergistics/Applied-Energistics-2/blob/master/src/main/java/appeng/client/gui/AEBaseGui.java - protected void drawTooltip(int x, int y, String message) { + public void drawTooltip(int x, int y, String message) { GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); GL11.glDisable(GL12.GL_RESCALE_NORMAL); @@ -179,7 +234,7 @@ public abstract class GuiBase extends GuiContainer { GL11.glPopAttrib(); } - protected void drawTooltip(int x, int y, ItemStack stack) { + public void drawTooltip(int x, int y, ItemStack stack) { List list = stack.getTooltip(mc.thePlayer, mc.gameSettings.advancedItemTooltips); for (int i = 0; i < list.size(); ++i) { @@ -193,7 +248,7 @@ public abstract class GuiBase extends GuiContainer { drawTooltip(x, y, Joiner.on("\n").join(list)); } - protected String t(String name, Object... format) { + public String t(String name, Object... format) { return StatCollector.translateToLocalFormatted(name, format); } diff --git a/src/main/java/storagecraft/gui/GuiController.java b/src/main/java/storagecraft/gui/GuiController.java index 42a314337..13db09f82 100644 --- a/src/main/java/storagecraft/gui/GuiController.java +++ b/src/main/java/storagecraft/gui/GuiController.java @@ -1,6 +1,7 @@ package storagecraft.gui; import storagecraft.container.ContainerController; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.tile.TileController; public class GuiController extends GuiBase { @@ -14,6 +15,7 @@ public class GuiController extends GuiBase { @Override public void init(int x, int y) { + addSideButton(new SideButtonRedstoneMode(controller)); } @Override diff --git a/src/main/java/storagecraft/gui/GuiDrive.java b/src/main/java/storagecraft/gui/GuiDrive.java index 59ad24035..13e3ad51e 100644 --- a/src/main/java/storagecraft/gui/GuiDrive.java +++ b/src/main/java/storagecraft/gui/GuiDrive.java @@ -1,11 +1,25 @@ package storagecraft.gui; import storagecraft.container.ContainerDrive; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.tile.TileDrive; -public class GuiDrive extends GuiMachine { +public class GuiDrive extends GuiBase { + private TileDrive drive; + public GuiDrive(ContainerDrive container, TileDrive drive) { - super(container, 176, 190, drive); + super(container, 176, 190); + + this.drive = drive; + } + + @Override + public void init(int x, int y) { + addSideButton(new SideButtonRedstoneMode(drive)); + } + + @Override + public void update(int x, int y) { } @Override @@ -17,8 +31,6 @@ public class GuiDrive extends GuiMachine { @Override public void drawForeground(int mouseX, int mouseY) { - super.drawForeground(mouseX, mouseY); - drawString(7, 7, t("gui.storagecraft:drive")); drawString(7, 96, t("container.inventory")); } diff --git a/src/main/java/storagecraft/gui/GuiExporter.java b/src/main/java/storagecraft/gui/GuiExporter.java index 6c3eec134..da68a16c9 100644 --- a/src/main/java/storagecraft/gui/GuiExporter.java +++ b/src/main/java/storagecraft/gui/GuiExporter.java @@ -3,34 +3,33 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; import storagecraft.StorageCraft; import storagecraft.container.ContainerExporter; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.network.MessageExporterUpdate; import storagecraft.tile.TileExporter; import storagecraft.util.InventoryUtils; -public class GuiExporter extends GuiMachine { +public class GuiExporter extends GuiBase { private TileExporter exporter; private GuiButton compareNBTButton; private GuiButton compareDamageButton; public GuiExporter(ContainerExporter container, TileExporter exporter) { - super(container, 176, 186, exporter); + super(container, 176, 186); this.exporter = exporter; } @Override public void init(int x, int y) { - super.init(x, y); + addSideButton(new SideButtonRedstoneMode(exporter)); - buttonList.add(compareNBTButton = new GuiButton(1, x + 7, y + 41, 100, 20, "")); - buttonList.add(compareDamageButton = new GuiButton(2, x + 7, y + 63, 120, 20, "")); + compareNBTButton = addButton(x + 7, y + 41, 100, 20); + compareDamageButton = addButton(x + 7, y + 63, 120, 20); } @Override public void update(int x, int y) { - super.update(x, y); - compareNBTButton.displayString = t("misc.storagecraft:compareNBT") + ": "; compareNBTButton.displayString += t("misc.storagecraft:" + ((exporter.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off")); @@ -47,8 +46,6 @@ public class GuiExporter extends GuiMachine { @Override public void drawForeground(int mouseX, int mouseY) { - super.drawForeground(mouseX, mouseY); - drawString(7, 7, t("gui.storagecraft:exporter")); drawString(7, 93, t("container.inventory")); } @@ -59,9 +56,9 @@ public class GuiExporter extends GuiMachine { int flags = exporter.getCompareFlags(); - if (button.id == compareNBTButton.id) { + if (button == compareNBTButton) { flags ^= InventoryUtils.COMPARE_NBT; - } else if (button.id == compareDamageButton.id) { + } else if (button == compareDamageButton) { flags ^= InventoryUtils.COMPARE_DAMAGE; } diff --git a/src/main/java/storagecraft/gui/GuiGrid.java b/src/main/java/storagecraft/gui/GuiGrid.java index 74f0f6a65..c67e0421e 100644 --- a/src/main/java/storagecraft/gui/GuiGrid.java +++ b/src/main/java/storagecraft/gui/GuiGrid.java @@ -9,13 +9,14 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import storagecraft.StorageCraft; import storagecraft.container.ContainerGrid; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.network.MessageStoragePull; import storagecraft.network.MessageStoragePush; import storagecraft.storage.StorageItem; import storagecraft.tile.TileController; import storagecraft.tile.TileGrid; -public class GuiGrid extends GuiMachine { +public class GuiGrid extends GuiBase { private ContainerGrid container; private TileGrid grid; @@ -27,7 +28,7 @@ public class GuiGrid extends GuiMachine { private int offset; public GuiGrid(ContainerGrid container, TileGrid grid) { - super(container, 176, 190, grid); + super(container, 176, 190); this.container = container; this.grid = grid; @@ -35,9 +36,9 @@ public class GuiGrid extends GuiMachine { @Override public void init(int x, int y) { - super.init(x, y); + addSideButton(new SideButtonRedstoneMode(grid)); - searchField = new GuiTextField(fontRendererObj, x + 80 + 2, y + 6 + 1, 88 - 6, fontRendererObj.FONT_HEIGHT); + searchField = new GuiTextField(fontRendererObj, x + 80 + 1, y + 6 + 1, 88 - 6, fontRendererObj.FONT_HEIGHT); searchField.setEnableBackgroundDrawing(false); searchField.setVisible(true); searchField.setTextColor(16777215); @@ -47,8 +48,6 @@ public class GuiGrid extends GuiMachine { @Override public void update(int x, int y) { - super.update(x, y); - int wheel = Mouse.getDWheel(); wheel = Math.max(Math.min(-wheel, 1), -1); @@ -99,8 +98,6 @@ public class GuiGrid extends GuiMachine { @Override public void drawForeground(int mouseX, int mouseY) { - super.drawForeground(mouseX, mouseY); - drawString(7, 7, t("gui.storagecraft:grid")); drawString(7, 96, t("container.inventory")); @@ -149,6 +146,30 @@ public class GuiGrid extends GuiMachine { } } + public List getItems() { + List items = new ArrayList(); + + if (!grid.isConnected()) { + return items; + } + + items.addAll(grid.getController().getItems()); + + if (!searchField.getText().trim().isEmpty()) { + Iterator t = items.iterator(); + + while (t.hasNext()) { + StorageItem item = t.next(); + + if (!item.toItemStack().getDisplayName().toLowerCase().contains(searchField.getText().toLowerCase())) { + t.remove(); + } + } + } + + return items; + } + @Override public void mouseClicked(int mouseX, int mouseY, int clickedButton) { super.mouseClicked(mouseX, mouseY, clickedButton); @@ -181,28 +202,4 @@ public class GuiGrid extends GuiMachine { super.keyTyped(character, keyCode); } } - - public List getItems() { - List items = new ArrayList(); - - if (!grid.isConnected()) { - return items; - } - - items.addAll(grid.getController().getItems()); - - if (!searchField.getText().trim().isEmpty()) { - Iterator t = items.iterator(); - - while (t.hasNext()) { - StorageItem item = t.next(); - - if (!item.toItemStack().getDisplayName().toLowerCase().contains(searchField.getText().toLowerCase())) { - t.remove(); - } - } - } - - return items; - } } diff --git a/src/main/java/storagecraft/gui/GuiImporter.java b/src/main/java/storagecraft/gui/GuiImporter.java index 0ce9f0c5a..8a4de1777 100644 --- a/src/main/java/storagecraft/gui/GuiImporter.java +++ b/src/main/java/storagecraft/gui/GuiImporter.java @@ -3,11 +3,12 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; import storagecraft.StorageCraft; import storagecraft.container.ContainerImporter; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.network.MessageImporterUpdate; import storagecraft.tile.TileImporter; import storagecraft.util.InventoryUtils; -public class GuiImporter extends GuiMachine { +public class GuiImporter extends GuiBase { private TileImporter importer; private GuiButton compareNBTButton; @@ -15,24 +16,22 @@ public class GuiImporter extends GuiMachine { private GuiButton modeButton; public GuiImporter(ContainerImporter container, TileImporter importer) { - super(container, 176, 201, importer); + super(container, 176, 201); this.importer = importer; } @Override public void init(int x, int y) { - super.init(x, y); + addSideButton(new SideButtonRedstoneMode(importer)); - buttonList.add(compareNBTButton = new GuiButton(1, x + 7, y + 41, 100, 20, "")); - buttonList.add(compareDamageButton = new GuiButton(2, x + 7, y + 63, 120, 20, "")); - buttonList.add(modeButton = new GuiButton(3, x + 7, y + 85, 80, 20, "")); + compareNBTButton = addButton(x + 7, y + 41, 100, 20); + compareDamageButton = addButton(x + 7, y + 63, 120, 20); + modeButton = addButton(x + 7, y + 85, 80, 20); } @Override public void update(int x, int y) { - super.update(x, y); - compareNBTButton.displayString = t("misc.storagecraft:compareNBT") + ": "; compareNBTButton.displayString += t("misc.storagecraft:" + ((importer.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off")); @@ -51,8 +50,6 @@ public class GuiImporter extends GuiMachine { @Override public void drawForeground(int mouseX, int mouseY) { - super.drawForeground(mouseX, mouseY); - drawString(7, 7, t("gui.storagecraft:importer")); drawString(7, 108, t("container.inventory")); } @@ -63,9 +60,9 @@ public class GuiImporter extends GuiMachine { int flags = importer.getCompareFlags(); - if (button.id == compareNBTButton.id) { + if (button == compareNBTButton) { flags ^= InventoryUtils.COMPARE_NBT; - } else if (button.id == compareDamageButton.id) { + } else if (button == compareDamageButton) { flags ^= InventoryUtils.COMPARE_DAMAGE; } diff --git a/src/main/java/storagecraft/gui/GuiMachine.java b/src/main/java/storagecraft/gui/GuiMachine.java deleted file mode 100644 index 4b348b83a..000000000 --- a/src/main/java/storagecraft/gui/GuiMachine.java +++ /dev/null @@ -1,54 +0,0 @@ -package storagecraft.gui; - -import net.minecraft.client.gui.GuiButton; -import net.minecraft.init.Items; -import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; -import storagecraft.StorageCraft; -import storagecraft.network.MessageRedstoneModeUpdate; -import storagecraft.tile.TileMachine; - -public abstract class GuiMachine extends GuiBase { - private TileMachine machine; - - public static final ItemStack REDSTONE_MODE_ITEM = new ItemStack(Items.redstone, 1); - - private int redstoneModeX; - private int redstoneModeY = 6; - private int redstoneModeWidth = 20; - private int redstoneModeHeight = 20; - - public GuiMachine(Container container, int w, int h, TileMachine machine) { - super(container, w, h); - - this.redstoneModeX = w - 1; - this.machine = machine; - } - - @Override - public void init(int x, int y) { - buttonList.add(new GuiButton(0, x + redstoneModeX, y + redstoneModeY, redstoneModeWidth, redstoneModeHeight, "")); - } - - @Override - public void update(int x, int y) { - } - - @Override - public void drawForeground(int mouseX, int mouseY) { - drawItem(redstoneModeX + 2, redstoneModeY + 1, REDSTONE_MODE_ITEM); - - if (inBounds(redstoneModeX, redstoneModeY, redstoneModeWidth, redstoneModeHeight, mouseX, mouseY)) { - drawTooltip(mouseX, mouseY, t("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id)); - } - } - - @Override - protected void actionPerformed(GuiButton button) { - super.actionPerformed(button); - - if (button.id == 0) { - StorageCraft.NETWORK.sendToServer(new MessageRedstoneModeUpdate(machine.xCoord, machine.yCoord, machine.zCoord)); - } - } -} diff --git a/src/main/java/storagecraft/gui/GuiStorageProxy.java b/src/main/java/storagecraft/gui/GuiStorageProxy.java index 0acfc6f1b..600f55f27 100644 --- a/src/main/java/storagecraft/gui/GuiStorageProxy.java +++ b/src/main/java/storagecraft/gui/GuiStorageProxy.java @@ -1,11 +1,25 @@ package storagecraft.gui; import storagecraft.container.ContainerStorageProxy; +import storagecraft.gui.sidebutton.SideButtonRedstoneMode; import storagecraft.tile.TileStorageProxy; -public class GuiStorageProxy extends GuiMachine { +public class GuiStorageProxy extends GuiBase { + private TileStorageProxy storageProxy; + public GuiStorageProxy(ContainerStorageProxy container, TileStorageProxy storageProxy) { - super(container, 176, 131, storageProxy); + super(container, 176, 131); + + this.storageProxy = storageProxy; + } + + @Override + public void init(int x, int y) { + addSideButton(new SideButtonRedstoneMode(storageProxy)); + } + + @Override + public void update(int x, int y) { } @Override @@ -17,8 +31,6 @@ public class GuiStorageProxy extends GuiMachine { @Override public void drawForeground(int mouseX, int mouseY) { - super.drawForeground(mouseX, mouseY); - drawString(7, 7, t("gui.storagecraft:storageProxy")); drawString(7, 39, t("container.inventory")); } diff --git a/src/main/java/storagecraft/gui/sidebutton/SideButton.java b/src/main/java/storagecraft/gui/sidebutton/SideButton.java new file mode 100644 index 000000000..4400d7226 --- /dev/null +++ b/src/main/java/storagecraft/gui/sidebutton/SideButton.java @@ -0,0 +1,39 @@ +package storagecraft.gui.sidebutton; + +import storagecraft.gui.GuiBase; + +public abstract class SideButton { + private int id; + private int x; + private int y; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public abstract String getTooltip(GuiBase gui); + + public abstract void draw(GuiBase gui, int x, int y); + + public abstract void actionPerformed(); +} diff --git a/src/main/java/storagecraft/gui/sidebutton/SideButtonRedstoneMode.java b/src/main/java/storagecraft/gui/sidebutton/SideButtonRedstoneMode.java new file mode 100644 index 000000000..f5d48e3f0 --- /dev/null +++ b/src/main/java/storagecraft/gui/sidebutton/SideButtonRedstoneMode.java @@ -0,0 +1,31 @@ +package storagecraft.gui.sidebutton; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import storagecraft.StorageCraft; +import storagecraft.gui.GuiBase; +import storagecraft.network.MessageRedstoneModeUpdate; +import storagecraft.tile.IRedstoneControllable; + +public class SideButtonRedstoneMode extends SideButton { + private IRedstoneControllable control; + + public SideButtonRedstoneMode(IRedstoneControllable control) { + this.control = control; + } + + @Override + public String getTooltip(GuiBase gui) { + return gui.t("misc.storagecraft:redstoneMode." + control.getRedstoneMode().id); + } + + @Override + public void draw(GuiBase gui, int x, int y) { + gui.drawItem(x, y, new ItemStack(Items.redstone, 1)); + } + + @Override + public void actionPerformed() { + StorageCraft.NETWORK.sendToServer(new MessageRedstoneModeUpdate(control)); + } +} diff --git a/src/main/java/storagecraft/network/MessageRedstoneModeUpdate.java b/src/main/java/storagecraft/network/MessageRedstoneModeUpdate.java index a0739686e..39344cebf 100644 --- a/src/main/java/storagecraft/network/MessageRedstoneModeUpdate.java +++ b/src/main/java/storagecraft/network/MessageRedstoneModeUpdate.java @@ -6,7 +6,7 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; -import storagecraft.tile.TileMachine; +import storagecraft.tile.IRedstoneControllable; public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler { private int x; @@ -16,10 +16,10 @@ public class MessageRedstoneModeUpdate implements IMessage, IMessageHandler items = new ArrayList(); private List storages = new ArrayList(); + private RedstoneMode redstoneMode = RedstoneMode.IGNORE; + private List machines = new ArrayList(); private List visitedCables = new ArrayList(); @@ -223,6 +225,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor super.readFromNBT(nbt); energy.readFromNBT(nbt); + + if (nbt.hasKey(RedstoneMode.NBT)) { + redstoneMode = RedstoneMode.getById(nbt.getInteger(RedstoneMode.NBT)); + } } @Override @@ -230,6 +236,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor super.writeToNBT(nbt); energy.writeToNBT(nbt); + + nbt.setInteger(RedstoneMode.NBT, redstoneMode.id); } @Override @@ -257,14 +265,42 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } public boolean isActive() { - return energy.getEnergyStored() >= getEnergyUsage(); + return energy.getEnergyStored() >= getEnergyUsage() && redstoneMode.isEnabled(worldObj, xCoord, yCoord, zCoord); } + @Override + public RedstoneMode getRedstoneMode() { + return redstoneMode; + } + + @Override + public void setRedstoneMode(RedstoneMode mode) { + this.redstoneMode = mode; + } + + @Override + public int getX() { + return xCoord; + } + + @Override + public int getY() { + return yCoord; + } + + @Override + public int getZ() { + return zCoord; + } + + // @TODO: add helpers for sending redstone control + item storages over net @Override public void fromBytes(ByteBuf buf) { energy.setEnergyStored(buf.readInt()); energyUsage = buf.readInt(); + redstoneMode = RedstoneMode.getById(buf.readInt()); + items.clear(); int size = buf.readInt(); @@ -285,6 +321,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor buf.writeInt(energy.getEnergyStored()); buf.writeInt(energyUsage); + buf.writeInt(redstoneMode.id); + buf.writeInt(items.size()); for (StorageItem item : items) { diff --git a/src/main/java/storagecraft/tile/TileMachine.java b/src/main/java/storagecraft/tile/TileMachine.java index d168f8234..03622a38c 100644 --- a/src/main/java/storagecraft/tile/TileMachine.java +++ b/src/main/java/storagecraft/tile/TileMachine.java @@ -3,9 +3,7 @@ package storagecraft.tile; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; -public abstract class TileMachine extends TileBase implements INetworkTile { - public static final String NBT_REDSTONE_MODE = "RedstoneMode"; - +public abstract class TileMachine extends TileBase implements INetworkTile, IRedstoneControllable { protected boolean connected = false; private RedstoneMode redstoneMode = RedstoneMode.LOW; @@ -43,27 +41,31 @@ public abstract class TileMachine extends TileBase implements INetworkTile { return connected; } - public boolean isEnabled() { - switch (redstoneMode) { - case IGNORE: - return true; - case HIGH: - return worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); - case LOW: - return !worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord); - } - - return false; - } - + @Override public RedstoneMode getRedstoneMode() { return redstoneMode; } + @Override public void setRedstoneMode(RedstoneMode mode) { this.redstoneMode = mode; } + @Override + public int getX() { + return xCoord; + } + + @Override + public int getY() { + return yCoord; + } + + @Override + public int getZ() { + return zCoord; + } + public TileController getController() { return (TileController) worldObj.getTileEntity(xController, yController, zController); } @@ -98,8 +100,8 @@ public abstract class TileMachine extends TileBase implements INetworkTile { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - if (nbt.hasKey(NBT_REDSTONE_MODE)) { - redstoneMode = RedstoneMode.getById(nbt.getInteger(NBT_REDSTONE_MODE)); + if (nbt.hasKey(RedstoneMode.NBT)) { + redstoneMode = RedstoneMode.getById(nbt.getInteger(RedstoneMode.NBT)); } } @@ -107,7 +109,7 @@ public abstract class TileMachine extends TileBase implements INetworkTile { public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger(NBT_REDSTONE_MODE, redstoneMode.id); + nbt.setInteger(RedstoneMode.NBT, redstoneMode.id); } public abstract int getEnergyUsage(); diff --git a/src/main/resources/assets/storagecraft/textures/gui/grid.png b/src/main/resources/assets/storagecraft/textures/gui/grid.png index 65837cc37..1d246de4a 100644 Binary files a/src/main/resources/assets/storagecraft/textures/gui/grid.png and b/src/main/resources/assets/storagecraft/textures/gui/grid.png differ