diff --git a/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java b/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java index 835fd425..6f48b77c 100644 --- a/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java +++ b/src/main/java/org/embeddedt/modernfix/searchtree/JEIBackedSearchTree.java @@ -3,11 +3,15 @@ package org.embeddedt.modernfix.searchtree; import mezz.jei.api.ingredients.ITypedIngredient; import mezz.jei.common.Internal; import mezz.jei.common.ingredients.IngredientFilter; +import mezz.jei.common.ingredients.IngredientFilterApi; import mezz.jei.common.runtime.JeiRuntime; import net.minecraft.world.item.ItemStack; +import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.mixin.perf.blast_search_trees.IngredientFilterInvoker; +import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -19,6 +23,8 @@ public class JEIBackedSearchTree extends DummySearchTree { private String lastSearchText = ""; private final List listCache = new ArrayList<>(); + private static Field filterField = null; + public JEIBackedSearchTree(boolean filteringByTag) { this.filteringByTag = filteringByTag; } @@ -26,7 +32,19 @@ public class JEIBackedSearchTree extends DummySearchTree { public List search(String pSearchText) { Optional runtime = Internal.getRuntime(); if(runtime.isPresent()) { - return this.searchJEI((IngredientFilter)runtime.get().getIngredientFilter(), pSearchText); + IngredientFilterApi iFilterApi = (IngredientFilterApi)runtime.get().getIngredientFilter(); + IngredientFilter filter; + try { + if(filterField == null) { + filterField = IngredientFilterApi.class.getDeclaredField("ingredientFilter"); + filterField.setAccessible(true); + } + filter = (IngredientFilter)filterField.get(iFilterApi); + } catch(ReflectiveOperationException e) { + ModernFix.LOGGER.error(e); + return Collections.emptyList(); + } + return this.searchJEI(filter, pSearchText); } else { /* Use the default, dummy implementation */ return super.search(pSearchText); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 8d5ad1e9..f2b71a0e 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -56,3 +56,10 @@ mandatory = true versionRange = "[1.18.2,1.19)" ordering = "NONE" side = "BOTH" +[[dependencies.modernfix]] +modId = "jei" +mandatory = false +# This version range declares a minimum of the current minecraft version up to but not including the next major version +versionRange = "[10,)" +ordering = "BEFORE" +side = "CLIENT" \ No newline at end of file