From 1bff3a93da6dd6023fdde75c5aa7bb092fe9e24d Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sat, 7 Mar 2015 23:38:20 -0500 Subject: [PATCH] Just about finished new Side Configuration GUI --- .../java/mekanism/client/gui/GuiMekanism.java | 18 +++ .../client/gui/GuiSideConfiguration.java | 56 +++++++-- .../client/gui/GuiTransporterConfig.java | 2 +- .../client/gui/element/GuiConfigTypeTab.java | 119 +++++++++++++++++- .../mekanism/client/gui/element/GuiGauge.java | 40 ++++-- .../mekanism/gui/elements/GuiEnergyTab.png | Bin 3463 -> 3614 bytes .../mekanism/gui/elements/GuiFluidsTab.png | Bin 3435 -> 3593 bytes .../mekanism/gui/elements/GuiGasesTab.png | Bin 3440 -> 3601 bytes .../mekanism/gui/elements/GuiGaugeSmall.png | Bin 509 -> 3096 bytes .../gui/elements/GuiGaugeStandard.png | Bin 575 -> 3496 bytes .../mekanism/gui/elements/GuiGaugeWide.png | Bin 564 -> 3264 bytes .../mekanism/gui/elements/GuiHeatTab.png | Bin 3580 -> 3724 bytes .../mekanism/gui/elements/GuiItemsTab.png | Bin 3341 -> 3489 bytes .../resources/assets/mekanism/lang/en_US.lang | 1 + 14 files changed, 219 insertions(+), 17 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiMekanism.java b/src/main/java/mekanism/client/gui/GuiMekanism.java index f5d5d81dd..f3233c51f 100644 --- a/src/main/java/mekanism/client/gui/GuiMekanism.java +++ b/src/main/java/mekanism/client/gui/GuiMekanism.java @@ -7,6 +7,7 @@ import java.util.Set; import mekanism.api.transmitters.TransmissionType; import mekanism.client.gui.element.GuiElement; +import mekanism.client.gui.element.GuiGauge; import mekanism.common.SideData; import mekanism.common.base.ISideConfiguration; import mekanism.common.item.ItemConfigurator; @@ -74,6 +75,23 @@ public abstract class GuiMekanism extends GuiContainer implements IGuiWrapper if(tileEntity instanceof ISideConfiguration) { + for(GuiElement element : guiElements) + { + if(element instanceof GuiGauge) + { + int guiWidth = (width - xSize) / 2; + int guiHeight = (height - ySize) / 2; + + if(element.getBounds(guiWidth, guiHeight).contains(xAxis, yAxis)) + { + if(((GuiGauge)element).color != null) + { + drawCreativeTabHoveringText(((GuiGauge)element).color.getName(), xAxis, yAxis); + } + } + } + } + Slot hovering = null; for(int i = 0; i < inventorySlots.inventorySlots.size(); i++) diff --git a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java index bf1bd0d00..5f8ea466c 100644 --- a/src/main/java/mekanism/client/gui/GuiSideConfiguration.java +++ b/src/main/java/mekanism/client/gui/GuiSideConfiguration.java @@ -6,6 +6,8 @@ import java.util.Map; import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.transmitters.TransmissionType; +import mekanism.client.gui.element.GuiConfigTypeTab; +import mekanism.client.gui.element.GuiElement; import mekanism.client.render.MekanismRenderer; import mekanism.client.sound.SoundHandler; import mekanism.common.Mekanism; @@ -24,7 +26,6 @@ import net.minecraft.tileentity.TileEntity; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,14 +36,25 @@ public class GuiSideConfiguration extends GuiMekanism public Map slotPosMap = new HashMap(); public ISideConfiguration configurable; + + public TransmissionType currentType; public GuiSideConfiguration(EntityPlayer player, ISideConfiguration tile) { - super(new ContainerNull(player, (TileEntityContainerBlock)tile)); + super((TileEntityContainerBlock)tile, new ContainerNull(player, (TileEntityContainerBlock)tile)); ySize = 95; configurable = tile; + + for(TransmissionType type : configurable.getConfig().transmissions) + { + guiElements.add(new GuiConfigTypeTab(this, (TileEntity)configurable, type, MekanismUtils.getResource(ResourceType.GUI, "GuiConfiguration.png"))); + } + + currentType = getTopTransmission(); + + updateTabs(); slotPosMap.put(0, new GuiPos(81, 64)); slotPosMap.put(1, new GuiPos(81, 34)); @@ -51,6 +63,34 @@ public class GuiSideConfiguration extends GuiMekanism slotPosMap.put(4, new GuiPos(66, 49)); slotPosMap.put(5, new GuiPos(96, 49)); } + + public TransmissionType getTopTransmission() + { + return configurable.getConfig().transmissions.get(0); + } + + public void updateTabs() + { + int rendered = 0; + + for(GuiElement element : guiElements) + { + if(element instanceof GuiConfigTypeTab) + { + GuiConfigTypeTab tab = (GuiConfigTypeTab)element; + + tab.visible = currentType != tab.transmission; + + if(tab.visible) + { + tab.left = rendered >= 0 && rendered <= 2; + tab.setY(2+((rendered%3)*(26+2))); + } + + rendered++; + } + } + } @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) @@ -91,7 +131,7 @@ public class GuiSideConfiguration extends GuiMekanism int x = slotPosMap.get(i).xPos; int y = slotPosMap.get(i).yPos; - SideData data = configurable.getConfig().getOutput(TransmissionType.ITEM, i); + SideData data = configurable.getConfig().getOutput(currentType, i); if(data.color != EnumColor.GREY) { @@ -116,9 +156,9 @@ public class GuiSideConfiguration extends GuiMekanism int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); - String title = MekanismUtils.localize("gui.configuration.side"); + String title = currentType.localize() + " " + MekanismUtils.localize("gui.config"); fontRendererObj.drawString(title, (xSize/2)-(fontRendererObj.getStringWidth(title)/2), 5, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(TransmissionType.ITEM) ? "On" : "Off"), 53, 17, 0x00CD00); + fontRendererObj.drawString(MekanismUtils.localize("gui.eject") + ": " + (configurable.getConfig().isEjecting(currentType) ? "On" : "Off"), 53, 17, 0x00CD00); fontRendererObj.drawString(MekanismUtils.localize("gui.slots"), 77, 81, 0x787878); for(int i = 0; i < slotPosMap.size(); i++) @@ -126,7 +166,7 @@ public class GuiSideConfiguration extends GuiMekanism int x = slotPosMap.get(i).xPos; int y = slotPosMap.get(i).yPos; - SideData data = configurable.getConfig().getOutput(TransmissionType.ITEM, i); + SideData data = configurable.getConfig().getOutput(currentType, i); if(xAxis >= x && xAxis <= x+14 && yAxis >= y && yAxis <= y+14) { @@ -177,7 +217,7 @@ public class GuiSideConfiguration extends GuiMekanism if(xAxis >= 156 && xAxis <= 170 && yAxis >= 6 && yAxis <= 20) { SoundHandler.playSound("gui.button.press"); - Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.EJECT, Coord4D.get(tile), 0, 0, TransmissionType.ITEM)); + Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.EJECT, Coord4D.get(tile), 0, 0, currentType)); } } @@ -194,7 +234,7 @@ public class GuiSideConfiguration extends GuiMekanism if(xAxis >= x && xAxis <= x+14 && yAxis >= y && yAxis <= y+14) { SoundHandler.playSound("gui.button.press"); - Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.SIDE_DATA, Coord4D.get(tile), button, i, TransmissionType.ITEM)); + Mekanism.packetHandler.sendToServer(new ConfigurationUpdateMessage(ConfigurationPacket.SIDE_DATA, Coord4D.get(tile), button, i, currentType)); } } } diff --git a/src/main/java/mekanism/client/gui/GuiTransporterConfig.java b/src/main/java/mekanism/client/gui/GuiTransporterConfig.java index 3bd63c1f7..b33522d8d 100644 --- a/src/main/java/mekanism/client/gui/GuiTransporterConfig.java +++ b/src/main/java/mekanism/client/gui/GuiTransporterConfig.java @@ -38,7 +38,7 @@ public class GuiTransporterConfig extends GuiMekanism public GuiTransporterConfig(EntityPlayer player, ISideConfiguration tile) { - super(new ContainerNull(player, (TileEntityContainerBlock)tile)); + super((TileEntityContainerBlock)tile, new ContainerNull(player, (TileEntityContainerBlock)tile)); ySize = 95; diff --git a/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java b/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java index b50311fd4..69aa43e87 100644 --- a/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java +++ b/src/main/java/mekanism/client/gui/element/GuiConfigTypeTab.java @@ -1,5 +1,122 @@ package mekanism.client.gui.element; -public class GuiConfigTypeTab { +import mekanism.api.transmitters.TransmissionType; +import mekanism.client.gui.GuiSideConfiguration; +import mekanism.client.gui.IGuiWrapper; +import mekanism.client.sound.SoundHandler; +import mekanism.common.util.MekanismUtils; +import mekanism.common.util.MekanismUtils.ResourceType; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import codechicken.lib.vec.Rectangle4i; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +@SideOnly(Side.CLIENT) +public class GuiConfigTypeTab extends GuiElement +{ + private TileEntity tileEntity; + public TransmissionType transmission; + + private int yPos; + + public boolean visible; + public boolean left; + + public GuiConfigTypeTab(IGuiWrapper gui, TileEntity tile, TransmissionType type, ResourceLocation def) + { + super(getResource(type), gui, def); + + tileEntity = tile; + transmission = type; + } + + private static ResourceLocation getResource(TransmissionType t) + { + return MekanismUtils.getResource(ResourceType.GUI_ELEMENT, "Gui" + t.getTransmission() + "Tab.png"); + } + + public void setY(int y) + { + yPos = y; + } + + @Override + public Rectangle4i getBounds(int guiWidth, int guiHeight) + { + return new Rectangle4i(guiWidth + getLeftBound(false)-4, guiHeight + yPos, 26, 26); + } + + @Override + public void renderBackground(int xAxis, int yAxis, int guiWidth, int guiHeight) + { + if(!visible) + { + return; + } + + mc.renderEngine.bindTexture(RESOURCE); + + guiObj.drawTexturedRect(guiWidth + getLeftBound(false)-4, guiHeight + yPos, 0, left ? 0 : 26, 26, 26); + + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + guiObj.drawTexturedRect(guiWidth + getLeftBound(true), guiHeight + yPos+4, 26, 0, 18, 18); + } + else { + guiObj.drawTexturedRect(guiWidth + getLeftBound(true), guiHeight + yPos+4, 26, 18, 18, 18); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + @Override + public void renderForeground(int xAxis, int yAxis) + { + if(!visible) + { + return; + } + + mc.renderEngine.bindTexture(RESOURCE); + + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + displayTooltip(transmission.localize(), xAxis, yAxis); + } + + mc.renderEngine.bindTexture(defaultLocation); + } + + public int getLeftBound(boolean adjust) + { + return left ? -21+(adjust ? 1 : 0) : 179-(adjust ? 1 : 0); + } + + public int getRightBound(boolean adjust) + { + return left ? -3+(adjust ? 1 : 0) : 197-(adjust ? 1 : 0); + } + + @Override + public void preMouseClicked(int xAxis, int yAxis, int button) {} + + @Override + public void mouseClicked(int xAxis, int yAxis, int button) + { + if(!visible) + { + return; + } + + if(button == 0) + { + if(xAxis >= getLeftBound(true) && xAxis <= getRightBound(true) && yAxis >= yPos+4 && yAxis <= yPos+22) + { + ((GuiSideConfiguration)guiObj).currentType = transmission; + ((GuiSideConfiguration)guiObj).updateTabs(); + SoundHandler.playSound("gui.button.press"); + } + } + } } diff --git a/src/main/java/mekanism/client/gui/element/GuiGauge.java b/src/main/java/mekanism/client/gui/element/GuiGauge.java index c92bf1d79..ac0e4f694 100644 --- a/src/main/java/mekanism/client/gui/element/GuiGauge.java +++ b/src/main/java/mekanism/client/gui/element/GuiGauge.java @@ -1,11 +1,10 @@ package mekanism.client.gui.element; +import mekanism.api.EnumColor; import mekanism.client.gui.IGuiWrapper; import mekanism.client.render.MekanismRenderer; -import mekanism.common.base.IDropperHandler; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import codechicken.lib.vec.Rectangle4i; @@ -14,10 +13,14 @@ public abstract class GuiGauge extends GuiElement { protected int xLocation; protected int yLocation; + + protected int texX; + protected int texY; protected int width; protected int height; + public EnumColor color; protected int number; protected boolean dummy; @@ -32,6 +35,11 @@ public abstract class GuiGauge extends GuiElement width = type.width; height = type.height; + + texX = type.texX; + texY = type.texY; + + color = type.color; number = type.number; } @@ -46,7 +54,7 @@ public abstract class GuiGauge extends GuiElement { mc.renderEngine.bindTexture(RESOURCE); - guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, 0, 0, width, height); + guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, texX, texY, width, height); if(!dummy) { @@ -134,19 +142,37 @@ public abstract class GuiGauge extends GuiElement public static enum Type { - STANDARD(18, 60, 1, "GuiGaugeStandard.png"), - WIDE(66, 50, 4, "GuiGaugeWide.png"), - SMALL(18, 30, 1, "GuiGaugeSmall.png"); + STANDARD(null, 18, 60, 0, 0, 1, "GuiGaugeStandard.png"), + STANDARD_YELLOW(EnumColor.YELLOW, 18, 60, 0, 60, 1, "GuiGaugeStandard.png"), + STANDARD_RED(EnumColor.DARK_RED, 18, 60, 0, 120, 1, "GuiGaugeStandard.png"), + STANDARD_ORANGE(EnumColor.ORANGE, 18, 60, 0, 180, 1, "GuiGaugeStandard.png"), + STANDARD_BLUE(EnumColor.DARK_BLUE, 18, 60, 0, 240, 1, "GuiGaugeStandard.png"), + WIDE(null, 66, 50, 0, 0, 4, "GuiGaugeWide.png"), + WIDE_YELLOW(EnumColor.YELLOW, 66, 50, 0, 50, 4, "GuiGaugeWide.png"), + WIDE_RED(EnumColor.DARK_RED, 66, 50, 0, 100, 4, "GuiGaugeWide.png"), + WIDE_ORANGE(EnumColor.ORANGE, 66, 50, 0, 150, 4, "GuiGaugeWide.png"), + WIDE_BLUE(EnumColor.DARK_BLUE, 66, 50, 0, 200, 4, "GuiGaugeWide.png"), + SMALL(null, 18, 30, 0, 0, 1, "GuiGaugeSmall.png"), + SMALL_YELLOW(EnumColor.YELLOW, 18, 30, 0, 30, 1, "GuiGaugeSmall.png"), + SMALL_RED(EnumColor.DARK_RED, 18, 30, 0, 60, 1, "GuiGaugeSmall.png"), + SMALL_ORANGE(EnumColor.ORANGE, 18, 30, 0, 90, 1, "GuiGaugeSmall.png"), + SMALL_BLUE(EnumColor.DARK_BLUE, 18, 30, 0, 120, 1, "GuiGaugeSmall.png"); + public EnumColor color; public int width; public int height; + public int texX; + public int texY; public int number; public String textureLocation; - private Type(int w, int h, int n, String t) + private Type(EnumColor c, int w, int h, int tx, int ty, int n, String t) { + color = c; width = w; height = h; + texX = tx; + texY = ty; number = n; textureLocation = t; } diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiEnergyTab.png index 01f8170f3ce2412ba80bee03be30a5f88529f816..2893b0927108cdfa76b29031bd3ac5b2bf2bb6c0 100644 GIT binary patch delta 1673 zcmV;426p*}8=f4nAOwHuNkl<%Z-(?ZlP@`EwmSXfL&~`T^0HSOX7c-J~_vc6DP!uthLJTKw?EYlBJ*f zeLCkzR#&p4a&R>HK~JrG(0ga+2z*2WtB3n~ke8+H_RX6&vz>pPo$S%}K^AYbau~v` zR+jbqSr+fy&ZpD-<2%xBXW91l0~_dv<|Mop06W&mYgM z7zt=JJjgoTcGm9=v-WD95lZE+KmREGWs(4aDg-7`R!8v14o9H(_J>pZ9%uemYb9Il zw2I{^_+$Rs+PHs_(vD_;LV!S}0;vlywb9$RZ%_Tb=pRp?KAl>1G>T^aO18G1pXK|* ztkant)Tt{Fbw;CuY|tMSiD7DE{vbf$!U8iBz=gMZ$_Ap(pGpM({@yU_uC2vjdn zYXXSf9}e?@fV@QC{>jhZ6w|YQ?fmv#ktAZ-a4=qHRz33w5LjHG)-iz9{M}Yp$Ibp2 z^}qA=y<&gQfBorXB8X*Cr{5nGmjw6s_ZL4(YZ4$ZQ=rxa5LW@>GGH|6uWWR)e|LK) z`u{QT7iF0D`A4I1(?13b*Vfi%9)Oty2rMp8djg2ykN*Gh;7_fA2>eviJp)m{RlbCf zDtIM8;6ehmCV=vurjh@2#xE}`Pw(ybv$zVdySsl|o^6@{feHj_PXN)cj{(3>zr0&q z|BqvcR>5E}KJ&+bU)&KGrPXR@SFf%Y)4Bi!gI@$H6{tM{wDWKMbi1u=KR>fa(|%lH zTwpvkz8!cxJs1q~y0!1(;XZjG(0qZ~qbqLjjh`r~HE@&&js^*%m9W1zD3V0fb1y*i z|1p0$!ukbjO#m-mJjwp~`_JMiNBJdzVSa}1bjNoG#o*s~fNeYX%nYD^10_EcZo&0OR{rov$#~%Rl?%lhY z>zPS_z~Tb6cL5^M(^)_5cHHF`0UyC1B?W(+`O`di0wyi51gaC5*#bEJB%i9@E{*g@ zP)8C-!F_!DDcGYW5LXN0ClZH3fIzhZlLT<<)~#&W&jn0p_BezH{$8(F^!+2?U%!8T zed5S&+_+H$f7}IlTCzB?k{JXDoLe9gK;F_`IoRCXJoieAR*W-xI+I89J`McM3jXqY z#Cqi~36+g#(?6Q!%lgURW0G8=*`LM% z;_M%N{P>wwVt)DtV5}441quNI)e00{fMpH-#lT`DnAE*UNhS_qeSN(M>f^0|azaRF z{unFh9)4$_+QYXs0+(ALjR7o0VOC;^RzNiW%_xAqYJRNx0hylB|xAefvE&g(KgTAOu7Pa{rdH(=lrEUek@Oy z2V+AU8ym&;bOFv}wUEF<0{=?_hyYJ_`NdvG(3b-|T`7n$gLLU|p`)`B0Rm?V)Sdv! z-vdakffVqurxEmNoFMAP-%)>0AwZydfm##5n>TN=_wV0Ve-ySzfWSfmwI+ZE4<0PE zlU5=?U^xPHCV#T`pg|v|Lm@D)fCMnFnEC`7Bp?Aa z=)-g<1m+cx0Ol1_pFo2IB!C8em=1-&yaE!yykhDTXpn#e(4Y^~p%7x2S3m-oS4@2Z z4HA$58uVd06aw=KNC5MSsZXFm0#n}wSl0gt)F3a1LZDFsOKkycZEZCQ%fS$6n!rl_ z)ZWQsyO(ir`4fR-v%U$q3|!kJa6y3x%%vuPeEWj`f*+FA3A4coj{_OdG=cvB76B4# TIFb3j00000NkvXXu0mjf4bL)U delta 1453 zcmV;e1ycH+9ETgQAOwF>Nkl?3rKkKVLID zt#puf4;DY@rPc>sI)x)}js&`UW!){(nHBr`_3LSSdpq6V+D(7)F|EB2Znsk!k5h_I z?i9;;{o#UiIw@^!JxD+O_{HH(-V-2j3W2Bq_JjZNz^5ntNj8Os2rn{-v z@1*f)nmXO0MyRB}UjJEnXORGbIt2Ektcl={0!N^ahSPH>|<0d$K`>vree{+RW@_4S>ymWfVd18UHVHK{q*n7=*aj#CjKH#i!uLf zHt+h!gyGuS+R_uSk^q6#1sbmaBKTwce>nJaZy*9cr+m*q<5R2@p7yK%*5v zwWN9GKezbRZPn$$aGc^Qz|PK2b+u&z1ZogyyaIoSaeYhxe){F@^7?}@Ac<*2gT&ye1dS^Ef@`UQh)uE@@AptS$raaiy_cx1#sv4 zTNgvsSrRxW0*&7ZcurgtlfZ=#XtW1#_wL;zs4>wOsT;Qm9+P5d@a);Mbno81V{%wc zfWRsO$4A{NM?1kj&!0bEnyY*wP%$siE53jBJ1(9RcK87xZ{ECFx}TK<2&^v9_z)lh zJ-7O~*m0L%1bhU4q#XRw^5=E#1k74q3DhUBv`niC)Wsg&c;2(`f<=8(0{>6(IN6zfpwQFVY$6bGb z$5j?bcCvy1ffEZv1yJ;~Tf3W^nPd>PqV=aL<5t+3X>Uub1Cp2-we2Y=*y+%00000NkvXX Hu0mjf8d%Y4 diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiFluidsTab.png index 2a1c1ad6454bc8252a820bb09e9f8cb742b18670..d8104fda2b29c07d3fde335e5bb3a1cac22acd8b 100644 GIT binary patch delta 1655 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 JPDHLkV1hbH8T|kN delta 1428 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 BliUCR literal 509 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&6|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD+3&Hi3kd3boUoJ?XiS%77I-rtjiJ}cm zFy)moj1COn44x#gf>k&$G<@E{)WGm2@x(zch=Dtw&BxUuT;`5NY1(Q(ORkQ*=wEKohQSUT>E#_^n|&wmLaMbUjTa` zwDA(nT1l*J`N0fWMRv84?bEnze&P)poU@#KFQT-}wc$`ZC#x)J=j17i&o7M84)^Qh zOtPXsZ{d(JE9)YQdByCYs&JRprX{rCF5S7_M-S3#KfCu;tDovao{7+#PixU94;B>& zX#8P)+}%83<9rB~TVz%$f$;3U&TSsHdON>+Oj%DW)#EVj%J|mS?Hg1iOkJn61Fods z?yuGv(`@^`-SF#ivBeF^)#@&~Q%dzurKv^pO%*#zSm=&HK~qX4vfC6AK6C)D^u&T7Q<~y&g8GZp7$i$@|{Js&YxYqrT4BJZBn+4SGb^Q z#P)9$o89G64sI*Flp@xw9I?+;K)^AV(z`!bA+6xB_|ciz39L1;jk)fA|21Q~kgie5 z*)tpRPDr1f?wCY2XWRVF%)lIZ8q};-jr5n2Q4u{g8`8T1h6a`vEsVOij4PjhTK9*Y zpUmg`^q1XbNlPnop{rT>AzN59A#SU96;ojTuQI*wcks z2cbJDnx=y)*SBkeZ?aW1ns zLMPQZlQoVvelSIXGi1x65$3KP#ZTi@yJOLWxHm!aGletxk(mSa`k!5M`zMSN?-lx# zFFj23-0rlK68pfxd`ho-3Mv1LwA@rFe7K@pu^6YZI4o$oB+v6SQ5!fRFcK=kUahu& zm2zsVk_GyhvQ6HeoqO)0kqFKmTV0t?I;7Z`7jB#KE_2@YO5RN9>S{kf$!%&yttJ&^N2Os#iADU ze2f@X=ny6`w?=TbU=4mF4vD^vvcj%S@O!y$1!SHHGOU4}=ZK zu^Y0vzOW3}H@jSjL4e#l&02=V*H$whsSIXH2uMY;O1h@?8vQD#ogU#+H? zIPHYj(3M;zF}2x%RzSmfE)TE4ld6zlq(LtvzywhP!=3K`yIKn{Y%>speOzxW?RBYI zxd})pueF`F@xO^d%+whjh%QY5=nicbu$G9eCA_4|ZF}dl2SG@>z%T?$876aWK`QvO zh{(@ANZ(1_wSaU^v@8QdtAKb>l6@Nyk|s0~eiqUG*$290!(DAA&{#nWs$;9#vFjN5 zc!h7!WU^rzR}2>q)NVMq~5R4Q;C7G(Y_*^p;j7Lq? zollWWT@WuIv9qgnw{Pe-73HM*;7WbxmLWMz1%lte@q*n~mzx$3ZKI3V}Eds8KRnjN{<+oCiZV4p=bEIEdqLJ-Q9X|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD+3&Hi3kaD9+_2XI8gs_e#WAGf*4x_$IS(7~I0UXP zQP+Q@Syi^|#NOAtghjXlyDsfBci>~J4RBfXecvs|@PT9b3^&o?e0Uxrt+K*r!yy8JAsvK&!MydcjCK!|m0~Oy*d*3~%mFD4 z=&vWNRW6)Cph2ch21%DT1BU~jGhZ0cu|Nx6-TGde`aum8q(dB7+~&4-sIa~uDRva( N6Hiw^mvv4FO#lNiXRZJM diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png b/src/main/resources/assets/mekanism/gui/elements/GuiGaugeWide.png index e6f6415d199fa357ac996bafbbc129060d227dfa..21b4227de30b0b57de32776b4f9d2b9a397ba40d 100644 GIT binary patch literal 3264 zcmd^CYc!N=8-CxJF;0_)V#aKT5tB-W%3;W19FmDp&KXSEiJS)Qj6>!n!giL^mKyab zY1b+7xr?&rGJx}Wu=IXN8N zCWVs%0AL%%*7_s>fT9otB#@$m8gbVj0N{c^D=R08l@;D8BFsN9_$&aBGBaJ@hYh>z zG*1homMfT-)n&=Zr`NbTdo}-r`-6+5T)q9-64(6V&A#&Izl7qPhYT9~LtI&3VPPmC z9J(*AlEbjXp`LubKMOvfI9tdMYLuH^ct;Mn`Ze($y}HKvkvEr}Tf;P(j53>lrBCj3 zFX0zc6ltT2-ukTEY*umMVK+6&9t+K7a>bokhlf-mjL1zs`ntnct$ox`{N2n}yCkmcj0(msA!4q5R6j)!Xr-HmicYV-_O|CLffEyHh<*GYa|pI}RzSZYMcU?>SSL zUOv>Y?*rk<#-RhN!Kfvr#0GUo?P=V@?wAu7XG>1^c|3G<+Un5{GdQ&nv+#NG)9&mK zkFp1SqB;lA%<7*p{ijp$ z3N!yA%pIkV^>e#YW6{j1chiU-PmeqPJ`*SH9fce8a|f z=X_OcUvCX_c|{>;Ew?mKi^UM2o--G&!c+^DePTw>eP(ugZxRq zr7xFbyao>*f8^t=dpqNSR}AIPV>-4qwojk22DG9J2`!)=w$u?tvi@n6*0 zla2P*H;bhLGURI_@x{glzjw!|^+uB~#k@O*nY}w(8lL&~q0YQ>{?LS8{Jp!>+U53m z&qK$JoTBgBnNAaXr}4G(__kZBciUIA>y~0Pmd22zWz49j;jXtA;Jl#iWor$#uT!Ev z)U!Y;smyRBS@60Dh`T@qjzxa+(^9*4>Sy1h*ZXf+z}znEvm z@qW=N_U1H0QIxx=zotM-89$o@H372v(i9qz27DskkV{4Deuo8WylVe3*caWF3{mb; z$tCI94#7c7ju(_#lB}VN(FGzgj*`|A*zd3qO?O{f6A^Bl8ZI(Jgm{H0b^~7m*1`XD z5-8wr`Kw8Gi=j9pPn}`1FywdG3^6je-WmqRk=d6Q?`J~b8`sa-asT&;>%+i{SRWhF zZT>43Pn&H0!cwkS1Vb@USE z_`>q?jL_&5S?B_8tvZJIgu*Z&oQFe8DCh$16X^~dfDK0^ilNB#)muAsfjJ<72Ex(Q z)+q!EI!wlUZ~#P+jx_ zroNJ>LZCRuo*5-@VaT%Z=3BBJl31u9ClZz^vX38eM7>r{7tm6h6itAIe$)X-Ch;V0 zmw3hCypblk>?X&6iGU2cd z5zST>LBmN33*~XagiR66k4PWv7spiLN3Tj7iTnEOUq|D~5CFmu68{iP;RQNymVGL{ Tpv6q|GXW?^9IUG?X^DRW9(6Q8 literal 564 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6&6|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD+3&HiGm2{dD2hD^H0GeEi(^Q|t+%%~@-i9nI0Ula zHIY2lyurhW@wJ?4=7Pl=?@K>asXy75cgFI4hMsZqdt0VilEvq&jic*Zwubc>vNV** z*)ei3C@?fIFfcJ(Df`JHf4*bA|DyFA>sdG)Qrl#-VR9i)I4VAHH87Z@o!H0(R14DN z;M&)~zMg@@AsJ2KkFQ)88kJWtv@kNj4Y=|MXn;Ng(}fv|$GO1Tfp&^oGRf^>Qefzn zELsC`0|!IEMCAtuwb2#E&Xmm7jb{Re!>|Dj_EpT>;j)VAGX3EpEO^b}EWa@CAV8gjg*w8#&kuhc{HGFR9y#+_P$U>@cIH5?*h(M;D|LNs~O*wx^g4dR;M}YC+`-ez4)!1U%G4xL5qW95^GbF zfx7nNNh9HLxd6Rhufc*h^(pC5cD^EHcFubGCz|yKlD12%zoC_*;~SID5>}(4P-x9@ z!Yb(2qAwD~MzBDnVM}1Gz%C+OY|vy;{dq3XZBl*&eC84)bs-0r9&@->R$QE%l|^y$ zy~a8n3i0Gfx5GeZUUBh=-}91uX;+sjMgPJjP$el0y)Ywsc%vlo_v(8J$myqkDjZpQ zXyzI)I8;+pBUn*icIhMrFz4|?gqQZ$GJ%-IeNs>e282quUHGb&W<=jgnsa#M`_Y$7 zfc_<&p$~ay4gH)ibs3=G&vGk;}?SF_B)&m!=!Ms z+3rT3SR#`p{lY-$sE@KI(b&eSZM+2`_~!beEpv|JEtf8YW)m{@T4}5xjmn&85EtbO z+1n#8JFqv&*e*~}0fa&ONFl=bD97qv^Lcl$PX&eIa;B-bDaNvmN zZvTn@_>h0c7NVlVoL$rQ)aml&$-0nEb~!+o8eW-~JiRD7^gey#P5+Bl=lA0&^fl!; zEkM3=XB31Din^%g@8WG?aH09kt_c>y*;X!g@MZj0TNfMJPn`wfKL5bMEcLmDE#Z_H zeJ5=w=+*50_wFgCe>L{Lf3<(jHXg$zIg{J6o#&#dl>mKlKhvDdol@4?(N8=0N+cb5 zC(IPRS*!!%`LkZI4~ekS&uee2KiJ0>!Tz1tl1f_|t6sdW3dGbW$G5v~`kC*won$;G zwUIp{JA@U-39pp!Si^~CZWmYH4_*Cm*BKr{PgS8vewz{33J2_1R;bqgd&>`CYnPa>+%d1m)6|H~AVDyFsrZ zql3CAIZU8o({iHst(Z?>4QR*U`$1x&_jMvDtd}<>ZR0c|wjx6JU*`5g zpp=#1jrjo{(gq>3>+0$%9uYEkkay9T&12Yv-C3H~*Vm}~PD)WDNGL@UP+M62vNfu! zsYto-EV&LGLQhF?A%V3zS*$-}UycHrTQiaq>r=;HK31-*@Q0U-3Bl844%&(_68)er zl-uX1E2?EX;Bo3WN8>6}+nJOUDZ*~axqrBy9PTy6vfb$n14uDYgRVtp_qOKm6vIkH zIRn~e62UtVa4jy_4!d|PC5ujx|`}sB5hX|6F}w1piCm|*h7F**5Rbddy)PS z@2%cEIa#Fs+4@I-UZ97B3h+Q4ZlWFnChDJmZMGaq0G4+VNojDBks&~mc)0zaps@d; zqP(T*thb@N(+Z7=5bqfL`Y2#*Y<%iWOFz=^dm}hU8I{>c7I6y9nz$c)CQyd(QeHI` z^NQdJ<<~JlisrDk$fjrx)gEJ%jVQ(%VJu|Y<1&}d6~D94#wYfGZi4*IpL^;<$^I{W Cpmiev delta 1578 zcmV+_2G#kD9sC=x9|V61$4Nv%RCodH+|6zq*BJ)jk@zD@xg5hAd(nk|kN^SF0=(8@pg6yW zqenR3`OcXUcdB2?*)NM9_0rBqeRVF5z;8%kcz&&Cb$M@>ee-|j&FbO9ht)Ut&Z>OO z&Uq8w-L0zGtg7w z`|jI~2POcWo}5*q@t~R=pHzck9T8gPKR^7twPuk3fi47=t*np6p9@YyKc1efT>I&1 z-S9`lrqO4)H2!~N1bcgnBxR5^Kp{Y&Q-LxBSgG{(?b|EsmtDDk|NhFUr>9BtcdETf z-OJDFUcS!zvp%eQ`}zF!pm18Bkbp3soi>4Er7|l72y88|%mB8o=>ipG%wNi6GOkno zIwI6%x85-v4w~2WXx=pT-Q5I+K@%VjJ{ecT(Wsp2odAD8URM)#YJY4FD2vp(P&U-09Eym zzx}BR3j6zugK|u{GqD~J7Pa_EfWWo_y#|0>?8(V#ozCwzWBYXU>HRYw@cAFVuI_#F zWi_47n$&-P|6sh>R|kTV`C_QB?Jw(m0t8kCdJO=>ddjhk>odl0mt+7b|N8rv%gvL? zs2L{YuE2CUU2eBPfIv3_y#|2X1xQ+-#{bEA51%X`J%77Qk7mtqAoB!C|1(V3+uLg& zVwnJe4g@yd2JE2Tja8J}fVs8z)6d6EHqf2`EGK`Z$4}b-V;u3{}pxh}?2oUI2 z;G<|&pZ(!4%irpEx4)_mf1Xu4b(XMS4*`zqIf0*koK}a2hs$Fu5FpTvK(84F*aoAU*%?V5dp_2j@=*=2%03C@2KF73e(!$kTtB+{@TM!65hj z=dFKP{-poqw%>d{Z^r+b15gMM=w6`r3?R4s@=7V$K;BEqBw+$TvV_G`fs5lxP$ChHMGNd7>cH_p4?Q8p$8cO5NVQJ)>CjPQ5jlNxSUOQN{ z_gN-D;PL`x2(VLsZ-48Hxh`Mf+s=P1y?7dPdiT=n=bR@`o>W(_Uabxe4(k6AIBptz z_9qyu2ZXnMhJ6GGTwGu|1gK9*xBEU{%~fSQpN3t={CUrO!1e3bs~0a`G(&*wPq0Xq zkYJ(rzxW^2kp$jFpdA3-<-AKBo1VOk>(j{F<>}L>&FZsf&z74r_Ro+Y=OlkCPzVs{ zR$#Ric3byrwWUYTD}i7#nKb(o2%bNGzH)3bf@B7z=T8tApa0Lm%7Io05ZFqf%mHjw z$-A7K#-AW?bab>b6lm8`h6wo*kTm=pzn(F)kGD*Kz~uyb%>dqXiPx@OTkg7Y<;pVM z&k!JA2AWp_hC+Zqw*tLq0HuF-&#zHZ{q*v=1CWya$rAF)a_$PG7y>j5eh}zX;DZE! zjOlZ4KMg#u1cFksUP|Tw%B{n)%{u`C-3jy_0M;9Oxh+^4ewidJw+D^?yZd9SiNLx* zuK^&p_+GtwwSEoO2@v=|0;|v5zTb=J>Pf>sulfCosGR@-0t5&UAV9PE3VH*RKnqqG cABn*K0VFl*N=f*W?*IS*07*qoM6N<$f|5KS3jhEB diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png b/src/main/resources/assets/mekanism/gui/elements/GuiItemsTab.png index 795251c4b5ac1fcfafc5c34cbcc2d729a2c4fd1c..e427834bc3153c98a15aa88549050bb636340c03 100644 GIT binary patch delta 1547 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