diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e370838..28edbd175 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ **Features** - Added German translation by ChillUpX +- Each Grid Filter can now only filter 9 items +- Each Grid allows 4 Grid Filters instead of 1 +- Grid Filters can now be configured to compare on NBT and/ or damage ### 0.8.15 **Bugfixes** diff --git a/src/main/java/refinedstorage/gui/grid/GridFilteredItem.java b/src/main/java/refinedstorage/gui/grid/GridFilteredItem.java new file mode 100755 index 000000000..3e3505850 --- /dev/null +++ b/src/main/java/refinedstorage/gui/grid/GridFilteredItem.java @@ -0,0 +1,21 @@ +package refinedstorage.gui.grid; + +import net.minecraft.item.ItemStack; + +public class GridFilteredItem { + private ItemStack stack; + private int compare; + + public GridFilteredItem(ItemStack stack, int compare) { + this.stack = stack; + this.compare = compare; + } + + public ItemStack getStack() { + return stack; + } + + public int getCompare() { + return compare; + } +} diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index 4181770b5..a0406643d 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -100,12 +100,12 @@ public class GuiGrid extends GuiBase { while (t.hasNext()) { ClientStack stack = t.next(); - List filteredItems = grid.getFilteredItems(); + List filteredItems = grid.getFilteredItems(); boolean found = filteredItems.isEmpty(); - for (ItemStack item : filteredItems) { - if (CompareUtils.compareStackNoQuantity(stack.getStack(), item)) { + for (GridFilteredItem filteredItem : filteredItems) { + if (CompareUtils.compareStack(stack.getStack(), filteredItem.getStack(), filteredItem.getCompare())) { found = true; break; diff --git a/src/main/java/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java b/src/main/java/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java index a3393d0ac..a0182bf4a 100755 --- a/src/main/java/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java +++ b/src/main/java/refinedstorage/inventory/ItemHandlerGridFilterInGrid.java @@ -2,13 +2,15 @@ package refinedstorage.inventory; import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageItems; +import refinedstorage.gui.grid.GridFilteredItem; +import refinedstorage.item.ItemGridFilter; import java.util.List; public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { - private List filteredItems; + private List filteredItems; - public ItemHandlerGridFilterInGrid(List filteredItems) { + public ItemHandlerGridFilterInGrid(List filteredItems) { super(4, new ItemValidatorBasic(RefinedStorageItems.GRID_FILTER)); this.filteredItems = filteredItems; @@ -21,14 +23,16 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic { filteredItems.clear(); for (int i = 0; i < getSlots(); ++i) { - ItemStack stack = getStackInSlot(i); + ItemStack filter = getStackInSlot(i); - if (stack != null) { - ItemHandlerGridFilter items = new ItemHandlerGridFilter(stack); + if (filter != null) { + int compare = ItemGridFilter.getCompare(filter); + + ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter); for (ItemStack item : items.getFilteredItems()) { if (item != null) { - filteredItems.add(item); + filteredItems.add(new GridFilteredItem(item, compare)); } } } diff --git a/src/main/java/refinedstorage/item/ItemGridFilter.java b/src/main/java/refinedstorage/item/ItemGridFilter.java index 6461662b5..001377a19 100755 --- a/src/main/java/refinedstorage/item/ItemGridFilter.java +++ b/src/main/java/refinedstorage/item/ItemGridFilter.java @@ -10,6 +10,7 @@ import net.minecraft.world.World; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageItems; +import refinedstorage.api.storage.CompareUtils; import refinedstorage.inventory.ItemHandlerGridFilter; import java.util.List; @@ -48,7 +49,7 @@ public class ItemGridFilter extends ItemBase { } public static int getCompare(ItemStack stack) { - return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_COMPARE)) ? stack.getTagCompound().getInteger(NBT_COMPARE) : 0; + return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_COMPARE)) ? stack.getTagCompound().getInteger(NBT_COMPARE) : (CompareUtils.COMPARE_DAMAGE | CompareUtils.COMPARE_NBT); } public static void setCompare(ItemStack stack, int compare) { diff --git a/src/main/java/refinedstorage/tile/grid/IGrid.java b/src/main/java/refinedstorage/tile/grid/IGrid.java index 7b8262c6e..8f16c09e7 100755 --- a/src/main/java/refinedstorage/tile/grid/IGrid.java +++ b/src/main/java/refinedstorage/tile/grid/IGrid.java @@ -1,9 +1,9 @@ package refinedstorage.tile.grid; -import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import refinedstorage.api.network.IGridHandler; import refinedstorage.block.EnumGridType; +import refinedstorage.gui.grid.GridFilteredItem; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.tile.config.IRedstoneModeConfig; @@ -32,7 +32,7 @@ public interface IGrid { void onSearchBoxModeChanged(int searchBoxMode); - List getFilteredItems(); + List getFilteredItems(); ItemHandlerBasic getFilter(); diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index 0f14802d5..2fe7ff4ef 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -20,6 +20,7 @@ import refinedstorage.api.storage.CompareUtils; import refinedstorage.block.BlockGrid; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; +import refinedstorage.gui.grid.GridFilteredItem; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerGridFilterInGrid; import refinedstorage.inventory.ItemValidatorBasic; @@ -67,7 +68,7 @@ public class TileGrid extends TileNode implements IGrid { private InventoryCraftResult result = new InventoryCraftResult(); private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RefinedStorageItems.PATTERN)); - private List filteredItems = new ArrayList(); + private List filteredItems = new ArrayList(); private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems); private EnumGridType type; @@ -137,7 +138,7 @@ public class TileGrid extends TileNode implements IGrid { } @Override - public List getFilteredItems() { + public List getFilteredItems() { return filteredItems; } diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 9751def66..ceee15fc8 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -9,6 +9,7 @@ import net.minecraft.world.World; import refinedstorage.RefinedStorage; import refinedstorage.api.network.IGridHandler; import refinedstorage.block.EnumGridType; +import refinedstorage.gui.grid.GridFilteredItem; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerGridFilterInGrid; import refinedstorage.item.ItemWirelessGrid; @@ -32,7 +33,7 @@ public class WirelessGrid implements IGrid { private int sortingDirection; private int searchBoxMode; - private List filteredItems = new ArrayList(); + private List filteredItems = new ArrayList(); private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems) { @Override protected void onContentsChanged(int slot) { @@ -137,7 +138,7 @@ public class WirelessGrid implements IGrid { } @Override - public List getFilteredItems() { + public List getFilteredItems() { return filteredItems; }