From 729ff976203a3699be8b8b973f13fdf08f6f4bf3 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Wed, 7 Dec 2016 16:06:17 +0100 Subject: [PATCH] Add oredict + whitelist/blacklist to gridfilter --- .../container/ContainerGridFilter.java | 20 ++++++++--- .../refinedstorage/gui/GuiGridFilter.java | 28 ++++++++++++--- .../gui/grid/GridFilteredItem.java | 8 ++++- .../grid/filtering/GridFilterCraftable.java | 5 --- .../filtering/GridFilterFilteredItem.java | 24 ------------- .../filtering/GridFilterFilteredItems.java | 32 ++++++++++++++++++ .../gui/grid/filtering/GridFilterMod.java | 5 --- .../gui/grid/filtering/GridFilterName.java | 5 --- .../gui/grid/filtering/GridFilterParser.java | 5 ++- .../gui/grid/filtering/GridFilterTooltip.java | 5 --- .../gui/grid/filtering/IGridFilter.java | 2 -- .../inventory/ItemHandlerGridFilter.java | 2 +- .../ItemHandlerGridFilterInGrid.java | 3 +- .../refinedstorage/item/ItemGridFilter.java | 16 +++++++++ .../network/MessageGridFilterUpdate.java | 7 +++- .../assets/refinedstorage/lang/en_US.lang | 1 + .../textures/gui/grid_filter.png | Bin 1798 -> 1837 bytes 17 files changed, 105 insertions(+), 63 deletions(-) delete mode 100755 src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItem.java create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java index b72e71c57..1d93d2a57 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGridFilter.java @@ -16,11 +16,21 @@ public class ContainerGridFilter extends ContainerBase { this.stack = stack; this.filter = new ItemHandlerGridFilter(stack); - for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotFilter(filter, i, 8 + (i * 18), 20)); + int y = 20; + int x = 8; + + for (int i = 0; i < 27; ++i) { + addSlotToContainer(new SlotFilter(filter, i, x, y)); + + if ((i + 1) % 9 == 0) { + x = 8; + y += 18; + } else { + x += 18; + } } - addPlayerInventory(8, 70); + addPlayerInventory(8, 126); } public ItemStack getStack() { @@ -36,8 +46,8 @@ public class ContainerGridFilter extends ContainerBase { if (slot.getHasStack()) { stack = slot.getStack(); - if (index > 9 - 1) { - return mergeItemStackToFilters(stack, 0, 9); + if (index > 27 - 1) { + return mergeItemStackToFilters(stack, 0, 27); } return ItemStack.EMPTY; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java index 4f3a4126a..83e5c1f49 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiGridFilter.java @@ -12,20 +12,33 @@ import java.io.IOException; public class GuiGridFilter extends GuiBase { private int compare; + private int mode; private GuiCheckBox compareDamage; private GuiCheckBox compareNBT; + private GuiCheckBox compareOredict; + private GuiButton toggleMode; public GuiGridFilter(ContainerGridFilter container) { - super(container, 176, 152); + super(container, 176, 208); this.compare = ItemGridFilter.getCompare(container.getStack()); + this.mode = ItemGridFilter.getMode(container.getStack()); } @Override public void init(int x, int y) { - compareDamage = addCheckBox(x + 7, y + 41, t("gui.refinedstorage:grid_filter.compare_damage"), (compare & IComparer.COMPARE_DAMAGE) == IComparer.COMPARE_DAMAGE); - compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 41, t("gui.refinedstorage:grid_filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT); + compareDamage = addCheckBox(x + 7, y + 77, t("gui.refinedstorage:grid_filter.compare_damage"), (compare & IComparer.COMPARE_DAMAGE) == IComparer.COMPARE_DAMAGE); + compareNBT = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4, y + 77, t("gui.refinedstorage:grid_filter.compare_nbt"), (compare & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT); + compareOredict = addCheckBox(x + 7 + compareDamage.getButtonWidth() + 4 + compareNBT.getButtonWidth() + 4, y + 77, t("gui.refinedstorage:grid_filter.compare_oredict"), (compare & IComparer.COMPARE_OREDICT) == IComparer.COMPARE_OREDICT); + toggleMode = addButton(x + 7, y + 71 + 20, 0, 20, ""); + updateModeButton(mode); + } + + private void updateModeButton(int mode) { + String text = mode == ItemGridFilter.MODE_WHITELIST ? t("sidebutton.refinedstorage:mode.whitelist") : t("sidebutton.refinedstorage:mode.blacklist"); + toggleMode.setWidth(fontRendererObj.getStringWidth(text) + 7); + toggleMode.displayString = text; } @Override @@ -42,7 +55,7 @@ public class GuiGridFilter extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:grid_filter")); - drawString(7, 58, t("container.inventory")); + drawString(7, 114, t("container.inventory")); } @Override @@ -53,8 +66,13 @@ public class GuiGridFilter extends GuiBase { compare ^= IComparer.COMPARE_DAMAGE; } else if (button == compareNBT) { compare ^= IComparer.COMPARE_NBT; + } else if (button == compareOredict) { + compare ^= IComparer.COMPARE_OREDICT; + } else if (button == toggleMode) { + mode = mode == ItemGridFilter.MODE_WHITELIST ? ItemGridFilter.MODE_BLACKLIST : ItemGridFilter.MODE_WHITELIST; + updateModeButton(mode); } - RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare)); + RS.INSTANCE.network.sendToServer(new MessageGridFilterUpdate(compare, mode)); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java index 66205f670..57e11e81e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GridFilteredItem.java @@ -5,10 +5,12 @@ import net.minecraft.item.ItemStack; public class GridFilteredItem { private ItemStack stack; private int compare; + private int mode; - public GridFilteredItem(ItemStack stack, int compare) { + public GridFilteredItem(ItemStack stack, int compare, int mode) { this.stack = stack; this.compare = compare; + this.mode = mode; } public ItemStack getStack() { @@ -18,4 +20,8 @@ public class GridFilteredItem { public int getCompare() { return compare; } + + public int getMode() { + return mode; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterCraftable.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterCraftable.java index e4e570ec2..2d59e3ff3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterCraftable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterCraftable.java @@ -14,9 +14,4 @@ public class GridFilterCraftable implements IGridFilter { public boolean accepts(IClientStack stack) { return stack instanceof ClientStackItem && ((ClientStackItem) stack).isCraftable() == craftable; } - - @Override - public boolean isStrong() { - return true; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItem.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItem.java deleted file mode 100755 index 794d67a92..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItem.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.raoulvdberge.refinedstorage.gui.grid.filtering; - -import com.raoulvdberge.refinedstorage.apiimpl.API; -import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem; -import com.raoulvdberge.refinedstorage.gui.grid.stack.ClientStackItem; -import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack; - -public class GridFilterFilteredItem implements IGridFilter { - private GridFilteredItem filteredItem; - - public GridFilterFilteredItem(GridFilteredItem filteredItem) { - this.filteredItem = filteredItem; - } - - @Override - public boolean accepts(IClientStack stack) { - return API.instance().getComparer().isEqual(((ClientStackItem) stack).getStack(), filteredItem.getStack(), filteredItem.getCompare()); - } - - @Override - public boolean isStrong() { - return true; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java new file mode 100755 index 000000000..3d11fa24c --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterFilteredItems.java @@ -0,0 +1,32 @@ +package com.raoulvdberge.refinedstorage.gui.grid.filtering; + +import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem; +import com.raoulvdberge.refinedstorage.gui.grid.stack.ClientStackItem; +import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack; +import com.raoulvdberge.refinedstorage.item.ItemGridFilter; + +import java.util.List; + +public class GridFilterFilteredItems implements IGridFilter { + private List filteredItems; + + public GridFilterFilteredItems(List filteredItems) { + this.filteredItems = filteredItems; + } + + @Override + public boolean accepts(IClientStack stack) { + int lastMode = ItemGridFilter.MODE_WHITELIST; + + for (GridFilteredItem filteredItem : filteredItems) { + if (API.instance().getComparer().isEqual(((ClientStackItem) stack).getStack(), filteredItem.getStack(), filteredItem.getCompare())) { + return filteredItem.getMode() == ItemGridFilter.MODE_WHITELIST; + } + + lastMode = filteredItem.getMode(); + } + + return lastMode != ItemGridFilter.MODE_WHITELIST; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterMod.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterMod.java index 473697dc3..111ec9ac1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterMod.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterMod.java @@ -30,9 +30,4 @@ public class GridFilterMod implements IGridFilter { return true; } - - @Override - public boolean isStrong() { - return true; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterName.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterName.java index b5e3f5d9f..5a18480c7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterName.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterName.java @@ -13,9 +13,4 @@ public class GridFilterName implements IGridFilter { public boolean accepts(IClientStack stack) { return stack.getName().toLowerCase().contains(name); } - - @Override - public boolean isStrong() { - return false; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterParser.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterParser.java index a745551a5..0e251326d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterParser.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterParser.java @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.gui.grid.filtering; -import com.raoulvdberge.refinedstorage.gui.grid.GridFilteredItem; import com.raoulvdberge.refinedstorage.tile.grid.IGrid; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; @@ -27,8 +26,8 @@ public class GridFilterParser { filters.add(new GridFilterCraftable(true)); } - for (GridFilteredItem filteredItem : grid.getFilteredItems()) { - filters.add(new GridFilterFilteredItem(filteredItem)); + if (!grid.getFilteredItems().isEmpty()) { + filters.add(new GridFilterFilteredItems(grid.getFilteredItems())); } return filters; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterTooltip.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterTooltip.java index a0faf8045..5f3c205fd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterTooltip.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterTooltip.java @@ -21,9 +21,4 @@ public class GridFilterTooltip implements IGridFilter { return otherTooltip.contains(tooltip); } - - @Override - public boolean isStrong() { - return false; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/IGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/IGridFilter.java index 6d58a8ce0..51fa9f9b9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/IGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/IGridFilter.java @@ -4,6 +4,4 @@ import com.raoulvdberge.refinedstorage.gui.grid.stack.IClientStack; public interface IGridFilter { boolean accepts(IClientStack stack); - - boolean isStrong(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilter.java index 473882ce0..cd10f95cc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilter.java @@ -10,7 +10,7 @@ public class ItemHandlerGridFilter extends ItemStackHandler { private ItemStack stack; public ItemHandlerGridFilter(ItemStack stack) { - super(9); + super(27); this.stack = stack; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java index 220cc7156..ed4762b82 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java @@ -30,12 +30,13 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { if (!filter.isEmpty()) { int compare = ItemGridFilter.getCompare(filter); + int mode = ItemGridFilter.getMode(filter); ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter); for (ItemStack item : items.getFilteredItems()) { if (!item.isEmpty()) { - filteredItems.add(new GridFilteredItem(item, compare)); + filteredItems.add(new GridFilteredItem(item, compare, mode)); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java index 40bc4909c..cb03900e4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemGridFilter.java @@ -16,7 +16,11 @@ import net.minecraft.world.World; import java.util.List; public class ItemGridFilter extends ItemBase { + public static final int MODE_WHITELIST = 0; + public static final int MODE_BLACKLIST = 1; + private static final String NBT_COMPARE = "Compare"; + private static final String NBT_MODE = "Mode"; public ItemGridFilter() { super("grid_filter"); @@ -61,4 +65,16 @@ public class ItemGridFilter extends ItemBase { stack.getTagCompound().setInteger(NBT_COMPARE, compare); } + + public static int getMode(ItemStack stack) { + return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_MODE)) ? stack.getTagCompound().getInteger(NBT_MODE) : MODE_WHITELIST; + } + + public static void setMode(ItemStack stack, int mode) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setInteger(NBT_MODE, mode); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java index 5cede767c..de7d55627 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridFilterUpdate.java @@ -8,28 +8,33 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage; public class MessageGridFilterUpdate extends MessageHandlerPlayerToServer implements IMessage { private int compare; + private int mode; public MessageGridFilterUpdate() { } - public MessageGridFilterUpdate(int compare) { + public MessageGridFilterUpdate(int compare, int mode) { this.compare = compare; + this.mode = mode; } @Override public void fromBytes(ByteBuf buf) { compare = buf.readInt(); + mode = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(compare); + buf.writeInt(mode); } @Override public void handle(MessageGridFilterUpdate message, EntityPlayerMP player) { if (player.openContainer instanceof ContainerGridFilter) { ItemGridFilter.setCompare(((ContainerGridFilter) player.openContainer).getStack(), message.compare); + ItemGridFilter.setMode(((ContainerGridFilter) player.openContainer).getStack(), message.mode); } } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index a3edfc60e..3dfd50e8e 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -37,6 +37,7 @@ gui.refinedstorage:processing_pattern_encoder.pattern_create=Create Pattern gui.refinedstorage:grid_filter=Grid Filter gui.refinedstorage:grid_filter.compare_damage=Damage gui.refinedstorage:grid_filter.compare_nbt=NBT +gui.refinedstorage:grid_filter.compare_oredict=Oredict gui.refinedstorage:network_transmitter=Network Transmitter gui.refinedstorage:network_transmitter.distance=%d blocks gui.refinedstorage:network_transmitter.dimension=Dimension %d diff --git a/src/main/resources/assets/refinedstorage/textures/gui/grid_filter.png b/src/main/resources/assets/refinedstorage/textures/gui/grid_filter.png index 94a6a60b59ccc096c4fb57e97f3d0f2e37ce17db..678fdc53e3b9f755ef909e4462704b0df0294035 100755 GIT binary patch literal 1837 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^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^(dRtfWy2^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;M)Vjj8pd%c>)C`OI#yLg7ec#$`gxH8440J^GfvcQcDy}^bGV24c2mT z9bjN!%Jy_|45^5Fd;4OSl%qt;#m;r_|DRBM7dB@@xYFOrxvy$ixPB$QkZEak?En4u z#`534`hFMQUe4HAPCH~ZTg`}sc1G5bq@XR3pg00C4U!nwYFeZrs1{??LgHks`a@+%07MJ1&TVn+p7cOow#hy0ib4!o~-=Hr1$Modx z>zfaL-+gn_Tm3S_&+N}RANX%oV-1Sp{NnJrJj`zd85r&|Oc!i;{P9k16#s|k@$>dN zA7?r6ICz71{Peh+2b8~aIczgyxOs~qC7XG|THe9R(PrOqzn-~aXY9=OeT`Q@q2uZ5 K=d#Wzp$PyQJt4FJ