GUI refactor

This commit is contained in:
Raoul Van den Berge
2015-12-20 11:39:19 +01:00
parent 414d40499b
commit bbcce0598f
8 changed files with 326 additions and 193 deletions

View File

@@ -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);
}
}

View File

@@ -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()));
}
}

View File

@@ -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"));
}
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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<String> lines = new ArrayList<String>();
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));
}
}

View File

@@ -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"));
}
}