From 06726296fe46bdd86e8c6e498ef82ad37d523d8f Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 17 Mar 2024 15:52:41 -0400 Subject: [PATCH] Speed up ModelBakeEventHelper constructor --- .../forge/dynresources/ModelBakeEventHelper.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java index 1aa4609f..19bf81d0 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/dynresources/ModelBakeEventHelper.java @@ -5,10 +5,11 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.common.graph.GraphBuilder; import com.google.common.graph.MutableGraph; +import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fml.ModContainer; @@ -16,7 +17,6 @@ import net.minecraftforge.fml.ModList; import net.minecraftforge.forgespi.language.IModInfo; import net.minecraftforge.registries.ForgeRegistries; import org.embeddedt.modernfix.ModernFix; -import org.embeddedt.modernfix.dynamicresources.ModelLocationCache; import org.embeddedt.modernfix.util.ForwardingInclDefaultsMap; import org.jetbrains.annotations.Nullable; @@ -40,14 +40,13 @@ public class ModelBakeEventHelper { public ModelBakeEventHelper(Map modelRegistry) { this.modelRegistry = modelRegistry; this.topLevelModelLocations = new HashSet<>(modelRegistry.keySet()); + // Skip going through ModelLocationCache because most of the accesses will be misses for(Block block : ForgeRegistries.BLOCKS) { for(BlockState state : block.getStateDefinition().getPossibleStates()) { - topLevelModelLocations.add(ModelLocationCache.get(state)); + topLevelModelLocations.add(BlockModelShaper.stateToModelLocation(state)); } } - for(Item item : ForgeRegistries.ITEMS) { - topLevelModelLocations.add(ModelLocationCache.get(item)); - } + ForgeRegistries.ITEMS.getKeys().forEach(key -> topLevelModelLocations.add(new ModelResourceLocation(key, "inventory"))); this.dependencyGraph = GraphBuilder.undirected().build(); ModList.get().forEachModContainer((id, mc) -> { this.dependencyGraph.addNode(id);