Add support for using REI for creative search
This commit is contained in:
parent
63fa31bde1
commit
eed3a80fc1
|
|
@ -62,6 +62,7 @@ repositories {
|
||||||
maven { // CTM
|
maven { // CTM
|
||||||
url "https://maven.tterrag.com/"
|
url "https://maven.tterrag.com/"
|
||||||
}
|
}
|
||||||
|
maven { url "https://maven.shedaniel.me" }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
@ -92,6 +93,7 @@ dependencies {
|
||||||
modRuntimeOnly("curse.maven:jei-238222:4352925")
|
modRuntimeOnly("curse.maven:jei-238222:4352925")
|
||||||
|
|
||||||
modCompileOnly("curse.maven:jeresources-240630:3831559")
|
modCompileOnly("curse.maven:jeresources-240630:3831559")
|
||||||
|
modCompileOnly "me.shedaniel:RoughlyEnoughItems-forge:${rei_version}"
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,5 @@ forge_version=1.18.2-40.2.1
|
||||||
lazydfu_version=3544496
|
lazydfu_version=3544496
|
||||||
parchment_version=2022.11.06
|
parchment_version=2022.11.06
|
||||||
refined_storage_version=4392829
|
refined_storage_version=4392829
|
||||||
jei_version=10.2.1.283
|
jei_version=10.2.1.283
|
||||||
|
rei_version=8.3.590
|
||||||
|
|
@ -46,9 +46,9 @@ public class ModernFixEarlyConfig {
|
||||||
this.addMixinRule("perf.faster_texture_stitching", false);
|
this.addMixinRule("perf.faster_texture_stitching", false);
|
||||||
/* off by default in 1.18 because it doesn't work as well */
|
/* off by default in 1.18 because it doesn't work as well */
|
||||||
this.addMixinRule("perf.faster_singleplayer_load", false);
|
this.addMixinRule("perf.faster_singleplayer_load", false);
|
||||||
/* Keep this off if JEI isn't installed to prevent breaking vanilla gameplay */
|
/* Keep this off if JEI/REI isn't installed to prevent breaking vanilla gameplay */
|
||||||
Optional<ModInfo> jeiMod = FMLLoader.getLoadingModList().getMods().stream().filter(mod -> mod.getModId().equals("jei")).findFirst();
|
Optional<ModInfo> jeiMod = FMLLoader.getLoadingModList().getMods().stream().filter(mod -> mod.getModId().equals("jei")).findFirst();
|
||||||
this.addMixinRule("perf.blast_search_trees", jeiMod.isPresent() && jeiMod.get().getVersion().getMajorVersion() >= 10);
|
this.addMixinRule("perf.blast_search_trees", (jeiMod.isPresent() && jeiMod.get().getVersion().getMajorVersion() >= 10) || FMLLoader.getLoadingModList().getModFileById("roughlyenoughitems") != null);
|
||||||
this.addMixinRule("safety", true);
|
this.addMixinRule("safety", true);
|
||||||
this.addMixinRule("launch.transformer_cache", false);
|
this.addMixinRule("launch.transformer_cache", false);
|
||||||
this.addMixinRule("launch.class_search_cache", true);
|
this.addMixinRule("launch.class_search_cache", true);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.forgespi.language.IModFileInfo;
|
import net.minecraftforge.forgespi.language.IModFileInfo;
|
||||||
import org.embeddedt.modernfix.searchtree.DummySearchTree;
|
import org.embeddedt.modernfix.searchtree.DummySearchTree;
|
||||||
import org.embeddedt.modernfix.searchtree.JEIBackedSearchTree;
|
import org.embeddedt.modernfix.searchtree.JEIBackedSearchTree;
|
||||||
|
import org.embeddedt.modernfix.searchtree.REIBackedSearchTree;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
@ -27,6 +28,9 @@ public class MinecraftMixin {
|
||||||
if(jeiContainer.isPresent() && jeiContainer.get().getModInfo().getVersion().getMajorVersion() >= 10) {
|
if(jeiContainer.isPresent() && jeiContainer.get().getModInfo().getVersion().getMajorVersion() >= 10) {
|
||||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new JEIBackedSearchTree(false));
|
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new JEIBackedSearchTree(false));
|
||||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new JEIBackedSearchTree(true));
|
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new JEIBackedSearchTree(true));
|
||||||
|
} else if(ModList.get().isLoaded("roughlyenoughitems")) {
|
||||||
|
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new REIBackedSearchTree(false));
|
||||||
|
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new REIBackedSearchTree(true));
|
||||||
} else {
|
} else {
|
||||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new DummySearchTree<>());
|
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, new DummySearchTree<>());
|
||||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new DummySearchTree<>());
|
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, new DummySearchTree<>());
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
package org.embeddedt.modernfix.searchtree;
|
||||||
|
|
||||||
|
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
|
||||||
|
import me.shedaniel.rei.api.common.entry.EntryStack;
|
||||||
|
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
|
||||||
|
import me.shedaniel.rei.impl.client.search.AsyncSearchManager;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class REIBackedSearchTree extends DummySearchTree<ItemStack> {
|
||||||
|
private final AsyncSearchManager searchManager = new AsyncSearchManager(EntryRegistry.getInstance()::getPreFilteredList, () -> {
|
||||||
|
return stack -> true;
|
||||||
|
}, EntryStack::normalize);
|
||||||
|
|
||||||
|
private final boolean filteringByTag;
|
||||||
|
private String lastSearchText = "";
|
||||||
|
private final List<ItemStack> listCache = new ArrayList<>();
|
||||||
|
|
||||||
|
public REIBackedSearchTree(boolean filteringByTag) {
|
||||||
|
this.filteringByTag = filteringByTag;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> search(String pSearchText) {
|
||||||
|
if(true) {
|
||||||
|
return this.searchREI(pSearchText);
|
||||||
|
} else {
|
||||||
|
/* Use the default, dummy implementation */
|
||||||
|
return super.search(pSearchText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ItemStack> searchREI(String pSearchText) {
|
||||||
|
if(!pSearchText.equals(lastSearchText)) {
|
||||||
|
listCache.clear();
|
||||||
|
this.searchManager.updateFilter(pSearchText);
|
||||||
|
List<EntryStack<?>> stacks = this.searchManager.getNow();
|
||||||
|
for(EntryStack<?> stack : stacks) {
|
||||||
|
if(stack.getType() == VanillaEntryTypes.ITEM) {
|
||||||
|
listCache.add(stack.cheatsAs().getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastSearchText = pSearchText;
|
||||||
|
}
|
||||||
|
return listCache;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user