From 75bb8d2622ee41eba82017011ef62c95cfb90da1 Mon Sep 17 00:00:00 2001 From: way2muchnoise Date: Thu, 5 Jan 2017 18:13:59 +0100 Subject: [PATCH] add Ore Dictionary grid filter, implements #814 --- .../gui/grid/filtering/GridFilterOreDict.java | 19 +++++++++++++++++++ .../gui/grid/filtering/GridFilterParser.java | 2 ++ .../gui/grid/stack/GridStackFluid.java | 5 +++++ .../gui/grid/stack/GridStackItem.java | 13 +++++++++++++ .../gui/grid/stack/IGridStack.java | 2 ++ 5 files changed, 41 insertions(+) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterOreDict.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterOreDict.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterOreDict.java new file mode 100644 index 000000000..d10b57cee --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/filtering/GridFilterOreDict.java @@ -0,0 +1,19 @@ +package com.raoulvdberge.refinedstorage.gui.grid.filtering; + +import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack; + +import java.util.Arrays; +import java.util.function.Predicate; + +public class GridFilterOreDict implements Predicate { + private String oreName; + + public GridFilterOreDict(String oreName) { + this.oreName = oreName.toLowerCase(); + } + + @Override + public boolean test(IGridStack stack) { + return Arrays.stream(stack.getOreIds()).anyMatch(oreName -> oreName.toLowerCase().contains(this.oreName)); + } +} \ No newline at end of file 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 7a39a2933..fee4b6215 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 @@ -18,6 +18,8 @@ public class GridFilterParser { filters.add(new GridFilterMod(part.substring(1))); } else if (part.startsWith("#")) { filters.add(new GridFilterTooltip(part.substring(1))); + } else if (part.startsWith("$")) { + filters.add(new GridFilterOreDict(part.substring(1))); } else { filters.add(new GridFilterName(part)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackFluid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackFluid.java index 9ad68c569..fcf8b3ccd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackFluid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackFluid.java @@ -33,6 +33,11 @@ public class GridStackFluid implements IGridStack { return stack.getFluid().getStill(stack).getResourceDomain(); } + @Override + public String[] getOreIds() { + return new String[]{ stack.getFluid().getName() }; + } + @Override public String getTooltip() { return stack.getFluid().getLocalizedName(stack); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackItem.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackItem.java index de87db27b..7ca332e52 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/GridStackItem.java @@ -9,19 +9,24 @@ import net.minecraft.client.resources.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.oredict.OreDictionary; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class GridStackItem implements IGridStack { private int hash; private ItemStack stack; private boolean craftable; private boolean displayCraftText; + private String[] oreIds; public GridStackItem(ByteBuf buf) { stack = RSUtils.readItemStack(buf); hash = buf.readInt(); craftable = buf.readBoolean(); + oreIds = null; setDisplayCraftText(buf.readBoolean()); } @@ -61,6 +66,14 @@ public class GridStackItem implements IGridStack { return Item.REGISTRY.getNameForObject(stack.getItem()).getResourceDomain(); } + @Override + public String[] getOreIds() { + if (oreIds == null) { + oreIds = Arrays.stream(OreDictionary.getOreIDs(stack)).mapToObj(OreDictionary::getOreName).collect(Collectors.toList()).toArray(new String[0]); + } + return oreIds; + } + @Override public String getTooltip() { List lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/IGridStack.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/IGridStack.java index e8f825a17..5270bd708 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/IGridStack.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/stack/IGridStack.java @@ -9,6 +9,8 @@ public interface IGridStack { String getModId(); + String[] getOreIds(); + String getTooltip(); int getQuantity();