diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinBlockStateModelLoader.java b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinBlockStateModelLoader.java index 247f6ca1..6cb79cc4 100644 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinBlockStateModelLoader.java +++ b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinBlockStateModelLoader.java @@ -2,7 +2,6 @@ package org.embeddedt.modernfix.common.mixin.perf.dynamic_resources; import com.llamalad7.mixinextras.sugar.Local; import net.minecraft.client.resources.model.BlockStateModelLoader; -import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.Resource; import net.minecraft.world.level.block.Block; @@ -14,7 +13,6 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.Redirect; import java.util.List; import java.util.Map; @@ -30,6 +28,10 @@ public abstract class MixinBlockStateModelLoader { throw new AssertionError(); } + /** + * @author embeddedt + * @reason Load blockstate model definitions dynamically instead of all at once + */ @ModifyArg(method = "loadBlockStates", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture;")) private static Function>, ? extends CompletionStage> skipAOTBlockStateLoad(Function>, ? extends CompletionStage>> original, @Local(ordinal = 0) Function> mapper) { return resourceMap -> CompletableFuture.completedFuture(DynamicModelSystem.createDynamicBlockStateLoadedModels(resourceMap, (id, resources) -> { diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java index 55903216..a7e107fc 100644 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java +++ b/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_resources/MixinModelBakery.java @@ -15,6 +15,10 @@ import java.util.function.BiFunction; @Mixin(ModelBakery.class) @ClientOnlyMixin public class MixinModelBakery { + /** + * @author embeddedt + * @reason Create dynamic baked registry with cache instead of baking all entries from the input map at once + */ @Redirect(method = "bakeModels", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/thread/ParallelMapTransform;schedule(Ljava/util/Map;Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) private CompletableFuture> dynamicallyBake(Map input, BiFunction baker, Executor executor) { return CompletableFuture.completedFuture(DynamicModelSystem.createDynamicBakedRegistry(input, baker));