From 68054d92bdcfd90a5a7c4de4869d6a8c7b407182 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Wed, 7 Dec 2016 19:22:45 +0100 Subject: [PATCH] Add grid filter icon + name fields --- .../container/ContainerGridFilter.java | 5 ++- .../refinedstorage/gui/GuiGridFilter.java | 39 ++++++++++++++++-- .../inventory/ItemHandlerGridFilterIcon.java | 24 +++++++++++ .../refinedstorage/item/ItemGridFilter.java | 26 ++++++++++++ .../network/MessageGridFilterUpdate.java | 8 +++- .../textures/gui/grid_filter.png | Bin 1837 -> 1887 bytes 6 files changed, 97 insertions(+), 5 deletions(-) create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterIcon.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java index 1d93d2a57..0e96981f4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java @@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilter; +import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilterIcon; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -30,7 +31,9 @@ public class ContainerGridFilter extends ContainerBase { } } - addPlayerInventory(8, 126); + addSlotToContainer(new SlotFilter(new ItemHandlerGridFilterIcon(stack), 0, 8, 117)); + + addPlayerInventory(8, 149); } public ItemStack getStack() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java index 2a8ec84c8..3268c446e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java @@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.container.ContainerGridFilter; import com.raoulvdberge.refinedstorage.item.ItemGridFilter; import com.raoulvdberge.refinedstorage.network.MessageGridFilterUpdate; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiTextField; import net.minecraftforge.fml.client.config.GuiCheckBox; import java.io.IOException; @@ -14,19 +15,22 @@ public class GuiGridFilter extends GuiBase { private int compare; private int mode; private boolean modFilter; + private String name; private GuiCheckBox compareDamage; private GuiCheckBox compareNBT; private GuiCheckBox compareOredict; private GuiCheckBox toggleModFilter; private GuiButton toggleMode; + private GuiTextField nameField; public GuiGridFilter(ContainerGridFilter container) { - super(container, 176, 208); + super(container, 176, 231); this.compare = ItemGridFilter.getCompare(container.getStack()); this.mode = ItemGridFilter.getMode(container.getStack()); this.modFilter = ItemGridFilter.isModFilter(container.getStack()); + this.name = ItemGridFilter.getName(container.getStack()); } @Override @@ -37,6 +41,13 @@ public class GuiGridFilter extends GuiBase { toggleModFilter = addCheckBox(0, y + 71 + 25, t("gui.refinedstorage:grid_filter.mod_filter"), modFilter); toggleMode = addButton(x + 7, y + 71 + 21, 0, 20, ""); updateModeButton(mode); + nameField = new GuiTextField(0, fontRendererObj, x + 34, y + 121, 137 - 6, fontRendererObj.FONT_HEIGHT); + nameField.setText(name); + nameField.setEnableBackgroundDrawing(false); + nameField.setVisible(true); + nameField.setCanLoseFocus(true); + nameField.setFocused(false); + nameField.setTextColor(16777215); } private void updateModeButton(int mode) { @@ -55,12 +66,30 @@ public class GuiGridFilter extends GuiBase { bindTexture("gui/grid_filter.png"); drawTexture(x, y, 0, 0, width, height); + + nameField.drawTextBox(); } @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:grid_filter")); - drawString(7, 115, t("container.inventory")); + drawString(7, 137, t("container.inventory")); + } + + @Override + protected void keyTyped(char character, int keyCode) throws IOException { + if (!checkHotbarKeys(keyCode) && nameField.textboxKeyTyped(character, keyCode)) { + sendUpdate(); + } else { + super.keyTyped(character, keyCode); + } + } + + @Override + public void mouseClicked(int mouseX, int mouseY, int clickedButton) throws IOException { + super.mouseClicked(mouseX, mouseY, clickedButton); + + nameField.mouseClicked(mouseX, mouseY, clickedButton); } @Override @@ -80,6 +109,10 @@ public class GuiGridFilter extends GuiBase { modFilter = !modFilter; } - RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode, modFilter)); + sendUpdate(); + } + + private void sendUpdate() { + RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode, modFilter, nameField.getText())); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterIcon.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterIcon.java new file mode 100755 index 000000000..6672b3f42 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterIcon.java @@ -0,0 +1,24 @@ +package com.raoulvdberge.refinedstorage.inventory; + +import com.raoulvdberge.refinedstorage.item.ItemGridFilter; +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.ItemStackHandler; + +public class ItemHandlerGridFilterIcon extends ItemStackHandler { + private ItemStack stack; + + public ItemHandlerGridFilterIcon(ItemStack stack) { + super(1); + + this.stack = stack; + + setStackInSlot(0, ItemGridFilter.getIcon(stack)); + } + + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + ItemGridFilter.setIcon(stack, getStackInSlot(0)); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java index 429e6904d..93054172a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java @@ -24,6 +24,8 @@ public class ItemGridFilter extends ItemBase { private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_MOD_FILTER = "ModFilter"; + private static final String NBT_NAME = "Name"; + private static final String NBT_ICON = "Icon"; public ItemGridFilter() { super("grid_filter"); @@ -98,4 +100,28 @@ public class ItemGridFilter extends ItemBase { stack.getTagCompound().setBoolean(NBT_MOD_FILTER, modFilter); } + + public static String getName(ItemStack stack) { + return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_NAME) ? stack.getTagCompound().getString(NBT_NAME) : ""; + } + + public static void setName(ItemStack stack, String name) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setString(NBT_NAME, name); + } + + public static ItemStack getIcon(ItemStack stack) { + return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_ICON) ? new ItemStack(stack.getTagCompound().getCompoundTag(NBT_ICON)) : ItemStack.EMPTY; + } + + public static void setIcon(ItemStack stack, ItemStack icon) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setTag(NBT_ICON, icon.serializeNBT()); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java index 04aff23c6..2a5944e29 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java @@ -4,20 +4,23 @@ import com.raoulvdberge.refinedstorage.container.ContainerGridFilter; import com.raoulvdberge.refinedstorage.item.ItemGridFilter; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer implements IMessage { private int compare; private int mode; private boolean modFilter; + private String name; public MessageGridFilterUpdate() { } - public MessageGridFilterUpdate(int compare, int mode, boolean modFilter) { + public MessageGridFilterUpdate(int compare, int mode, boolean modFilter, String name) { this.compare = compare; this.mode = mode; this.modFilter = modFilter; + this.name = name; } @Override @@ -25,6 +28,7 @@ public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer2^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)ztjK_amF#`%pmbgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48acCM zzhPitI^yZ#7*Y}U_RhsDX+wdwi)$zE`LDb?^7;E!OZFO^_Sxg~e6fO+_^K)a7MC|~ z>+U~$8F#%M+*baGz9_WatITqckbAULt}G>pkm@%xu(&;DJvmPjhR*IRsS``k5)m#f`n*qQ0x zJN@S!pwVD3p?Es5B!qwq-zNo|X0n~weR{>mT=my4R(hH{Xf zli|zWCn3JG7@u(f#VyMtLDCcMs*}%aFl(rBsr>R|!>6mSSWf7t%Ex|+W2j&}@K)*X zpYQB%E}zf)`FnNs9Cn0t8}fM-{+|0Rz~6~+j0GzhzA*mzfB01RYQcm) zkei@Byjj}>;~fxpsMAik^279Hq`SZGF2+xMMOS|8EqJa5Q~(07KnJsn<17A6o}AXO zXLpa({jyDc^JbMWKUpSg8uzSN7_6Fs!Qou27?jE2aNpbSD#>9!Lm8+a7`T5KPuzaJ z;$y8jB=qZU$(a6gu*MPm&%z+V->{W2PnY5LzV{|qnQQ)?yl1?nl;O?xglYTuVj~Yv xD`r)Ay@~O}t{jF2^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)ztjK_amF#`%pmbgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48acCM zzhPitn&j!?7*Y}U_RhsDX-A&6i@7rU|10OeesbRL#8g9}vkN{43cN^~At%PvNCy`SUUz_pAT^yL#^d_5;85_U@g^ZNpIXiw#(SDSX%C2Bkw3o;*W+UD@fF zzt4Tm54?5%et#RNqyvE`_fla@hC6ouIgf3xyS+?O;l1AKW83GRxf(n>uc0P0yjT8n zwlqWogTuR6F({M4;l8)uRg#q_^aJ%zsGbfiPZ=02Yn!Rb`^q}u{?$!ce`*b8u3m0- zm*MAqpzHrLzT3(RvJ41d!2@D1c)xvrNbW4gPwzHm)!aTAW4rYw+llFASAQ7p#~MIi z_C6s)`8N)rRXfWg;~6TeV@>zHPg^(dRtfWy