Actually filter based on compare/nbt
This commit is contained in:
@@ -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**
|
||||
|
||||
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()) {
|
||||
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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user