Fix search trees, downgrade Forge so REI works in dev
This commit is contained in:
parent
d534dacf18
commit
7eaa286a7a
|
|
@ -9,7 +9,7 @@ loom.platform=forge
|
|||
|
||||
mod_id=modernfix
|
||||
minecraft_version=1.19.4
|
||||
forge_version=1.19.4-45.0.43
|
||||
forge_version=1.19.4-45.0.22
|
||||
parchment_version=2023.03.12
|
||||
refined_storage_version=4392788
|
||||
jei_version=13.1.0.2
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ package org.embeddedt.modernfix.mixin.perf.blast_search_trees;
|
|||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.searchtree.SearchRegistry;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.client.CreativeModeTabSearchRegistry;
|
||||
import net.minecraftforge.fml.ModContainer;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.forgespi.language.IModFileInfo;
|
||||
|
|
@ -16,29 +19,49 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@Mixin(Minecraft.class)
|
||||
public class MinecraftMixin {
|
||||
public abstract class MinecraftMixin {
|
||||
@Shadow @Final private SearchRegistry searchRegistry;
|
||||
|
||||
@Shadow public abstract <T> void populateSearchTree(SearchRegistry.Key<T> arg, List<T> list);
|
||||
|
||||
@Inject(method = "createSearchTrees", at = @At("HEAD"), cancellable = true)
|
||||
private void replaceSearchTrees(CallbackInfo ci) {
|
||||
ci.cancel();
|
||||
Optional<? extends ModContainer> jeiContainer = ModList.get().getModContainerById("jei");
|
||||
SearchRegistry.TreeBuilderSupplier<ItemStack> nameSupplier, tagSupplier;
|
||||
if(ModList.get().isLoaded("roughlyenoughitems")) {
|
||||
ModernFix.LOGGER.info("Replaced creative search logic with REI");
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, list -> new REIBackedSearchTree(false));
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, list -> new REIBackedSearchTree(true));
|
||||
nameSupplier = list -> new REIBackedSearchTree(false);
|
||||
tagSupplier = list -> new REIBackedSearchTree(true);
|
||||
} else if(jeiContainer.isPresent()) {
|
||||
ModernFix.LOGGER.info("Replaced creative search logic with JEI");
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, list -> new JEIBackedSearchTree(false));
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, list -> new JEIBackedSearchTree(true));
|
||||
nameSupplier = list -> new JEIBackedSearchTree(false);
|
||||
tagSupplier = list -> new JEIBackedSearchTree(true);
|
||||
} else {
|
||||
ModernFix.LOGGER.info("Replaced creative search logic with dummy implementation");
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, list -> new DummySearchTree<>());
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, list -> new DummySearchTree<>());
|
||||
nameSupplier = tagSupplier = list -> new DummySearchTree<>();
|
||||
}
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, nameSupplier);
|
||||
for(SearchRegistry.Key<ItemStack> nameKey : CreativeModeTabSearchRegistry.getNameSearchKeys().values()) {
|
||||
this.searchRegistry.register(nameKey, nameSupplier);
|
||||
}
|
||||
this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, tagSupplier);
|
||||
for(SearchRegistry.Key<ItemStack> tagKey : CreativeModeTabSearchRegistry.getTagSearchKeys().values()) {
|
||||
this.searchRegistry.register(tagKey, tagSupplier);
|
||||
}
|
||||
Map<CreativeModeTab, SearchRegistry.Key<ItemStack>> tagSearchKeys = CreativeModeTabSearchRegistry.getTagSearchKeys();
|
||||
CreativeModeTabSearchRegistry.getNameSearchKeys().forEach((tab, nameSearchKey) -> {
|
||||
SearchRegistry.Key<ItemStack> tagSearchKey = tagSearchKeys.get(tab);
|
||||
tab.setSearchTreeBuilder((contents) -> {
|
||||
this.populateSearchTree(nameSearchKey, contents);
|
||||
this.populateSearchTree(tagSearchKey, contents);
|
||||
});
|
||||
});
|
||||
this.searchRegistry.register(SearchRegistry.RECIPE_COLLECTIONS, list -> new DummySearchTree<>());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user