Actually filter based on compare/nbt
This commit is contained in:
@@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
**Features**
|
**Features**
|
||||||
- Added German translation by ChillUpX
|
- 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
|
### 0.8.15
|
||||||
**Bugfixes**
|
**Bugfixes**
|
||||||
|
|||||||
21
src/main/java/refinedstorage/gui/grid/GridFilteredItem.java
Executable file
21
src/main/java/refinedstorage/gui/grid/GridFilteredItem.java
Executable file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -100,12 +100,12 @@ public class GuiGrid extends GuiBase {
|
|||||||
while (t.hasNext()) {
|
while (t.hasNext()) {
|
||||||
ClientStack stack = t.next();
|
ClientStack stack = t.next();
|
||||||
|
|
||||||
List<ItemStack> filteredItems = grid.getFilteredItems();
|
List<GridFilteredItem> filteredItems = grid.getFilteredItems();
|
||||||
|
|
||||||
boolean found = filteredItems.isEmpty();
|
boolean found = filteredItems.isEmpty();
|
||||||
|
|
||||||
for (ItemStack item : filteredItems) {
|
for (GridFilteredItem filteredItem : filteredItems) {
|
||||||
if (CompareUtils.compareStackNoQuantity(stack.getStack(), item)) {
|
if (CompareUtils.compareStack(stack.getStack(), filteredItem.getStack(), filteredItem.getCompare())) {
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ package refinedstorage.inventory;
|
|||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
|
import refinedstorage.gui.grid.GridFilteredItem;
|
||||||
|
import refinedstorage.item.ItemGridFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic {
|
public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic {
|
||||||
private List<ItemStack> filteredItems;
|
private List<GridFilteredItem> filteredItems;
|
||||||
|
|
||||||
public ItemHandlerGridFilterInGrid(List<ItemStack> filteredItems) {
|
public ItemHandlerGridFilterInGrid(List<GridFilteredItem> filteredItems) {
|
||||||
super(4, new ItemValidatorBasic(RefinedStorageItems.GRID_FILTER));
|
super(4, new ItemValidatorBasic(RefinedStorageItems.GRID_FILTER));
|
||||||
|
|
||||||
this.filteredItems = filteredItems;
|
this.filteredItems = filteredItems;
|
||||||
@@ -21,14 +23,16 @@ public class ItemHandlerGridFilterInGrid extends ItemHandlerBasic {
|
|||||||
filteredItems.clear();
|
filteredItems.clear();
|
||||||
|
|
||||||
for (int i = 0; i < getSlots(); ++i) {
|
for (int i = 0; i < getSlots(); ++i) {
|
||||||
ItemStack stack = getStackInSlot(i);
|
ItemStack filter = getStackInSlot(i);
|
||||||
|
|
||||||
if (stack != null) {
|
if (filter != null) {
|
||||||
ItemHandlerGridFilter items = new ItemHandlerGridFilter(stack);
|
int compare = ItemGridFilter.getCompare(filter);
|
||||||
|
|
||||||
|
ItemHandlerGridFilter items = new ItemHandlerGridFilter(filter);
|
||||||
|
|
||||||
for (ItemStack item : items.getFilteredItems()) {
|
for (ItemStack item : items.getFilteredItems()) {
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
filteredItems.add(item);
|
filteredItems.add(new GridFilteredItem(item, compare));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import net.minecraft.world.World;
|
|||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageGui;
|
import refinedstorage.RefinedStorageGui;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
|
import refinedstorage.api.storage.CompareUtils;
|
||||||
import refinedstorage.inventory.ItemHandlerGridFilter;
|
import refinedstorage.inventory.ItemHandlerGridFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -48,7 +49,7 @@ public class ItemGridFilter extends ItemBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getCompare(ItemStack stack) {
|
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) {
|
public static void setCompare(ItemStack stack, int compare) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package refinedstorage.tile.grid;
|
package refinedstorage.tile.grid;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import refinedstorage.api.network.IGridHandler;
|
import refinedstorage.api.network.IGridHandler;
|
||||||
import refinedstorage.block.EnumGridType;
|
import refinedstorage.block.EnumGridType;
|
||||||
|
import refinedstorage.gui.grid.GridFilteredItem;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ public interface IGrid {
|
|||||||
|
|
||||||
void onSearchBoxModeChanged(int searchBoxMode);
|
void onSearchBoxModeChanged(int searchBoxMode);
|
||||||
|
|
||||||
List<ItemStack> getFilteredItems();
|
List<GridFilteredItem> getFilteredItems();
|
||||||
|
|
||||||
ItemHandlerBasic getFilter();
|
ItemHandlerBasic getFilter();
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import refinedstorage.api.storage.CompareUtils;
|
|||||||
import refinedstorage.block.BlockGrid;
|
import refinedstorage.block.BlockGrid;
|
||||||
import refinedstorage.block.EnumGridType;
|
import refinedstorage.block.EnumGridType;
|
||||||
import refinedstorage.container.ContainerGrid;
|
import refinedstorage.container.ContainerGrid;
|
||||||
|
import refinedstorage.gui.grid.GridFilteredItem;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
|
import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
|
||||||
import refinedstorage.inventory.ItemValidatorBasic;
|
import refinedstorage.inventory.ItemValidatorBasic;
|
||||||
@@ -67,7 +68,7 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
private InventoryCraftResult result = new InventoryCraftResult();
|
private InventoryCraftResult result = new InventoryCraftResult();
|
||||||
|
|
||||||
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RefinedStorageItems.PATTERN));
|
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, this, new ItemValidatorBasic(RefinedStorageItems.PATTERN));
|
||||||
private List<ItemStack> filteredItems = new ArrayList<ItemStack>();
|
private List<GridFilteredItem> filteredItems = new ArrayList<GridFilteredItem>();
|
||||||
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems);
|
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems);
|
||||||
|
|
||||||
private EnumGridType type;
|
private EnumGridType type;
|
||||||
@@ -137,7 +138,7 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getFilteredItems() {
|
public List<GridFilteredItem> getFilteredItems() {
|
||||||
return filteredItems;
|
return filteredItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import net.minecraft.world.World;
|
|||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.api.network.IGridHandler;
|
import refinedstorage.api.network.IGridHandler;
|
||||||
import refinedstorage.block.EnumGridType;
|
import refinedstorage.block.EnumGridType;
|
||||||
|
import refinedstorage.gui.grid.GridFilteredItem;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
|
import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
|
||||||
import refinedstorage.item.ItemWirelessGrid;
|
import refinedstorage.item.ItemWirelessGrid;
|
||||||
@@ -32,7 +33,7 @@ public class WirelessGrid implements IGrid {
|
|||||||
private int sortingDirection;
|
private int sortingDirection;
|
||||||
private int searchBoxMode;
|
private int searchBoxMode;
|
||||||
|
|
||||||
private List<ItemStack> filteredItems = new ArrayList<ItemStack>();
|
private List<GridFilteredItem> filteredItems = new ArrayList<GridFilteredItem>();
|
||||||
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems) {
|
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
@@ -137,7 +138,7 @@ public class WirelessGrid implements IGrid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getFilteredItems() {
|
public List<GridFilteredItem> getFilteredItems() {
|
||||||
return filteredItems;
|
return filteredItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user