diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a425c78..68ff03d61 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ - Port to Minecraft 1.14 (raoulvdberge) - Removed the Reader and Writer (raoulvdberge) - Removed covers (raoulvdberge) +- Oredict mode for Patterns has been replaced with "Exact mode" (by default on). When exact mode is off, Refined Storage will use equivalent items or fluids from the Minecraft item/fluid tag system (raoulvdberge) +- Grid filtering with "$" now does filtering based on item/fluid tag name instead of oredict name (raoulvdberge) - When binding a network item to a network you can now bind to any network block, not only the Controller (raoulvdberge) ### 1.6.16 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/GridFilterParser.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/GridFilterParser.java index 1f0d5636c..d689ec9ce 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/GridFilterParser.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/GridFilterParser.java @@ -52,7 +52,7 @@ public final class GridFilterParser { } else if (part.startsWith("#")) { gridFilters.add(new TooltipGridFilter(part.substring(1))); } else if (part.startsWith("$")) { - gridFilters.add(new OredictGridFilter(part.substring(1))); + gridFilters.add(new TagGridFilter(part.substring(1))); } else { gridFilters.add(new NameGridFilter(part)); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/OredictGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/OredictGridFilter.java deleted file mode 100644 index 64695fb9e..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/OredictGridFilter.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.raoulvdberge.refinedstorage.screen.grid.filtering; - -import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack; - -import java.util.Arrays; -import java.util.function.Predicate; - -public class OredictGridFilter implements Predicate { - private String oreName; - - public OredictGridFilter(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/screen/grid/filtering/TagGridFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/TagGridFilter.java new file mode 100644 index 000000000..18cc2d59e --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/filtering/TagGridFilter.java @@ -0,0 +1,18 @@ +package com.raoulvdberge.refinedstorage.screen.grid.filtering; + +import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack; + +import java.util.function.Predicate; + +public class TagGridFilter implements Predicate { + private String tagName; + + public TagGridFilter(String tagName) { + this.tagName = tagName.toLowerCase(); + } + + @Override + public boolean test(IGridStack stack) { + return stack.getTags().stream().anyMatch(name -> name.toLowerCase().contains(this.tagName)); + } +} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/FluidGridStack.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/FluidGridStack.java index 7c9a55244..181cbcd72 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/FluidGridStack.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/FluidGridStack.java @@ -5,12 +5,15 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.render.FluidRenderer; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import net.minecraft.client.resources.I18n; +import net.minecraft.tags.FluidTags; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.annotation.Nullable; +import java.util.HashSet; +import java.util.Set; import java.util.UUID; public class FluidGridStack implements IGridStack { @@ -22,6 +25,7 @@ public class FluidGridStack implements IGridStack { private StorageTrackerEntry entry; private boolean craftable; + private Set cachedTags; private String cachedName; private String cachedTooltip; private String cachedModId; @@ -92,9 +96,16 @@ public class FluidGridStack implements IGridStack { } @Override - public String[] getOreIds() { - return new String[]{}; - //return new String[]{stack.getFluid().getName()}; + public Set getTags() { + if (cachedTags == null) { + cachedTags = new HashSet<>(); + + for (ResourceLocation owningTag : FluidTags.getCollection().getOwningTags(stack.getFluid())) { + cachedTags.add(owningTag.getPath()); + } + } + + return cachedTags; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/IGridStack.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/IGridStack.java index fa8d67f6e..a3a312826 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/IGridStack.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/IGridStack.java @@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.storage.tracker.StorageTrackerEntry; import com.raoulvdberge.refinedstorage.screen.BaseScreen; import javax.annotation.Nullable; +import java.util.Set; import java.util.UUID; public interface IGridStack { @@ -15,7 +16,7 @@ public interface IGridStack { String getModName(); - String[] getOreIds(); + Set getTags(); String getTooltip(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/ItemGridStack.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/ItemGridStack.java index 09bdbf4dd..241203a1b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/ItemGridStack.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/stack/ItemGridStack.java @@ -6,13 +6,17 @@ import com.raoulvdberge.refinedstorage.screen.BaseScreen; import com.raoulvdberge.refinedstorage.util.RenderUtils; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.ModContainer; import net.minecraftforge.fml.ModList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.annotation.Nullable; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @@ -27,6 +31,7 @@ public class ItemGridStack implements IGridStack { @Nullable private StorageTrackerEntry entry; + private Set cachedTags; private String cachedModId; private String cachedModName; private String cachedTooltip; @@ -105,17 +110,16 @@ public class ItemGridStack implements IGridStack { } @Override - public String[] getOreIds() { - if (oreIds == null) { - if (stack.isEmpty()) { - oreIds = new String[]{}; - } else { - oreIds = new String[]{};//TODO OreDict - //oreIds = Arrays.stream(OreDictionary.getOreIDs(stack)).mapToObj(OreDictionary::getOreName).toArray(String[]::new); + public Set getTags() { + if (cachedTags == null) { + cachedTags = new HashSet<>(); + + for (ResourceLocation owningTag : ItemTags.getCollection().getOwningTags(stack.getItem())) { + cachedTags.add(owningTag.getPath()); } } - return oreIds; + return cachedTags; } @Override