diff --git a/src/main/java/storagecraft/gui/GuiBase.java b/src/main/java/storagecraft/gui/GuiBase.java new file mode 100644 index 000000000..9bb65cadd --- /dev/null +++ b/src/main/java/storagecraft/gui/GuiBase.java @@ -0,0 +1,211 @@ +package storagecraft.gui; + +import com.google.common.base.Joiner; +import java.util.List; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import storagecraft.StorageCraft; + +public abstract class GuiBase extends GuiContainer { + public GuiBase(Container container, int w, int h) { + super(container); + + this.xSize = w; + this.ySize = h; + } + + @Override + public void initGui() { + super.initGui(); + + init(getRelativeX(), getRelativeY()); + } + + @Override + public void updateScreen() { + super.updateScreen(); + + update(getRelativeX(), getRelativeY()); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + drawBackground(getRelativeX(), getRelativeY(), mouseX, mouseY); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + drawForeground(mouseX - ((this.width - xSize) / 2), mouseY - ((this.height - ySize) / 2)); + } + + public abstract void init(int x, int y); + + public abstract void update(int x, int y); + + public abstract void drawBackground(int x, int y, int mouseX, int mouseY); + + public abstract void drawForeground(int mouseX, int mouseY); + + private int getRelativeX() { + return (width - xSize) / 2; + } + + private int getRelativeY() { + return (height - ySize) / 2; + } + + protected void bindTexture(String file) { + bindTexture(StorageCraft.ID, file); + } + + protected void bindTexture(String base, String file) { + mc.getTextureManager().bindTexture(new ResourceLocation(base, "textures/" + file)); + } + + // @TODO: inBounds(x, y, width, height, ox, oy) + protected void drawItem(int x, int y, ItemStack stack) { + drawItem(x, y, stack, false); + } + + protected void drawItem(int x, int y, ItemStack stack, boolean withOverlay) { + zLevel = 100.0F; + itemRender.zLevel = 100.0F; + + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glEnable(GL11.GL_DEPTH_TEST); + + RenderHelper.enableGUIStandardItemLighting(); + + itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.renderEngine, stack, x, y); + + if (withOverlay) { + itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.renderEngine, stack, x, y); + } + + GL11.glPopAttrib(); + + itemRender.zLevel = 0.0F; + zLevel = 0.0F; + } + + protected void drawString(int x, int y, String message) { + drawString(x, y, message, 4210752); + } + + protected void drawString(int x, int y, String message, int color) { + fontRendererObj.drawString(message, x, y, color); + } + + protected void drawTooltip(int x, int y, String message) { + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + + RenderHelper.disableStandardItemLighting(); + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_DEPTH_TEST); + + String[] lines = message.split("\n"); + + if (lines.length > 0) { + int var5 = 0; + int var6; + int var7; + + for (var6 = 0; var6 < lines.length; ++var6) { + var7 = this.fontRendererObj.getStringWidth(lines[var6]); + + if (var7 > var5) { + var5 = var7; + } + } + + var6 = x + 12; + var7 = y - 12; + int var9 = 8; + + if (lines.length > 1) { + var9 += 2 + (lines.length - 1) * 10; + } + + if (this.guiTop + var7 + var9 + 6 > this.height) { + var7 = this.height - var9 - this.guiTop - 6; + } + + zLevel = 300.0F; + itemRender.zLevel = 300.0F; + + int var10 = -267386864; + + drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10); + drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10); + drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10); + drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10); + drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10); + + int var11 = 1347420415; + int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; + + drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12); + drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12); + drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11); + drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12); + + for (int var13 = 0; var13 < lines.length; ++var13) { + String var14 = lines[var13]; + + if (var13 == 0) { + var14 = '\u00a7' + Integer.toHexString(15) + var14; + } else { + var14 = "\u00a77" + var14; + } + + fontRendererObj.drawStringWithShadow(var14, var6, var7, -1); + + if (var13 == 0) { + var7 += 2; + } + + var7 += 10; + } + + zLevel = 0.0F; + itemRender.zLevel = 0.0F; + } + + GL11.glPopAttrib(); + } + + protected 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) { + if (i == 0) { + list.set(i, stack.getRarity().rarityColor + (String) list.get(i)); + } else { + list.set(i, EnumChatFormatting.GRAY + (String) list.get(i)); + } + } + + drawTooltip(x, y, Joiner.on("\n").join(list)); + } + + protected 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 6e75ba734..42a314337 100644 --- a/src/main/java/storagecraft/gui/GuiController.java +++ b/src/main/java/storagecraft/gui/GuiController.java @@ -1,50 +1,47 @@ package storagecraft.gui; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import storagecraft.container.ContainerController; import storagecraft.tile.TileController; -public class GuiController extends GuiContainer { - public static final ResourceLocation CONTROLLER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/controller.png"); - +public class GuiController extends GuiBase { private TileController controller; public GuiController(ContainerController container, TileController controller) { - super(container); + super(container, 176, 190); this.controller = controller; - - this.xSize = 176; - this.ySize = 190; } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(CONTROLLER_RESOURCE); + public void init(int x, int y) { + } - int x = (this.width - xSize) / 2; - int y = (this.height - ySize) / 2; + @Override + public void update(int x, int y) { + } + + @Override + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/controller.png"); drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - int bx = 17; - int by = 25; - int bw = 16; - int bh = 58; + int barX = 17; + int barY = 25; + int barWidth = 16; + int barHeight = 58; - int nbh = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) bh); + int barHeightNew = (int) ((float) controller.getEnergyStored(null) / (float) controller.getMaxEnergyStored(null) * (float) barHeight); - drawTexturedModalRect(x + bx, y + by + bh - nbh, 178, 0, bw, nbh); + drawTexturedModalRect(x + barX, y + barY + barHeight - barHeightNew, 178, 0, barWidth, barHeightNew); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:controller"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752); + public void drawForeground(int mouseX, int mouseY) { + drawString(7, 7, t("gui.storagecraft:controller")); + drawString(7, 96, t("container.inventory")); - fontRendererObj.drawString(String.format(StatCollector.translateToLocal("misc.storagecraft:energyStored"), controller.getEnergyStored(null), controller.getMaxEnergyStored(null)), 45, 24, 4210752); - fontRendererObj.drawString(String.format(StatCollector.translateToLocal("misc.storagecraft:energyUsage"), controller.getEnergyUsage()), 45, 44, 4210752); + drawString(45, 24, t("misc.storagecraft:energyStored", controller.getEnergyStored(null), controller.getMaxEnergyStored(null))); + drawString(45, 44, t("misc.storagecraft:energyUsage", controller.getEnergyUsage())); } } diff --git a/src/main/java/storagecraft/gui/GuiDrive.java b/src/main/java/storagecraft/gui/GuiDrive.java index 8a8125f90..59ad24035 100644 --- a/src/main/java/storagecraft/gui/GuiDrive.java +++ b/src/main/java/storagecraft/gui/GuiDrive.java @@ -1,32 +1,25 @@ package storagecraft.gui; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import storagecraft.container.ContainerDrive; import storagecraft.tile.TileDrive; public class GuiDrive extends GuiMachine { - public static final ResourceLocation DRIVE_RESOURCE = new ResourceLocation("storagecraft:textures/gui/drive.png"); - public GuiDrive(ContainerDrive container, TileDrive drive) { - super(container, drive); - - this.xSize = 176; - this.ySize = 190; + super(container, 176, 190, drive); } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(DRIVE_RESOURCE); + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/drive.png"); - drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + public void drawForeground(int mouseX, int mouseY) { + super.drawForeground(mouseX, mouseY); - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:drive"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752); + 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 b90d15fea..28eb7df76 100644 --- a/src/main/java/storagecraft/gui/GuiExporter.java +++ b/src/main/java/storagecraft/gui/GuiExporter.java @@ -1,8 +1,6 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import storagecraft.StorageCraft; import storagecraft.container.ContainerExporter; import storagecraft.network.MessageExporterUpdate; @@ -10,69 +8,49 @@ import storagecraft.tile.TileExporter; import storagecraft.util.InventoryUtils; public class GuiExporter extends GuiMachine { - public static final ResourceLocation EXPORTER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/exporter.png"); - private TileExporter exporter; private GuiButton compareNBT; private GuiButton compareDamage; public GuiExporter(ContainerExporter container, TileExporter exporter) { - super(container, exporter); - - this.xSize = 176; - this.ySize = 186; + super(container, 176, 186, exporter); this.exporter = exporter; } @Override - public void initGui() { - super.initGui(); - - int x = (this.width - xSize) / 2; - int y = (this.height - ySize) / 2; + public void init(int x, int y) { + super.init(x, y); buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, "")); buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, "")); } @Override - public void updateScreen() { - super.updateScreen(); + public void update(int x, int y) { + super.update(x, y); - compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT); - compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE); - } + compareNBT.displayString = t("misc.storagecraft:compareNBT") + ": "; + compareNBT.displayString += t("misc.storagecraft:" + ((exporter.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off")); - private String getTextForCompareToggle(String which, int flag) { - StringBuilder builder = new StringBuilder(); - - builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which)); - builder.append(": "); - - if ((exporter.getCompareFlags() & flag) == flag) { - builder.append(StatCollector.translateToLocal("misc.storagecraft:on")); - } else { - builder.append(StatCollector.translateToLocal("misc.storagecraft:off")); - } - - return builder.toString(); + compareDamage.displayString = t("misc.storagecraft:compareDamage") + ": "; + compareDamage.displayString += t("misc.storagecraft:" + ((exporter.getCompareFlags() & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE ? "on" : "off")); } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(EXPORTER_RESOURCE); + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/exporter.png"); - drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + public void drawForeground(int mouseX, int mouseY) { + super.drawForeground(mouseX, mouseY); - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:exporter"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 93, 4210752); + drawString(7, 7, t("gui.storagecraft:exporter")); + drawString(7, 93, t("container.inventory")); } @Override diff --git a/src/main/java/storagecraft/gui/GuiGrid.java b/src/main/java/storagecraft/gui/GuiGrid.java index 9115ef261..16d37a315 100644 --- a/src/main/java/storagecraft/gui/GuiGrid.java +++ b/src/main/java/storagecraft/gui/GuiGrid.java @@ -1,9 +1,6 @@ package storagecraft.gui; import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import storagecraft.StorageCraft; @@ -14,28 +11,22 @@ import storagecraft.tile.TileController; import storagecraft.tile.TileGrid; public class GuiGrid extends GuiMachine { - public static final ResourceLocation GRID_RESOURCE = new ResourceLocation("storagecraft:textures/gui/grid.png"); - private ContainerGrid container; private TileGrid grid; + private int hoveringSlot; private int offset; - private int hoveringSlot; - public GuiGrid(ContainerGrid container, TileGrid grid) { - super(container, grid); + super(container, 176, 190, grid); this.container = container; this.grid = grid; - - this.xSize = 176; - this.ySize = 190; } @Override - public void updateScreen() { - super.updateScreen(); + public void update(int x, int y) { + super.update(x, y); int wheel = Mouse.getDWheel(); @@ -50,7 +41,7 @@ public class GuiGrid extends GuiMachine { } } - public int getMaxOffset() { + private int getMaxOffset() { if (!grid.isConnected()) { return 0; } @@ -60,7 +51,7 @@ public class GuiGrid extends GuiMachine { return max < 0 ? 0 : max; } - public boolean canScroll(int delta) { + private boolean canScroll(int delta) { if (offset + delta < 0) { return false; } @@ -68,22 +59,27 @@ public class GuiGrid extends GuiMachine { return offset + delta <= getMaxOffset(); } - @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(GRID_RESOURCE); + private boolean isHoveringOverValidSlot() { + return grid.isConnected() && isHoveringOverSlot() && hoveringSlot < grid.getController().getItems().size(); + } - drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); + private boolean isHoveringOverSlot() { + return hoveringSlot >= 0; } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/grid.png"); - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:grid"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 96, 4210752); + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + } - int mx = mouseX - ((this.width - xSize) / 2); - int my = mouseY - ((this.height - ySize) / 2); + @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")); int x = 8; int y = 20; @@ -94,17 +90,15 @@ public class GuiGrid extends GuiMachine { for (int i = 0; i < 9 * 4; ++i) { if (grid.isConnected() && slot < grid.getController().getItems().size()) { - ItemStack stack = grid.getController().getItems().get(slot).toItemStack(); - - itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y); - itemRender.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack, x, y); + drawItem(x, y, grid.getController().getItems().get(slot).toItemStack(), true); } - if ((mx >= x && mx <= x + 16 && my >= y && my <= y + 16) || !grid.isConnected()) { + if ((mouseX >= x && mouseX <= x + 16 && mouseY >= y && mouseY <= y + 16) || !grid.isConnected()) { hoveringSlot = slot; int color = grid.isConnected() ? -2130706433 : 0xFF5B5B5B; + // @TODO: make it so it renders over the item drawGradientRect(x, y, x + 16, y + 16, color, color); } @@ -119,18 +113,10 @@ public class GuiGrid extends GuiMachine { } if (isHoveringOverValidSlot()) { - renderToolTip(grid.getController().getItems().get(hoveringSlot).toItemStack(), mx, my); + drawTooltip(mouseX, mouseY, grid.getController().getItems().get(hoveringSlot).toItemStack()); } } - private boolean isHoveringOverValidSlot() { - return grid.isConnected() && isHoveringOverSlot() && hoveringSlot < grid.getController().getItems().size(); - } - - private boolean isHoveringOverSlot() { - return hoveringSlot >= 0; - } - @Override public void mouseClicked(int mouseX, int mouseY, int clickedButton) { super.mouseClicked(mouseX, mouseY, clickedButton); diff --git a/src/main/java/storagecraft/gui/GuiImporter.java b/src/main/java/storagecraft/gui/GuiImporter.java index 6c12250c1..082baabc6 100644 --- a/src/main/java/storagecraft/gui/GuiImporter.java +++ b/src/main/java/storagecraft/gui/GuiImporter.java @@ -1,8 +1,6 @@ package storagecraft.gui; import net.minecraft.client.gui.GuiButton; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import storagecraft.StorageCraft; import storagecraft.container.ContainerImporter; import storagecraft.network.MessageImporterUpdate; @@ -10,8 +8,6 @@ import storagecraft.tile.TileImporter; import storagecraft.util.InventoryUtils; public class GuiImporter extends GuiMachine { - public static final ResourceLocation IMPORTER_RESOURCE = new ResourceLocation("storagecraft:textures/gui/importer.png"); - private TileImporter importer; private GuiButton compareNBT; @@ -19,20 +15,14 @@ public class GuiImporter extends GuiMachine { private GuiButton mode; public GuiImporter(ContainerImporter container, TileImporter importer) { - super(container, importer); - - this.xSize = 176; - this.ySize = 201; + super(container, 176, 201, importer); this.importer = importer; } @Override - public void initGui() { - super.initGui(); - - int x = (this.width - xSize) / 2; - int y = (this.height - ySize) / 2; + public void init(int x, int y) { + super.init(x, y); buttonList.add(compareNBT = new GuiButton(1, x + 7, y + 41, 100, 20, "")); buttonList.add(compareDamage = new GuiButton(2, x + 7, y + 63, 120, 20, "")); @@ -40,42 +30,31 @@ public class GuiImporter extends GuiMachine { } @Override - public void updateScreen() { - super.updateScreen(); + public void update(int x, int y) { + super.update(x, y); - compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT); - compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE); - mode.displayString = StatCollector.translateToLocal("misc.storagecraft:importer.mode." + importer.getMode().id); - } + compareNBT.displayString = t("misc.storagecraft:compareNBT") + ": "; + compareNBT.displayString += t("misc.storagecraft:" + ((importer.getCompareFlags() & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT ? "on" : "off")); - private String getTextForCompareToggle(String which, int flag) { - StringBuilder builder = new StringBuilder(); + compareDamage.displayString = t("misc.storagecraft:compareDamage") + ": "; + compareDamage.displayString += t("misc.storagecraft:" + ((importer.getCompareFlags() & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE ? "on" : "off")); - builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which)); - builder.append(": "); - - if ((importer.getCompareFlags() & flag) == flag) { - builder.append(StatCollector.translateToLocal("misc.storagecraft:on")); - } else { - builder.append(StatCollector.translateToLocal("misc.storagecraft:off")); - } - - return builder.toString(); + mode.displayString = t("misc.storagecraft:importer.mode." + importer.getMode().id); } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(IMPORTER_RESOURCE); + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/importer.png"); - drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + public void drawForeground(int mouseX, int mouseY) { + super.drawForeground(mouseX, mouseY); - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 108, 4210752); + drawString(7, 7, t("gui.storagecraft:importer")); + drawString(7, 108, t("container.inventory")); } @Override diff --git a/src/main/java/storagecraft/gui/GuiMachine.java b/src/main/java/storagecraft/gui/GuiMachine.java index 2b90d8749..879a05b2c 100644 --- a/src/main/java/storagecraft/gui/GuiMachine.java +++ b/src/main/java/storagecraft/gui/GuiMachine.java @@ -1,52 +1,45 @@ package storagecraft.gui; -import java.util.ArrayList; -import java.util.List; import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.init.Items; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraft.util.StatCollector; import storagecraft.StorageCraft; import storagecraft.network.MessageRedstoneModeUpdate; import storagecraft.tile.TileMachine; -public abstract class GuiMachine extends GuiContainer { +public abstract class GuiMachine extends GuiBase { private TileMachine machine; - private int bx; - private int by = 6; - private int bw = 20; - private int bh = 20; + public static final ItemStack REDSTONE_MODE_ITEM = new ItemStack(Items.redstone, 1); - public GuiMachine(Container container, TileMachine machine) { - super(container); + private int redstoneModeX; + private int redstoneModeY = 6; + private int redstoneModeWidth = 20; + private int redstoneModeHeight = 20; - this.bx = xSize - 1; + public GuiMachine(Container container, int w, int h, TileMachine machine) { + super(container, w, h); + + this.redstoneModeX = w - 1; this.machine = machine; } @Override - public void initGui() { - super.initGui(); - - buttonList.add(new GuiButton(0, ((this.width - xSize) / 2) + bx, ((this.height - ySize) / 2) + by, bw, bh, "")); + public void init(int x, int y) { + buttonList.add(new GuiButton(0, x + redstoneModeX, y + redstoneModeY, redstoneModeWidth, redstoneModeHeight, "")); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - int mx = mouseX - ((this.width - xSize) / 2); - int my = mouseY - ((this.height - ySize) / 2); + public void update(int x, int y) { + } - itemRender.renderItemIntoGUI(fontRendererObj, mc.getTextureManager(), new ItemStack(Items.redstone, 1), bx + 2, by + 1); + @Override + public void drawForeground(int mouseX, int mouseY) { + drawItem(redstoneModeX + 2, redstoneModeY + 1, REDSTONE_MODE_ITEM); - if (mx >= bx && mx <= bx + bw && my >= by && my <= by + bh) { - List lines = new ArrayList(); - - lines.add(StatCollector.translateToLocal("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id)); - - drawHoveringText(lines, mx, my, fontRendererObj); + if (mouseX >= redstoneModeX && mouseX <= redstoneModeX + redstoneModeWidth && mouseY >= redstoneModeY && mouseY <= redstoneModeY + redstoneModeHeight) { + drawTooltip(mouseX, mouseY, t("misc.storagecraft:redstoneMode." + machine.getRedstoneMode().id)); } } diff --git a/src/main/java/storagecraft/gui/GuiStorageProxy.java b/src/main/java/storagecraft/gui/GuiStorageProxy.java index ccad01557..0acfc6f1b 100644 --- a/src/main/java/storagecraft/gui/GuiStorageProxy.java +++ b/src/main/java/storagecraft/gui/GuiStorageProxy.java @@ -1,29 +1,25 @@ package storagecraft.gui; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; import storagecraft.container.ContainerStorageProxy; import storagecraft.tile.TileStorageProxy; public class GuiStorageProxy extends GuiMachine { - public static final ResourceLocation STORAGE_PROXY_RESOURCE = new ResourceLocation("storagecraft:textures/gui/storageProxy.png"); - public GuiStorageProxy(ContainerStorageProxy container, TileStorageProxy storageProxy) { - super(container, storageProxy); + super(container, 176, 131, storageProxy); } @Override - protected void drawGuiContainerBackgroundLayer(float renderPartialTicks, int mouseX, int mouseY) { - mc.getTextureManager().bindTexture(STORAGE_PROXY_RESOURCE); + public void drawBackground(int x, int y, int mouseX, int mouseY) { + bindTexture("gui/storageProxy.png"); - drawTexturedModalRect((this.width - xSize) / 2, (this.height - ySize) / 2, 0, 0, xSize, ySize); + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + public void drawForeground(int mouseX, int mouseY) { + super.drawForeground(mouseX, mouseY); - fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:storageProxy"), 7, 7, 4210752); - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 39, 4210752); + drawString(7, 7, t("gui.storagecraft:storageProxy")); + drawString(7, 39, t("container.inventory")); } }