Actually filter based on compare/nbt

This commit is contained in:
Raoul Van den Berge
2016-08-03 00:13:50 +02:00
parent 89526df158
commit 649c457476
8 changed files with 47 additions and 16 deletions

View 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;
}
}

View File

@@ -100,12 +100,12 @@ public class GuiGrid extends GuiBase {
while (t.hasNext()) {
ClientStack stack = t.next();
List<ItemStack> filteredItems = grid.getFilteredItems();
List<GridFilteredItem> 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;

View File

@@ -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<ItemStack> filteredItems;
private List<GridFilteredItem> filteredItems;
public ItemHandlerGridFilterInGrid(List<ItemStack> filteredItems) {
public ItemHandlerGridFilterInGrid(List<GridFilteredItem> 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));
}
}
}

View File

@@ -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) {

View File

@@ -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<ItemStack> getFilteredItems();
List<GridFilteredItem> getFilteredItems();
ItemHandlerBasic getFilter();

View File

@@ -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<ItemStack> filteredItems = new ArrayList<ItemStack>();
private List<GridFilteredItem> filteredItems = new ArrayList<GridFilteredItem>();
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems);
private EnumGridType type;
@@ -137,7 +138,7 @@ public class TileGrid extends TileNode implements IGrid {
}
@Override
public List<ItemStack> getFilteredItems() {
public List<GridFilteredItem> getFilteredItems() {
return filteredItems;
}

View File

@@ -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<ItemStack> filteredItems = new ArrayList<ItemStack>();
private List<GridFilteredItem> filteredItems = new ArrayList<GridFilteredItem>();
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems) {
@Override
protected void onContentsChanged(int slot) {
@@ -137,7 +138,7 @@ public class WirelessGrid implements IGrid {
}
@Override
public List<ItemStack> getFilteredItems() {
public List<GridFilteredItem> getFilteredItems() {
return filteredItems;
}