Fix crash in creative search
This commit is contained in:
parent
11de406065
commit
341631a8e1
|
|
@ -3,11 +3,15 @@ package org.embeddedt.modernfix.searchtree;
|
||||||
import mezz.jei.api.ingredients.ITypedIngredient;
|
import mezz.jei.api.ingredients.ITypedIngredient;
|
||||||
import mezz.jei.common.Internal;
|
import mezz.jei.common.Internal;
|
||||||
import mezz.jei.common.ingredients.IngredientFilter;
|
import mezz.jei.common.ingredients.IngredientFilter;
|
||||||
|
import mezz.jei.common.ingredients.IngredientFilterApi;
|
||||||
import mezz.jei.common.runtime.JeiRuntime;
|
import mezz.jei.common.runtime.JeiRuntime;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import org.embeddedt.modernfix.ModernFix;
|
||||||
import org.embeddedt.modernfix.mixin.perf.blast_search_trees.IngredientFilterInvoker;
|
import org.embeddedt.modernfix.mixin.perf.blast_search_trees.IngredientFilterInvoker;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -19,6 +23,8 @@ public class JEIBackedSearchTree extends DummySearchTree<ItemStack> {
|
||||||
private String lastSearchText = "";
|
private String lastSearchText = "";
|
||||||
private final List<ItemStack> listCache = new ArrayList<>();
|
private final List<ItemStack> listCache = new ArrayList<>();
|
||||||
|
|
||||||
|
private static Field filterField = null;
|
||||||
|
|
||||||
public JEIBackedSearchTree(boolean filteringByTag) {
|
public JEIBackedSearchTree(boolean filteringByTag) {
|
||||||
this.filteringByTag = filteringByTag;
|
this.filteringByTag = filteringByTag;
|
||||||
}
|
}
|
||||||
|
|
@ -26,7 +32,19 @@ public class JEIBackedSearchTree extends DummySearchTree<ItemStack> {
|
||||||
public List<ItemStack> search(String pSearchText) {
|
public List<ItemStack> search(String pSearchText) {
|
||||||
Optional<JeiRuntime> runtime = Internal.getRuntime();
|
Optional<JeiRuntime> runtime = Internal.getRuntime();
|
||||||
if(runtime.isPresent()) {
|
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 {
|
} else {
|
||||||
/* Use the default, dummy implementation */
|
/* Use the default, dummy implementation */
|
||||||
return super.search(pSearchText);
|
return super.search(pSearchText);
|
||||||
|
|
|
||||||
|
|
@ -56,3 +56,10 @@ mandatory = true
|
||||||
versionRange = "[1.18.2,1.19)"
|
versionRange = "[1.18.2,1.19)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
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"
|
||||||
Loading…
Reference in New Issue
Block a user