From 377f59847e997616c557e9d0366d899e563e038f Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 30 Jul 2023 12:49:43 -0400 Subject: [PATCH] Skip dynamic resources single blockstate optimization when outside world This should improve performance of model baking events during launch --- .../fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 3 ++- .../forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 5e614c9b..86208ea6 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -9,6 +9,7 @@ import com.google.common.collect.ImmutableList; import com.mojang.math.Transformation; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.fabricmc.fabric.impl.client.model.ModelLoadingRegistryImpl; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.BlockModelDefinition; import net.minecraft.client.renderer.block.model.ItemModelGenerator; @@ -443,7 +444,7 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/StateDefinition;getPossibleStates()Lcom/google/common/collect/ImmutableList;")) private ImmutableList loadOnlyRelevantBlockState(StateDefinition stateDefinition, ResourceLocation location) { - if(this.inTextureGatheringPass || !(location instanceof ModelResourceLocation)) + if(this.inTextureGatheringPass || !(location instanceof ModelResourceLocation) || Minecraft.getInstance().level == null) return stateDefinition.getPossibleStates(); else return ModelBakeryHelpers.getBlockStatesForMRL(stateDefinition, (ModelResourceLocation)location); diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java index 66ab29ad..f3bdb7d6 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelBakeryMixin.java @@ -6,6 +6,7 @@ import com.google.common.cache.RemovalNotification; import com.google.common.collect.ImmutableList; import com.google.gson.JsonElement; import com.mojang.math.Transformation; +import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.ItemModelGenerator; @@ -305,7 +306,7 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { } @Redirect(method = "loadModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/StateDefinition;getPossibleStates()Lcom/google/common/collect/ImmutableList;")) private ImmutableList loadOnlyRelevantBlockState(StateDefinition stateDefinition, ResourceLocation location) { - if(!(location instanceof ModelResourceLocation)) + if(!(location instanceof ModelResourceLocation) || Minecraft.getInstance().level == null) return stateDefinition.getPossibleStates(); return ModelBakeryHelpers.getBlockStatesForMRL(stateDefinition, (ModelResourceLocation)location); }