Lie to model event handlers about some flags to speed up loading

This commit is contained in:
embeddedt 2023-02-11 11:50:01 -05:00
parent 327813fa91
commit 7dcce90a82
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
3 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,21 @@
package org.embeddedt.modernfix.mixin.perf.faster_baking;
import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.ModelManager;
import net.minecraft.profiler.IProfiler;
import net.minecraft.resources.IResourceManager;
import org.embeddedt.modernfix.models.LazyBakedModel;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ModelManager.class)
public class ModelManagerMixin {
@Inject(method = "apply(Lnet/minecraft/client/renderer/model/ModelBakery;Lnet/minecraft/resources/IResourceManager;Lnet/minecraft/profiler/IProfiler;)V",
at = @At(value = "INVOKE", target = "Lnet/minecraftforge/client/ForgeHooksClient;onModelBake(Lnet/minecraft/client/renderer/model/ModelManager;Ljava/util/Map;Lnet/minecraftforge/client/model/ModelLoader;)V", shift = At.Shift.AFTER)
)
private void allowBaking(ModelBakery pObject, IResourceManager pResourceManager, IProfiler pProfiler, CallbackInfo ci) {
LazyBakedModel.allowBakeForFlags = true;
}
}

View File

@ -27,6 +27,12 @@ public class LazyBakedModel implements IBakedModel {
private IBakedModel delegate = null;
private Supplier<IBakedModel> delegateSupplier;
/**
* This flag is changed to true when we should bake instead of returning reasonable defaults for certain
* method calls.
*/
public static boolean allowBakeForFlags = false;
public LazyBakedModel(Supplier<IBakedModel> delegateSupplier) {
this.delegateSupplier = delegateSupplier;
}
@ -61,6 +67,10 @@ public class LazyBakedModel implements IBakedModel {
@Override
public boolean isCustomRenderer() {
if(this.delegate != null)
return this.delegate.isCustomRenderer();
if(!LazyBakedModel.allowBakeForFlags)
return false;
return computeDelegate().isCustomRenderer();
}

View File

@ -54,6 +54,7 @@
"perf.blast_search_trees.IngredientFilterInvoker",
"perf.faster_baking.ModelBakeryMixin",
"perf.faster_baking.BlockModelShapesMixin",
"perf.faster_baking.ModelManagerMixin",
"perf.cache_model_materials.VanillaModelMixin",
"perf.cache_model_materials.MultipartMixin",
"bugfix.packet_leak.ClientPlayNetHandlerMixin",