From 51f24f058a6f60db1a450fb9effb58f31605616d Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sat, 26 Oct 2013 00:02:57 -0400 Subject: [PATCH] Worked on that GUI, I think I've got down how this is gonna work --- common/mekanism/client/ClientProxy.java | 2 +- common/mekanism/client/gui/GuiElement.java | 36 ++++++----- .../client/gui/GuiItemStackFilter.java | 5 ++ .../client/gui/GuiLogisticalSorter.java | 59 +++++++++++++----- .../mekanism/client/gui/GuiOreDictFilter.java | 9 +++ common/mekanism/client/gui/GuiRecipeType.java | 4 +- .../client/gui/GuiRedstoneControl.java | 11 ++-- .../client/gui/GuiUpgradeManagement.java | 4 +- common/mekanism/common/CommonProxy.java | 11 +++- common/mekanism/common/Mekanism.java | 2 + .../mekanism/common/block/BlockMachine.java | 14 +++++ ...mStackFilter.java => ContainerFilter.java} | 55 +++++++++------- .../inventory/container/ContainerNull.java | 33 ++++++++++ .../network/PacketLogisticalSorterGui.java | 24 ++++--- .../TileEntityLogisticalSorter.java | 3 + .../mekanism/gui/GuiItemStackFilter.png | Bin 2893 -> 4941 bytes .../mekanism/gui/GuiLogisticalSorter.png | Bin 2893 -> 3309 bytes .../assets/mekanism/gui/GuiOreDictFilter.png | Bin 3358 -> 4941 bytes .../mekanism/gui/GuiPasswordModify copy.png | Bin 0 -> 2840 bytes 19 files changed, 194 insertions(+), 78 deletions(-) create mode 100644 common/mekanism/client/gui/GuiItemStackFilter.java create mode 100644 common/mekanism/client/gui/GuiOreDictFilter.java rename common/mekanism/common/inventory/container/{ContainerItemStackFilter.java => ContainerFilter.java} (67%) create mode 100644 common/mekanism/common/inventory/container/ContainerNull.java create mode 100644 resources/assets/mekanism/gui/GuiPasswordModify copy.png diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 3000e8d8a..7ae76e5fb 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -351,7 +351,7 @@ public class ClientProxy extends CommonProxy case 25: return new GuiRobitRepair(player.inventory, world, x); case 26: - return new GuiLogisticalSorter(player.inventory, (TileEntityLogisticalSorter)tileEntity); + return new GuiLogisticalSorter(player, (TileEntityLogisticalSorter)tileEntity); } return null; diff --git a/common/mekanism/client/gui/GuiElement.java b/common/mekanism/client/gui/GuiElement.java index 5acb158b7..5d4b3cf27 100644 --- a/common/mekanism/client/gui/GuiElement.java +++ b/common/mekanism/client/gui/GuiElement.java @@ -16,16 +16,16 @@ public abstract class GuiElement protected ResourceLocation RESOURCE; - public GuiContainer guiContainer; + public GuiScreen guiObj; public TileEntity tileEntity; public ResourceLocation defaultLocation; - public GuiElement(ResourceLocation resource, GuiContainer gui, TileEntity tile, ResourceLocation def) + public GuiElement(ResourceLocation resource, GuiScreen gui, TileEntity tile, ResourceLocation def) { RESOURCE = resource; - guiContainer = gui; + guiObj = gui; tileEntity = tile; defaultLocation = def; } @@ -35,26 +35,32 @@ public abstract class GuiElement try { Method m = GuiContainer.class.getDeclaredMethod("drawCreativeTabHoveringText", String.class, Integer.TYPE, Integer.TYPE); m.setAccessible(true); - m.invoke(guiContainer, s, xAxis, yAxis); + m.invoke(guiObj, s, xAxis, yAxis); } catch(Exception e) {} } protected void offsetX(int xSize) { - try { - Field f = GuiContainer.class.getDeclaredField("xSize"); - f.setAccessible(true); - f.set(guiContainer, ((Integer)f.get(guiContainer))+xSize); - } catch(Exception e) {} + if(guiObj instanceof GuiContainer) + { + try { + Field f = GuiContainer.class.getDeclaredField("xSize"); + f.setAccessible(true); + f.set(guiObj, ((Integer)f.get(guiObj))+xSize); + } catch(Exception e) {} + } } protected void offsetY(int ySize) { - try { - Field f = GuiContainer.class.getDeclaredField("ySize"); - f.setAccessible(true); - f.set(guiContainer, ((Integer)f.get(guiContainer))+ySize); - } catch(Exception e) {} + if(guiObj instanceof GuiContainer) + { + try { + Field f = GuiContainer.class.getDeclaredField("ySize"); + f.setAccessible(true); + f.set(guiObj, ((Integer)f.get(guiObj))+ySize); + } catch(Exception e) {} + } } protected FontRenderer getFontRenderer() @@ -62,7 +68,7 @@ public abstract class GuiElement try { Field f = GuiScreen.class.getDeclaredField("fontRenderer"); f.setAccessible(true); - return (FontRenderer)f.get(guiContainer); + return (FontRenderer)f.get(guiObj); } catch(Exception e) {} return null; diff --git a/common/mekanism/client/gui/GuiItemStackFilter.java b/common/mekanism/client/gui/GuiItemStackFilter.java new file mode 100644 index 000000000..e5607d6fd --- /dev/null +++ b/common/mekanism/client/gui/GuiItemStackFilter.java @@ -0,0 +1,5 @@ +package mekanism.client.gui; + +public class GuiItemStackFilter { + +} diff --git a/common/mekanism/client/gui/GuiLogisticalSorter.java b/common/mekanism/client/gui/GuiLogisticalSorter.java index 6134f9e41..467285568 100644 --- a/common/mekanism/client/gui/GuiLogisticalSorter.java +++ b/common/mekanism/client/gui/GuiLogisticalSorter.java @@ -1,11 +1,11 @@ package mekanism.client.gui; -import mekanism.common.inventory.container.ContainerItemStackFilter; +import mekanism.common.inventory.container.ContainerNull; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.StatCollector; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.EntityPlayer; import org.lwjgl.opengl.GL11; @@ -17,26 +17,60 @@ public class GuiLogisticalSorter extends GuiMekanism { public TileEntityLogisticalSorter tileEntity; - public GuiLogisticalSorter(InventoryPlayer inventory, TileEntityLogisticalSorter tentity) + public GuiLogisticalSorter(EntityPlayer player, TileEntityLogisticalSorter tentity) { - super(new ContainerItemStackFilter(inventory, tentity)); + super(new ContainerNull(player, tentity)); tileEntity = tentity; - guiElements.add(new GuiRedstoneControl(this, tileEntity, MekanismUtils.getResource(ResourceType.GUI, "GuiLogisticalSorter.png"))); } @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + public boolean doesGuiPauseGame() { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); + return false; + } + + @Override + public void initGui() + { + super.initGui(); + int guiWidth = (width - xSize) / 2; + int guiHeight = (height - ySize) / 2; + + buttonList.clear(); + buttonList.add(new GuiButton(0, guiWidth + 56, guiHeight + 136, 54, 20, "ItemStack")); + buttonList.add(new GuiButton(1, guiWidth + 110, guiHeight + 136, 43, 20, "OreDict")); + } + + @Override + protected void actionPerformed(GuiButton guibutton) + { + super.actionPerformed(guibutton); + + if(guibutton.id == 0) + { + + } + else if(guibutton.id == 1) + { + + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { int xAxis = (mouseX - (width - xSize) / 2); int yAxis = (mouseY - (height - ySize) / 2); fontRenderer.drawString("Logistical Sorter", 43, 6, 0x404040); - fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, ySize - 96 + 2, 0x404040); - } - + fontRenderer.drawString("Filters:", 11, 17, 0x00CD00); + fontRenderer.drawString("- " + tileEntity.filters.size(), 11, 26, 0x00CD00); + + super.drawGuiContainerForegroundLayer(mouseX, mouseY); + } + @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) { @@ -47,8 +81,5 @@ public class GuiLogisticalSorter extends GuiMekanism int guiWidth = (width - xSize) / 2; int guiHeight = (height - ySize) / 2; drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize); - - int xAxis = mouseX - guiWidth; - int yAxis = mouseY - guiHeight; } } \ No newline at end of file diff --git a/common/mekanism/client/gui/GuiOreDictFilter.java b/common/mekanism/client/gui/GuiOreDictFilter.java new file mode 100644 index 000000000..f1e887039 --- /dev/null +++ b/common/mekanism/client/gui/GuiOreDictFilter.java @@ -0,0 +1,9 @@ +package mekanism.client.gui; + +import mekanism.common.tileentity.TileEntityLogisticalTransporter; +import net.minecraft.client.gui.GuiScreen; + +public class GuiOreDictFilter extends GuiScreen +{ + public TileEntityLogisticalTransporter tileEntity; +} diff --git a/common/mekanism/client/gui/GuiRecipeType.java b/common/mekanism/client/gui/GuiRecipeType.java index 99d20cbb4..2b8b75f27 100644 --- a/common/mekanism/client/gui/GuiRecipeType.java +++ b/common/mekanism/client/gui/GuiRecipeType.java @@ -19,12 +19,12 @@ public class GuiRecipeType extends GuiElement { mc.renderEngine.bindTexture(RESOURCE); - guiContainer.drawTexturedModalRect(guiWidth + 176, guiHeight + 70, 0, 0, 26, 63); + guiObj.drawTexturedModalRect(guiWidth + 176, guiHeight + 70, 0, 0, 26, 63); TileEntityFactory factory = (TileEntityFactory)tileEntity; int displayInt = factory.getScaledRecipeProgress(15); - guiContainer.drawTexturedModalRect(guiWidth + 181, guiHeight + 94, 26, 0, 10, displayInt); + guiObj.drawTexturedModalRect(guiWidth + 181, guiHeight + 94, 26, 0, 10, displayInt); mc.renderEngine.bindTexture(defaultLocation); } diff --git a/common/mekanism/client/gui/GuiRedstoneControl.java b/common/mekanism/client/gui/GuiRedstoneControl.java index a45e66f47..5a2807b23 100644 --- a/common/mekanism/client/gui/GuiRedstoneControl.java +++ b/common/mekanism/client/gui/GuiRedstoneControl.java @@ -8,13 +8,13 @@ import mekanism.common.PacketHandler.Transmission; import mekanism.common.network.PacketRedstoneControl; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; -import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; public class GuiRedstoneControl extends GuiElement { - public GuiRedstoneControl(GuiContainer gui, TileEntity tile, ResourceLocation def) + public GuiRedstoneControl(GuiScreen gui, TileEntity tile, ResourceLocation def) { super(MekanismUtils.getResource(ResourceType.GUI, "GuiRedstoneControl.png"), gui, tile, def); } @@ -24,17 +24,17 @@ public class GuiRedstoneControl extends GuiElement { mc.renderEngine.bindTexture(RESOURCE); - guiContainer.drawTexturedModalRect(guiWidth + 176, guiHeight + 138, 0, 0, 26, 26); + guiObj.drawTexturedModalRect(guiWidth + 176, guiHeight + 138, 0, 0, 26, 26); IRedstoneControl control = (IRedstoneControl)tileEntity; int renderX = 26 + (18*control.getControlType().ordinal()); if(xAxis >= 179 && xAxis <= 197 && yAxis >= 142 && yAxis <= 160) { - guiContainer.drawTexturedModalRect(guiWidth + 179, guiHeight + 142, renderX, 0, 18, 18); + guiObj.drawTexturedModalRect(guiWidth + 179, guiHeight + 142, renderX, 0, 18, 18); } else { - guiContainer.drawTexturedModalRect(guiWidth + 179, guiHeight + 142, renderX, 18, 18, 18); + guiObj.drawTexturedModalRect(guiWidth + 179, guiHeight + 142, renderX, 18, 18, 18); } mc.renderEngine.bindTexture(defaultLocation); @@ -70,6 +70,7 @@ public class GuiRedstoneControl extends GuiElement RedstoneControl current = control.getControlType(); int ordinalToSet = current.ordinal() < (RedstoneControl.values().length-1) ? current.ordinal()+1 : 0; + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); PacketHandler.sendPacket(Transmission.SERVER, new PacketRedstoneControl().setParams(Object3D.get(tileEntity), RedstoneControl.values()[ordinalToSet])); } } diff --git a/common/mekanism/client/gui/GuiUpgradeManagement.java b/common/mekanism/client/gui/GuiUpgradeManagement.java index a89ec9986..5909ca9dc 100644 --- a/common/mekanism/client/gui/GuiUpgradeManagement.java +++ b/common/mekanism/client/gui/GuiUpgradeManagement.java @@ -23,12 +23,12 @@ public class GuiUpgradeManagement extends GuiElement { mc.renderEngine.bindTexture(RESOURCE); - guiContainer.drawTexturedModalRect(guiWidth + 176, guiHeight + 6, 0, 0, 26, 63); + guiObj.drawTexturedModalRect(guiWidth + 176, guiHeight + 6, 0, 0, 26, 63); IUpgradeTile upgradeTile = (IUpgradeTile)tileEntity; int displayInt = upgradeTile.getComponent().getScaledUpgradeProgress(14); - guiContainer.drawTexturedModalRect(guiWidth + 180, guiHeight + 30, 26, 0, 10, displayInt); + guiObj.drawTexturedModalRect(guiWidth + 180, guiHeight + 30, 26, 0, 10, displayInt); mc.renderEngine.bindTexture(defaultLocation); } diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index be4f08a2e..aff11a768 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -8,9 +8,10 @@ import mekanism.common.inventory.container.ContainerElectricMachine; import mekanism.common.inventory.container.ContainerElectricPump; import mekanism.common.inventory.container.ContainerEnergyCube; import mekanism.common.inventory.container.ContainerFactory; +import mekanism.common.inventory.container.ContainerFilter; import mekanism.common.inventory.container.ContainerGasTank; -import mekanism.common.inventory.container.ContainerItemStackFilter; import mekanism.common.inventory.container.ContainerMetallurgicInfuser; +import mekanism.common.inventory.container.ContainerNull; import mekanism.common.inventory.container.ContainerRobitCrafting; import mekanism.common.inventory.container.ContainerRobitInventory; import mekanism.common.inventory.container.ContainerRobitMain; @@ -21,6 +22,7 @@ import mekanism.common.tileentity.TileEntityAdvancedElectricMachine; import mekanism.common.tileentity.TileEntityAdvancedFactory; import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityCombiner; +import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityCrusher; import mekanism.common.tileentity.TileEntityDynamicTank; import mekanism.common.tileentity.TileEntityDynamicValve; @@ -33,7 +35,6 @@ import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityEnrichmentChamber; import mekanism.common.tileentity.TileEntityFactory; import mekanism.common.tileentity.TileEntityGasTank; -import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; import mekanism.common.tileentity.TileEntityMetallurgicInfuser; @@ -283,7 +284,11 @@ public class CommonProxy case 25: return new ContainerRobitRepair(player.inventory, world); case 26: - return new ContainerItemStackFilter(player.inventory, (TileEntityLogisticalSorter)tileEntity); + return new ContainerNull(player, (TileEntityContainerBlock)tileEntity); + case 27: + return new ContainerFilter(player.inventory); + case 28: + return new ContainerFilter(player.inventory); } return null; diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 6d3a1a6b8..272a0c3e7 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -59,6 +59,7 @@ import mekanism.common.network.PacketDataRequest; import mekanism.common.network.PacketDigitUpdate; import mekanism.common.network.PacketElectricBowState; import mekanism.common.network.PacketElectricChest; +import mekanism.common.network.PacketLogisticalSorterGui; import mekanism.common.network.PacketPortableTeleport; import mekanism.common.network.PacketPortalFX; import mekanism.common.network.PacketRedstoneControl; @@ -1136,6 +1137,7 @@ public class Mekanism PacketHandler.registerPacket(PacketRemoveUpgrade.class); PacketHandler.registerPacket(PacketRedstoneControl.class); PacketHandler.registerPacket(PacketWalkieTalkieState.class); + PacketHandler.registerPacket(PacketLogisticalSorterGui.class); //Donators donators.add("mrgreaper"); diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index e58cd5996..1b0146d68 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -21,6 +21,7 @@ import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier; import mekanism.common.network.PacketElectricChest; import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; +import mekanism.common.network.PacketLogisticalSorterGui; import mekanism.common.tileentity.TileEntityAdvancedFactory; import mekanism.common.tileentity.TileEntityBasicBlock; import mekanism.common.tileentity.TileEntityChargepad; @@ -828,6 +829,19 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds return super.getCollisionBoundingBoxFromPool(world, x, y, z); } + + @Override + public boolean isBlockSolidOnSide(World world, int x, int y, int z, ForgeDirection side) + { + int metadata = world.getBlockMetadata(x, y, z); + + if(metadata != MachineType.CHARGEPAD.meta) + { + return true; + } + + return false; + } public static enum MachineType { diff --git a/common/mekanism/common/inventory/container/ContainerItemStackFilter.java b/common/mekanism/common/inventory/container/ContainerFilter.java similarity index 67% rename from common/mekanism/common/inventory/container/ContainerItemStackFilter.java rename to common/mekanism/common/inventory/container/ContainerFilter.java index 1b7812c89..30a8bdcd2 100644 --- a/common/mekanism/common/inventory/container/ContainerItemStackFilter.java +++ b/common/mekanism/common/inventory/container/ContainerFilter.java @@ -1,25 +1,20 @@ package mekanism.common.inventory.container; -import mekanism.api.gas.EnumGas; -import mekanism.common.inventory.slot.SlotStorageTank; -import mekanism.common.tileentity.TileEntityLogisticalSorter; +import mekanism.common.inventory.slot.SlotEnergy.SlotDischarge; +import mekanism.common.tileentity.TileEntityTeleporter; +import mekanism.common.util.ChargeUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerItemStackFilter extends Container +public class ContainerFilter extends Container { - private TileEntityLogisticalSorter tileEntity; - - public ContainerItemStackFilter(InventoryPlayer inventory, TileEntityLogisticalSorter tentity) - { - tileEntity = tentity; - addSlotToContainer(new Slot(tentity, 0, 8, 8)); - - int slotX; - + public ContainerFilter(InventoryPlayer inventory) + { + int slotX; + for(slotX = 0; slotX < 3; ++slotX) { for(int slotY = 0; slotY < 9; ++slotY) @@ -32,23 +27,18 @@ public class ContainerItemStackFilter extends Container { addSlotToContainer(new Slot(inventory, slotX, 8 + slotX * 18, 142)); } - - tileEntity.openChest(); - tileEntity.playersUsing.add(inventory.player); } - @Override + @Override public void onContainerClosed(EntityPlayer entityplayer) { super.onContainerClosed(entityplayer); - tileEntity.closeChest(); - tileEntity.playersUsing.remove(entityplayer); } - + @Override public boolean canInteractWith(EntityPlayer entityplayer) { - return tileEntity.isUseableByPlayer(entityplayer); + return true; } @Override @@ -61,8 +51,27 @@ public class ContainerItemStackFilter extends Container { ItemStack slotStack = currentSlot.getStack(); stack = slotStack.copy(); - - //TODO + + if(slotID >= 0 && slotID <= 26) + { + if(!mergeItemStack(slotStack, 27, inventorySlots.size(), false)) + { + return null; + } + } + else if(slotID > 26) + { + if(!mergeItemStack(slotStack, 0, 26, false)) + { + return null; + } + } + else { + if(!mergeItemStack(slotStack, 0, inventorySlots.size(), true)) + { + return null; + } + } if(slotStack.stackSize == 0) { diff --git a/common/mekanism/common/inventory/container/ContainerNull.java b/common/mekanism/common/inventory/container/ContainerNull.java new file mode 100644 index 000000000..5ceff8a8d --- /dev/null +++ b/common/mekanism/common/inventory/container/ContainerNull.java @@ -0,0 +1,33 @@ +package mekanism.common.inventory.container; + +import mekanism.common.tileentity.TileEntityContainerBlock; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; + +public class ContainerNull extends Container +{ + private TileEntityContainerBlock tileEntity; + + public ContainerNull(EntityPlayer player, TileEntityContainerBlock tile) + { + tileEntity = tile; + + tileEntity.openChest(); + tileEntity.playersUsing.add(player); + } + + @Override + public void onContainerClosed(EntityPlayer entityplayer) + { + super.onContainerClosed(entityplayer); + + tileEntity.closeChest(); + tileEntity.playersUsing.remove(entityplayer); + } + + @Override + public boolean canInteractWith(EntityPlayer entityplayer) + { + return true; + } +} diff --git a/common/mekanism/common/network/PacketLogisticalSorterGui.java b/common/mekanism/common/network/PacketLogisticalSorterGui.java index 1a1f5b15b..304117adc 100644 --- a/common/mekanism/common/network/PacketLogisticalSorterGui.java +++ b/common/mekanism/common/network/PacketLogisticalSorterGui.java @@ -1,14 +1,10 @@ package mekanism.common.network; import java.io.DataOutputStream; -import java.util.ArrayList; import mekanism.api.Object3D; import mekanism.common.ITileNetwork; -import mekanism.common.PacketHandler; -import mekanism.common.PacketHandler.Transmission; -import mekanism.common.tileentity.TileEntityDynamicTank; -import mekanism.common.tileentity.TileEntityLogisticalSorter; +import mekanism.common.Mekanism; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -21,7 +17,7 @@ public class PacketLogisticalSorterGui implements IMekanismPacket { public Object3D object3D; - public int filterIndex; + public int type; @Override public String getName() @@ -33,7 +29,7 @@ public class PacketLogisticalSorterGui implements IMekanismPacket public IMekanismPacket setParams(Object... data) { object3D = (Object3D)data[0]; - filterIndex = (Integer)data[1]; + type = (Integer)data[1]; return this; } @@ -47,7 +43,7 @@ public class PacketLogisticalSorterGui implements IMekanismPacket int id = dataStream.readInt(); - int index = dataStream.readInt(); + int type = dataStream.readInt(); World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id); @@ -55,12 +51,14 @@ public class PacketLogisticalSorterGui implements IMekanismPacket { TileEntity tileEntity = worldServer.getBlockTileEntity(x, y, z); - if(tileEntity instanceof TileEntityLogisticalSorter) + if(type == 0) { - ((TileEntityDynamicTank)tileEntity).sendStructure = true; + player.openGui(Mekanism.instance, 27, worldServer, x, y, z); + } + else if(type == 1) + { + player.openGui(Mekanism.instance, 28, worldServer, x, y, z); } - - PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Object3D.get(worldServer.getBlockTileEntity(x, y, z)), ((ITileNetwork)worldServer.getBlockTileEntity(x, y, z)).getNetworkedData(new ArrayList()))); } } @@ -73,6 +71,6 @@ public class PacketLogisticalSorterGui implements IMekanismPacket dataStream.writeInt(object3D.dimensionId); - dataStream.writeInt(filterIndex); + dataStream.writeInt(type); } } diff --git a/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java b/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java index 5b9807aeb..77bbb37ab 100644 --- a/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java +++ b/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java @@ -89,6 +89,9 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen inventory.setInventorySlotContents(inInventory.slotID, null); setActive(true); } + else { + inventory.setInventorySlotContents(inInventory.slotID, inInventory.itemStack); + } } delayTicks = 10; diff --git a/resources/assets/mekanism/gui/GuiItemStackFilter.png b/resources/assets/mekanism/gui/GuiItemStackFilter.png index 68289861b14dd8850f01ae59b31be073f4e16c34..82347eff98e068761320f8fee032c3f8f9f42248 100644 GIT binary patch delta 3872 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 Wo}69!Uef^joH9Rmvgm|I)IR}@tceH! literal 2893 zcmeH}`#aMM9LK+#`5GxQMlQLVIFgiQ!^p%^bFZ9e=tL6Ypw+DAq-0J>QXxFKPw=0-_CgKH4`K`8|n8{O?-5M@xr zdO`3?GASdtP^R80=o-yQ`;0ck1);p&`mOxzv=&-VVkgfG<84WywOPA-Za*xq%;_@7 zNH0b{$URQ)t?74_>Mx%rnx%Del=il$tbUjo)uO{Y=hEgkh$8*wt0|v)lJ(qJ5h_~L zU1E8U_x)inU6q?z1ye=(H{n;B2C2M;um)@tw2qv9LqzYvLD3GS~Tq@pnTyi1Sf}*Kb z-Lqmi^SE9A5H~hNsishsws1oHf_HW*t)$&6bR=-3S@V15d#HZu zAI-&_ahePb_oAY)M4Ho!L0je{zq_6ci>NGh7^=+j_1Lz)KNEW_JHnKrs!5qvdd=MYc2Ay;+iULL=9HU?C?!oxLU%qKw2VgG*5pqB+K=P5j1 zpNKRI8Yn%AEp*S_|KKh2h?R}u{`SP1Z#n}l^xS%tF7mHfr+#K9{{38)X_oI%gk@J< zYW}DC6wYf9vZftWGrLbC1X0L9^Rj2*t}U3B9nx~q;TRQ@KC1D`Qlnd}Hxfg1|Gs8V zHNNffVQ@kHCnt5|Ru;q6bXni6+v33KIfRZ3;(RQ+*RD7$3^%*OrUPscf0%0u3yWEc zTDrqe31?d|BHCWIig{JlW^3V|P;9_e`opIki*c>8WPL4LKS-b9_L;~L-|ivLq3VL7 zuRjvH^^IC^?RM{b>qooGHu5)0BT7gms{KOjg~VOhX9iRgs_D8h6-6~)KSq!7eXX}{ z;GfZywpZG^VS$-v$fHz|0ug+=|M`Kiyn`q&Vh3eh^~-~`#63b(dzQcLx&pfT#+jz_R#c_U5zC5Ip zF}ZYQFg3SXEZFM>f9W)qej0=Oh)*0hO*V##WbKFZ= z>UzkuRi7>t9;=O3->gKdV@Z0O$ewdcIA0)&d{M&`0RZ4Q0q@{VhRl8Ri137{CH4e; z@>Lx|Svj;0DQ1Z?M70C<6N_VN=`%S?pLuUO*^}RQ8bTG!E|I6|DEW^h+pg4K%blua zetpgwUEHW$m+<|ciQ`sDT$Gr-8Gb}ToChuLn-+0@XwS%WN1FZ&1q1@YwUO%G4kJQY z%~bYkQeM~OaMd*>F}N~^qStQyT2 z2Bkp3fQ1QlgbNG6>nidP`v3}>``8`|>c}Oqa%m7=Lwy@eX&>MLhlybFECJ`B(LEaE z_F)|cDgY2gR9Ym!`*s)(De}VnAKL4vDX|;rJ zy`m5@r}zq6$VJ=w;U4u(FGE*D=O>(G*KV^$=l49~a=8scI&AmJk$5}dnfVQg diff --git a/resources/assets/mekanism/gui/GuiLogisticalSorter.png b/resources/assets/mekanism/gui/GuiLogisticalSorter.png index 68289861b14dd8850f01ae59b31be073f4e16c34..dc0a78021587985adb6f921385b4873277f5d479 100644 GIT binary patch delta 1833 zcmX>r_EvI3FiSm0i>HfYNCo5DJHCD**%GV|o*k3jA+FBn8N=v(F!TkRjA0UswnCzZ zgZb6zkK(o%K4Z2jc=h3DNz#v%@9OSX`4tCoZMykqS8o3Ouk8n;D|r7@UG@8S@0;Xy z{rG)0kMG@nTlByD|8HIXIdd+(JgZbtP_SW71b>?4{Nv{y|N8Z7WBu+svj0CmK7RN1 z`uP2JKmU0%{&-X`G~IeDM@&pij$Q4qFX2-UT)ldA!vDv|`}zCsPe0h~|E}i4!^7>n z``@i+sFSm@wEX#VUpa>f*PMCt^7#1q&8JVFUhm8K=O6382)*y|5Bl%EcLW*QbGne} zHOG;44A(4egE<8xI9=8;xN+B8xHTN8Vgib8HlKOm6_63ue}IYQns5Q@hIxBWvV@5P z8C5J|3LEA%Xg7R)_b^SC$yYHR<_AjaONL47o;Djwh_s{@?g~@csSz{qtu&^L+m8 z=jZ3?f7c)1ym_;_?fbuT=Y=qwp1Z&Pf8GBX<{!U3d-iM{!!+?px2u?rA3t9Gbc4;g z|Gt%f@BFL$E2t)*a6xMUL)7Gr;*AXrOdJZ*jtfE^7`Lb;>oYMjvI;nuH94$qV9M}4 z7RSQG#HG-X!_pYW$a-N`&t47|7Lj@fhMOErYniwfm`YX)a&TxgFl-WJiDDIT$Ts?> zBp?vLz?h=Uv4u;c;abWYR|SOy3`{571TsVe7}lP=(e2>iz{oP8mjV~mvxp3+3+h3E zFn}(oheX4Gxu71F5C+Hv^@yZ6ATFp!&J1*N!GYb^j>aXeU%Ytn*^l)fKYH6teXd}z z^uQI?g1WkWk^gqARo^gWL-cx}z=jRgjO%_sie7hM%7FIlV3^GQ z<_kv;i^u_w7*z!OGmTP9^jR)b50JqMluB|bIG zm1~^Xz$Ed~!Y!c)C{cO9ufG3)hXZ3ziHx$r&IYC#HVMn!6I2#3xLNfH&WLef^pV?e zS=m4+fI(UIIERnk0tPky8!rVVI5lv&!{%i^x8PScXa+h&(e=4Q zftRIIRJc>~i8;d6(t3GVpMexP*OdGperW)BX&&8;ph+}LOx zf8bol0gr_5(Hgf8A3l7sR#rJc`9XApzVOjJMxFCN?(?(kIa6FM#lTM-LbH7Uc9Ul0}yz+`njxgN@xNAierethHb>Eq8o392&j>lReJ*j~M8`fu*aoptkGY~A~6(}9N{{%!sH`)=&AA7$U; zudDw!{y*1^|Hpi$<(FT6yZ%%DHT#8p?O&M;_wL=Rd$3W?@xgsgnf~MT-`nS(e|~#? zozM@quW!{G?EZapR}`2b@WX^bxOb|Gg90P7K&wN7{{e?iiEJmbmGxAPPh#vuwz8fIX^2!ik*%yJGu={RC$g3GB;*xp*@z>% diff --git a/resources/assets/mekanism/gui/GuiOreDictFilter.png b/resources/assets/mekanism/gui/GuiOreDictFilter.png index 0e114556792e7d9605730e9ba626d40f2239fa76..82347eff98e068761320f8fee032c3f8f9f42248 100644 GIT binary patch delta 3872 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 WT{$}qyr%&4Ibm_;c+oM>=zjtODu~?x literal 3358 zcmeHKSu~rA8vPRyi5k)%)X=KARJGb8gf{6#2^Diy(cqjKswl#d`dV<-+) z(;}4COsMG~HI!>Q1Xbz~Q$nMDT(9@_uKREwJbmB8-fMkpuf6wLU%U;;OjKA_7ytlK zqPdA306>mb2!Mbe4cFjeF93k4_!=AA5RHu$ZGr>6d>`Bc0R5BEj_klG2gz&kfp%{& zc*Wahu?d|FM|+ogIoa|qI5DM=V}U7L9@kV^z+vM{b1LPW%yppTSUwQ-&%;_Wr)m}OjzmOHmTXlPOdoR1N{^vUJ z_!+Gohn9H!*n6J*hGiw0QBU-U6yzuU7>!=e*b zd-p>xQRHQ+hPG8#e(O=z9}D$HSHF>_t>5C;jQ{*CxwyyPch+OJ&4OB*LCy@iwHP(s zSA8d=AF7=6OKTBpfhI)5*OWIE3$liB*vt8tElVfAfQpjqlNFiHwkP&=GYs!0^_=r> zeAS+MrcbOP?DtcB7>ll+J~bQaiIkA zX6=02Lc?yx!`45lZsYAIAmAC#>eY*K-V$#rvEx~*2+KBHo0y<*us=>p^D|Xro7-d^ z>VUzKY_>oGRU^*!)5N;$4_4AaOlGB}7EjrF@X{3*j)bC+gik1T_*#*lAAVKLs2ASI z|HNtW^9uokxc{6^^zYWI4CwmM&L3w~X@mZDP($}832DFgZiKZX!<7}Tx(L(daDsqP2-0f^nY8O?hjl*V8r5 zQ!WZ~&HkE}5RS`9P&bcXPqgmnp1%yO&1vG_<*QY`71%yVk+_J%&HA6esoHaS{xvS> zmMKp-Bx{i6_7u(*%O{qF{Y$S`%4vd8$~cFN=&jRr8#RlSVqK9M_^P4z_qyix!~&I; zXG$-=U7y)&F%6p*@n3T>i9KvLT)E}rQY=B`ptf6OCu2595sR1e6NR=Ln&+1a%opIv z_P9#+p2D)_{B%g|P&nCI|D)C59G8Y008lxXmZ^l z9KxA$Be^=Gqiu&hb)P>A3P0T+Bh;aS66yZZqg0|9^0+1}rZeok<#fIamDK4Rv_G0O zQpDYjc(faedwsA!_XWR;g|eMy_p`22*~<-Tjm^&~yR5@VL_-&rbAx`^;&igEeJhgB ziWD?;0&VH(>C%y%PgFN8OO%kAzA3=B+98Y3fN{rDH&`-}Md z{0t^rXG0Z;JbcvrD?l%x0rEeAH{CO6zr1L?`@YikGK!a>|Nl)+$Z2l_G0Fzjsr%*Z#fQ7$6`$(f`JEEDn1Vu#vl2ZVi6olnbpDn7R5C{ToNrN5+ zfgID1rTc%i%|p5Def=LRV~ni6R#1tMXRRp4{P@wBU1oKY#*97k{>E9?!*0Mx>kxh&A5Gue+e^mBSt4CsW;q= z830^QKaFSV0qY#ejjTf)We-hTab3nhVRvAlF*D67BZWz$0U~(~FA0e>pyokuHVh7f zxdWrGju5cCd-jVe7mo@`ptwS1P)QNc&eBz*=00o5OY@=D$DDKhU0}xF~CKZ2k|Hr=p1Xx+u diff --git a/resources/assets/mekanism/gui/GuiPasswordModify copy.png b/resources/assets/mekanism/gui/GuiPasswordModify copy.png new file mode 100644 index 0000000000000000000000000000000000000000..48d456aaa1436ac83e64c4f29d6ba9e827bbae00 GIT binary patch literal 2840 zcmeH}`7_&z8^=E)iJ&DFiF>KI)m4^CXms&KRos?EQ~Ir=DaC|pBNba+>sY?3s&&pf z>RJ-31aYro5my}{jjLL$vx24sU;oC=^r!c0=9%~N%)ICM;hpS)w>vK;F9ra>c?WwN zHvkYiLm>bLJrlpEiXZ?0tA$!yyEs@|tGGnn4+_0^2LP^Ice0R7!yjZf0(s;1AFpk5b={C967j zh9i|Ia{P0yLleYCN9hicBYr3Y`ktq_^Uf3uss`my@}*+O`ZO)^7jdHLqdM!z8dxjT zqLm$Fzz84+%l2n2dWI{ss0L-$*E|b|8d)^Rh-4U@O6uoD?``-$@jl8gYrfqinLMX^ z;L)Cpn{L=s+;OB6Xw41*@eqE-;dmSRRm;LA~)6v0F^`$b@Z7=>C_U+ZoihlRdg@A>w>y)ZjgxpB4Pl?>Y`k!76 zfzTQM?I>q0Q$?t_H#Myl5Y{-x%(xh}>-ZxvyteY%Y;CTOtN8KdSJ;~w{n}y7?C$5v zgAy$O3xWkNeO(<3nF!+MhCQdd03~ z*gjfB$KQ3{IQJPLfpTE|hM__*qLgmN&f9=Fc44|CAYxHr7^KcSiq<}_)j8S&g~7Y* z3altvzq$_3Y|9_AGERQUr90~Gp`AyKOnf&HDk6xGXtVLF5d;DFUx#WHIY<@7C@(aJ>Di(lTbdKqO8|$rv1I_J#=}DU;f7z zDY2Ns6ixf&?NsNUz9nN2qp+2KldnO4Exdn{g)qcm7Q!ywQ13ThD!@c~+3tyv@Dt#SYamQ>FvRA7^M)G;Ptifu_s;lXgi+mI-p?qn7D|rnc_X61Daxs_CoO=8oEJ zW4PzSwtQ`pPP?(|ULn2}2+AgWze9fZmmPfEC*$H&k^PporIixM3gM4iD!8M8@7z&_w_Ml;&V_%_CN5bJi8F>I#R9 z1}qJyIYwRRQ3~)@Kx;IHgqNHPY?-$du&17Un$&Lknf{gc*t}I4qe>4+U==@L6tmi{ zeRoq|ceb&{RQ#SPO_Iat3pai{*>*}Xf1-IhnTFrV12MT`- zwf?eGO$E>p69FHB!B+D_(Kl{M!2!fmVGsrMAm@!>Z;$l%WH9ZB&%eS9N&ph(5lvb^ zI;Z7;36hkQ?3gYft6DAmL1h5J4=+i{`dR^LmIUsFE4nJc@UFL-VIvigCAYVrBfJ)t z;z5O$oa|KGzV=_)oCux)I4*?;8BKX1g9PjtMBE+k%wrwKKkoUS>0vSN=0HQ^-YSOe zXa4wJjGE!u!l2Mga9P6H1>9{Vsh3DNP;Y{Qr5UIIy+w5rqC;XZs*k)lxK{=ad>HXg z0tZ3BotJ)tfIf)(37k58;}IKEE6VYu7_}WrLMmusYF?;g|7*v{QZ5(+ZiTGAtk)N{ z5fXy?NQ;tSFlxH_`ZFtOIFM