aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/craftgui/minecraft/control
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
commit869c206c4fcc8001bd2e1d66f704290331813835 (patch)
tree96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/craftgui/minecraft/control
parentec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff)
downloadGT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip
Initial Commit
Diffstat (limited to 'src/Java/binnie/craftgui/minecraft/control')
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java161
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java113
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlHelp.java41
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java25
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlImage.java25
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlInfo.java38
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java98
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java223
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java14
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java108
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlPowerSystem.java39
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlProgress.java30
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlProgressBase.java100
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlide.java113
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlot.java221
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotArray.java76
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotBase.java77
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlSlotCharge.java43
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlTabIcon.java47
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/ControlUser.java41
-rw-r--r--src/Java/binnie/craftgui/minecraft/control/EnumHighlighting.java28
21 files changed, 1661 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java
new file mode 100644
index 0000000000..0337b154c1
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlEnergyBar.java
@@ -0,0 +1,161 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.TileEntityMachine;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.IProcess;
+import binnie.core.machines.power.PowerInfo;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import net.minecraft.inventory.IInventory;
+import org.lwjgl.opengl.GL11;
+
+public class ControlEnergyBar
+ extends Control
+ implements ITooltip
+{
+ public static boolean isError;
+ private Position direction;
+
+ public ControlEnergyBar(IWidget parent, int x, int y, int width, int height, Position direction)
+ {
+ super(parent, x, y, width, height);
+ this.direction = direction;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public IPoweredMachine getClientPower()
+ {
+ IInventory inventory = Window.get(this).getInventory();
+ TileEntityMachine machine = (TileEntityMachine)((inventory instanceof TileEntityMachine) ? inventory : null);
+ if (machine == null) {
+ return null;
+ }
+ IPoweredMachine clientPower = (IPoweredMachine)machine.getMachine().getInterface(IPoweredMachine.class);
+ return clientPower;
+ }
+
+ public float getPercentage()
+ {
+ float percentage = 100.0F * getStoredEnergy() / getMaxEnergy();
+ if (percentage > 100.0F) {
+ percentage = 100.0F;
+ }
+ return percentage;
+ }
+
+ private float getStoredEnergy()
+ {
+ return Window.get(this).getContainer().getPowerInfo().getStoredEnergy();
+ }
+
+ private float getMaxEnergy()
+ {
+ return Window.get(this).getContainer().getPowerInfo().getMaxEnergy();
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.add((int)getPercentage() + "% charged");
+
+ tooltip.add(getStoredEnergy() + "/" + getMaxEnergy() + " RF");
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ tooltip.add("Energy Bar");
+ tooltip.add("Current: " + getStoredEnergy() + " RF (" + (int)getPercentage() + "%)");
+ tooltip.add("Capacity: " + getMaxEnergy() + " RF");
+
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, Window.get(this).getInventory());
+ if (process != null) {
+ tooltip.add("Usage: " + (int)process.getEnergyPerTick() + " RF");
+ }
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarBack, getArea());
+
+ float percentage = getPercentage() / 100.0F;
+
+ CraftGUI.Render.colour(getColourFromPercentage(percentage));
+
+ IArea area = getArea();
+ switch (1.$SwitchMap$binnie$craftgui$core$geometry$Position[this.direction.ordinal()])
+ {
+ case 1:
+ case 2:
+ float height = area.size().y() * percentage;
+ area.setSize(new IPoint(area.size().x(), height));
+
+ break;
+ case 3:
+ case 4:
+ float width = area.size().x() * percentage;
+ area.setSize(new IPoint(width, area.size().y()));
+ }
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (isError)
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlow, area);
+
+ GL11.glColor3d(1.0D, 1.0D, 1.0D);
+
+ CraftGUI.Render.texture(CraftGUITexture.EnergyBarGlass, getArea());
+ }
+
+ public void onRenderForeground()
+ {
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ else if (isError)
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ }
+
+ public int getColourFromPercentage(float percentage)
+ {
+ int colour = 16777215;
+ if (percentage > 0.5D)
+ {
+ int r = (int)((1.0D - 2.0D * (percentage - 0.5D)) * 255.0D);
+ colour = (r << 16) + 65280;
+ }
+ else
+ {
+ int g = (int)(255.0F * (2.0F * percentage));
+ colour = 16711680 + (g << 8);
+ }
+ return colour;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java
new file mode 100644
index 0000000000..6027371297
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlErrorState.java
@@ -0,0 +1,113 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.machines.power.ErrorState;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.CustomSlot;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.List;
+import java.util.Map;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class ControlErrorState
+ extends Control
+ implements ITooltip
+{
+ private ErrorState errorState;
+
+ public void onRenderBackground()
+ {
+ Object texture = CraftGUITexture.StateWarning;
+ if (this.errorState == null) {
+ texture = CraftGUITexture.StateNone;
+ } else if (this.type == 0) {
+ texture = CraftGUITexture.StateError;
+ }
+ CraftGUI.Render.texture(texture, IPoint.ZERO);
+
+ super.onRenderBackground();
+ }
+
+ public ErrorState getError()
+ {
+ return Window.get(this).getContainer().getErrorState();
+ }
+
+ public final void onUpdateClient()
+ {
+ this.errorState = getError();
+ this.type = Window.get(this).getContainer().getErrorType();
+
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).clear();
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).clear();
+ ControlLiquidTank.tankError.clear();
+ ControlEnergyBar.isError = false;
+ if ((!isMouseOver()) || (this.errorState == null)) {
+ return;
+ }
+ ControlEnergyBar.isError = this.errorState.isPowerError();
+ if (this.errorState.isItemError()) {
+ for (int slot : this.errorState.getData())
+ {
+ int id = -1;
+ for (CustomSlot cslot : Window.get(this).getContainer().getCustomSlots()) {
+ if ((!(cslot.inventory instanceof InventoryPlayer)) && (cslot.getSlotIndex() == slot)) {
+ id = cslot.slotNumber;
+ }
+ }
+ if (id >= 0) {
+ if (this.type == 0) {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Error)).add(Integer.valueOf(id));
+ } else {
+ ((List)ControlSlot.highlighting.get(EnumHighlighting.Warning)).add(Integer.valueOf(id));
+ }
+ }
+ }
+ }
+ if (this.errorState.isTankError()) {
+ for (int slot : this.errorState.getData()) {
+ ControlLiquidTank.tankError.add(Integer.valueOf(slot));
+ }
+ }
+ }
+
+ private int type = 0;
+
+ public ControlErrorState(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void getTooltip(Tooltip tooltipOrig)
+ {
+ MinecraftTooltip tooltip = (MinecraftTooltip)tooltipOrig;
+ if (this.errorState != null)
+ {
+ if (this.type == 0) {
+ tooltip.setType(MinecraftTooltip.Type.Error);
+ } else {
+ tooltip.setType(MinecraftTooltip.Type.Warning);
+ }
+ tooltip.add(this.errorState.toString());
+ if (this.errorState.getTooltip().length() > 0) {
+ tooltip.add(this.errorState.getTooltip());
+ }
+ }
+ }
+
+ public ErrorState getErrorState()
+ {
+ return this.errorState;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java
new file mode 100644
index 0000000000..d2027747f2
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlHelp.java
@@ -0,0 +1,41 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlHelp
+ extends Control
+ implements ITooltip
+{
+ public ControlHelp(IWidget parent, float x, float y)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.HelpButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.Help);
+ tooltip.add("Help");
+ tooltip.add("To activate help tooltips,");
+ tooltip.add("hold down the tab key and");
+ tooltip.add("mouse over controls.");
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ getTooltip(tooltip);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java
new file mode 100644
index 0000000000..071e8ee888
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlIconDisplay.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import net.minecraft.util.IIcon;
+
+public class ControlIconDisplay
+ extends Control
+{
+ private IIcon icon = null;
+
+ public ControlIconDisplay(IWidget parent, float x, float y, IIcon icon)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ this.icon = icon;
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.iconItem(IPoint.ZERO, this.icon);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlImage.java b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java
new file mode 100644
index 0000000000..0d08626852
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlImage.java
@@ -0,0 +1,25 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.Texture;
+
+public class ControlImage
+ extends Control
+{
+ private Object key = null;
+
+ public ControlImage(IWidget parent, float x, float y, Texture text)
+ {
+ super(parent, x, y, text.w(), text.h());
+ this.key = text;
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.texture(this.key, IPoint.ZERO);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java
new file mode 100644
index 0000000000..8d9c8e95b6
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlInfo.java
@@ -0,0 +1,38 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+
+public class ControlInfo
+ extends Control
+ implements ITooltip
+{
+ private String info;
+
+ public ControlInfo(IWidget parent, float x, float y, String info)
+ {
+ super(parent, x, y, 16.0F, 16.0F);
+ addAttribute(Attribute.MouseOver);
+ this.info = info;
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(CraftGUITexture.InfoButton, getArea());
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ tooltip.setType(Tooltip.Type.Information);
+ tooltip.add("Info");
+ tooltip.add(this.info);
+ tooltip.setMaxWidth(200);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java
new file mode 100644
index 0000000000..8db438bcc3
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlItemDisplay.java
@@ -0,0 +1,98 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.BinnieCore;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.minecraft.Window;
+import net.minecraft.client.Minecraft;
+import net.minecraft.item.ItemStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlItemDisplay
+ extends Control
+ implements ITooltip
+{
+ private ItemStack itemStack = null;
+ public boolean hastooltip = false;
+
+ public void setTooltip()
+ {
+ this.hastooltip = true;
+ addAttribute(Attribute.MouseOver);
+ }
+
+ public ControlItemDisplay(IWidget parent, float x, float y)
+ {
+ this(parent, x, y, 16.0F);
+ }
+
+ public ControlItemDisplay(IWidget parent, float f, float y, ItemStack stack, boolean tooltip)
+ {
+ this(parent, f, y, 16.0F);
+ setItemStack(stack);
+ if (tooltip) {
+ setTooltip();
+ }
+ }
+
+ public ControlItemDisplay(IWidget parent, float x, float y, float size)
+ {
+ super(parent, x, y, size, size);
+ }
+
+ public void onRenderBackground()
+ {
+ IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition());
+ if ((relativeToWindow.x() > Window.get(this).getSize().x() + 100.0F) || (relativeToWindow.y() > Window.get(this).getSize().y() + 100.0F)) {
+ return;
+ }
+ if (this.itemStack != null) {
+ if (getSize().x() != 16.0F)
+ {
+ GL11.glPushMatrix();
+ float scale = getSize().x() / 16.0F;
+ GL11.glScalef(scale, scale, 1.0F);
+ BinnieCore.proxy.getMinecraftInstance();float phase = (float)Minecraft.getSystemTime() / 20.0F;
+ CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating);
+ GL11.glPopMatrix();
+ }
+ else
+ {
+ CraftGUI.Render.item(IPoint.ZERO, this.itemStack, this.rotating);
+ }
+ }
+ }
+
+ public void setItemStack(ItemStack itemStack)
+ {
+ this.itemStack = itemStack;
+ }
+
+ public ItemStack getItemStack()
+ {
+ return this.itemStack;
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if ((this.hastooltip) && (this.itemStack != null)) {
+ tooltip.add(this.itemStack.getTooltip(((Window)getSuperParent()).getPlayer(), false));
+ }
+ super.getTooltip(tooltip);
+ }
+
+ private boolean rotating = false;
+
+ public void setRotating()
+ {
+ this.rotating = true;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java
new file mode 100644
index 0000000000..d69c61136d
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlLiquidTank.java
@@ -0,0 +1,223 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.core.BinnieCore;
+import binnie.core.machines.Machine;
+import binnie.core.machines.inventory.MachineSide;
+import binnie.core.machines.inventory.TankSlot;
+import binnie.core.machines.inventory.Validator;
+import binnie.core.machines.power.ITankMachine;
+import binnie.core.machines.power.TankInfo;
+import binnie.core.proxy.BinnieProxy;
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.Attribute;
+import binnie.craftgui.core.CraftGUI;
+import binnie.craftgui.core.ITooltip;
+import binnie.craftgui.core.ITopLevelWidget;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.Tooltip;
+import binnie.craftgui.core.Tooltip.Type;
+import binnie.craftgui.core.geometry.IArea;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.core.renderer.Renderer;
+import binnie.craftgui.events.EventMouse.Down;
+import binnie.craftgui.events.EventMouse.Down.Handler;
+import binnie.craftgui.minecraft.ContainerCraftGUI;
+import binnie.craftgui.minecraft.GuiCraftGUI;
+import binnie.craftgui.minecraft.MinecraftTooltip;
+import binnie.craftgui.minecraft.MinecraftTooltip.Type;
+import binnie.craftgui.minecraft.Window;
+import binnie.craftgui.resource.minecraft.CraftGUITexture;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+public class ControlLiquidTank
+ extends Control
+ implements ITooltip
+{
+ public static List<Integer> tankError = new ArrayList();
+ private int tankID = 0;
+ private boolean horizontal = false;
+
+ public ControlLiquidTank(IWidget parent, int x, int y)
+ {
+ this(parent, x, y, false);
+ }
+
+ public ControlLiquidTank(IWidget parent, int x, int y, boolean horizontal)
+ {
+ super(parent, x, y, horizontal ? 60.0F : 18.0F, horizontal ? 18.0F : 60.0F);
+ this.horizontal = horizontal;
+ addAttribute(Attribute.MouseOver);
+
+ addSelfEventHandler(new EventMouse.Down.Handler()
+ {
+ public void onEvent(EventMouse.Down event)
+ {
+ if (event.getButton() == 0)
+ {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setByte("id", (byte)ControlLiquidTank.this.tankID);
+ Window.get(ControlLiquidTank.this.getWidget()).sendClientAction("tank-click", nbt);
+ }
+ }
+ });
+ }
+
+ public void setTankID(int tank)
+ {
+ this.tankID = tank;
+ }
+
+ public TankInfo getTank()
+ {
+ return Window.get(this).getContainer().getTankInfo(this.tankID);
+ }
+
+ public boolean isTankValid()
+ {
+ return !getTank().isEmpty();
+ }
+
+ public int getTankCapacity()
+ {
+ return (int)getTank().getCapacity();
+ }
+
+ public void onRenderBackground()
+ {
+ CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTank : CraftGUITexture.LiquidTank, IPoint.ZERO);
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(Tooltip.Type.Help);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (tankError.contains(Integer.valueOf(this.tankID)))
+ {
+ int c = -1442840576 + MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error);
+ CraftGUI.Render.gradientRect(getArea().inset(1), c, c);
+ }
+ else if (getSuperParent().getMousedOverWidget() == this)
+ {
+ if (Window.get(this).getGui().getDraggedItem() != null) {
+ CraftGUI.Render.gradientRect(getArea().inset(1), -1426089575, -1426089575);
+ } else {
+ CraftGUI.Render.gradientRect(getArea().inset(1), -2130706433, -2130706433);
+ }
+ }
+ if (isTankValid())
+ {
+ Object content = null;
+
+ float height = this.horizontal ? 16.0F : 58.0F;
+
+ int squaled = (int)(height * (getTank().getAmount() / getTank().getCapacity()));
+
+
+
+ int yPos = (int)height + 1;
+
+ Fluid fluid = getTank().liquid.getFluid();
+
+ int hex = fluid.getColor(getTank().liquid);
+
+ int r = (hex & 0xFF0000) >> 16;
+ int g = (hex & 0xFF00) >> 8;
+ int b = hex & 0xFF;
+
+ GL11.glColor4f(r / 255.0F, g / 255.0F, b / 255.0F, 1.0F);
+
+ GL11.glEnable(3042);
+
+ GL11.glBlendFunc(770, 771);
+
+ IPoint pos = getAbsolutePosition();
+ IPoint offset = new IPoint(0.0F, height - squaled);
+ IArea limited = getArea().inset(1);
+ if (this.horizontal) {
+ limited.setSize(new IPoint(limited.w() - 1.0F, limited.h()));
+ }
+ CraftGUI.Render.limitArea(new IArea(limited.pos().add(pos).add(offset), limited.size().sub(offset)));
+
+
+ GL11.glEnable(3089);
+
+ BinnieCore.proxy.bindTexture(TextureMap.locationItemsTexture);
+ for (int y = 0; y < height; y += 16) {
+ for (int x = 0; x < (this.horizontal ? 58 : 16); x += 16)
+ {
+ IIcon icon = fluid.getIcon();
+
+ CraftGUI.Render.iconBlock(new IPoint(1 + x, 1 + y), icon);
+ }
+ }
+ GL11.glDisable(3089);
+ GL11.glDisable(3042);
+ }
+ }
+
+ public void onRenderForeground()
+ {
+ CraftGUI.Render.texture(this.horizontal ? CraftGUITexture.HorizontalLiquidTankOverlay : CraftGUITexture.LiquidTankOverlay, IPoint.ZERO);
+ if ((isMouseOver()) && (Window.get(this).getGui().isHelpMode()))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(Tooltip.Type.Help));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ if (tankError.contains(Integer.valueOf(this.tankID)))
+ {
+ IArea area = getArea();
+ CraftGUI.Render.colour(MinecraftTooltip.getOutline(MinecraftTooltip.Type.Error));
+ CraftGUI.Render.texture(CraftGUITexture.Outline, area.outset(1));
+ }
+ }
+
+ public void getHelpTooltip(Tooltip tooltip)
+ {
+ if (getTankSlot() != null)
+ {
+ TankSlot slot = getTankSlot();
+ tooltip.add(slot.getName());
+ tooltip.add("Capacity: " + getTankCapacity() + " mB");
+ tooltip.add("Insert Side: " + MachineSide.asString(slot.getInputSides()));
+ tooltip.add("Extract Side: " + MachineSide.asString(slot.getOutputSides()));
+ if (slot.isReadOnly()) {
+ tooltip.add("Output Only Tank");
+ }
+ tooltip.add("Accepts: " + (slot.getValidator() == null ? "Any Item" : slot.getValidator().getTooltip()));
+
+ return;
+ }
+ }
+
+ public void getTooltip(Tooltip tooltip)
+ {
+ if (isTankValid())
+ {
+ int percentage = (int)(100.0D * getTank().getAmount() / getTankCapacity());
+
+ tooltip.add(getTank().getName());
+
+ tooltip.add(percentage + "% full");
+ tooltip.add((int)getTank().getAmount() + " mB");
+
+
+
+ return;
+ }
+ tooltip.add("Empty");
+ }
+
+ private TankSlot getTankSlot()
+ {
+ ITankMachine tank = (ITankMachine)Machine.getInterface(ITankMachine.class, Window.get(this).getInventory());
+
+ return tank != null ? tank.getTankSlot(this.tankID) : null;
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java
new file mode 100644
index 0000000000..f2a64e3e38
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlMachineProgress.java
@@ -0,0 +1,14 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.Position;
+import binnie.craftgui.resource.Texture;
+
+public class ControlMachineProgress
+ extends ControlProgress
+{
+ public ControlMachineProgress(IWidget parent, int x, int y, Texture base, Texture progress, Position dir)
+ {
+ super(parent, x, y, base, progress, dir);
+ }
+}
diff --git a/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java
new file mode 100644
index 0000000000..f15d102789
--- /dev/null
+++ b/src/Java/binnie/craftgui/minecraft/control/ControlPlayerInventory.java
@@ -0,0 +1,108 @@
+package binnie.craftgui.minecraft.control;
+
+import binnie.craftgui.controls.core.Control;
+import binnie.craftgui.core.IWidget;
+import binnie.craftgui.core.geometry.IPoint;
+import binnie.craftgui.minecraft.InventoryType;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class ControlPlayerInventory
+ extends Control
+{
+ private List<ControlSlot> slots = new ArrayList();
+
+ public ControlPlayerInventory(IWidget parent, boolean wide)
+ {
+ super(parent, (int)(parent.getSize().x() / 2.0F) - (wide ? 110 : 81), (int)parent.getSize().y() - (wide ? 54 : 76) - 12, wide ? 'Ü' : '¢', wide ? 54 : 76);
+ for (int row = 0; row < 3; row++) {
+ for (int column = 0; column < 9; column++)
+ {
+ ControlSlot slot = new ControlSlot(this, (wide ? 58 : 0) + column * 18, row * 18);
+ this.slots.add(slot);
+ }
+ }
+ if (wide) {
+ for (int i1 = 0; i1 < 9; i1++)
+ {
+ ControlSlot slot = new ControlSlot(this, i1 % 3 * 18, i1 / 3 * 18);
+ this.slots.add(slot);
+ }
+ } else {
+ for (int i1 = 0; i1 < 9; i1++)
+ {
+ ControlSlot slot = new ControlSlot(this, i1 * 18, 58.0F);
+ this.slots.add(slot);
+ }
+ }
+ create();
+ }
+
+ public ControlPlayerInventory(IWidget parent)
+ {
+ this(parent, false);
+ }
+
+ public ControlPlayerInventory(IWidget parent, int x, int y)
+ {
+ super(parent, x, y, 54.0F, 220.0F);
+ for (int row = 0; row < 6; row++) {
+ for (int column = 0; column < 6; column++)
+ {
+ ControlSlot slot = new ControlSlot(this, column * 18, row * 18);
+ this.slots.add(slot);
+ }
+