From 6d8f90d30324f5efa66d3725623992449a440dda Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 1 May 2023 21:18:19 -0400 Subject: [PATCH] Fix dynresources compat with Fabric API --- .../perf/dynamic_resources/ModelBakeryMixin.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 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 53358a06..2d7007af 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 @@ -36,11 +36,11 @@ import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; @@ -57,9 +57,6 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { @Shadow @Final public static ModelResourceLocation MISSING_MODEL_LOCATION; - @Dynamic - @Shadow(remap = false) protected abstract BlockModel method_4718(ResourceLocation location) throws IOException; - @Shadow @Final protected ResourceManager resourceManager; @Shadow private AtlasSet atlasSet; @Shadow @Final private Set loadingStack; @@ -130,12 +127,12 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { private Set blockStateFiles; private Set modelFiles; - @Redirect(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelBakery;loadBlockModel(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/BlockModel;", ordinal = 0)) - private BlockModel captureMissingModel(ModelBakery bakery, ResourceLocation location) throws IOException { - this.missingModel = this.method_4718(location); + @ModifyArg(method = "", at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", ordinal = 0), index = 1) + private Object captureMissingModel(Object model) { + this.missingModel = (UnbakedModel)model; this.blockStateFiles = new HashSet<>(); this.modelFiles = new HashSet<>(); - return (BlockModel)this.missingModel; + return this.missingModel; } /** @@ -145,6 +142,8 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery { */ @Inject(method = "loadTopLevel", at = @At("HEAD"), cancellable = true) private void addTopLevelFile(ModelResourceLocation location, CallbackInfo ci) { + if(location == MISSING_MODEL_LOCATION) + return; /* needed for FAPI compat */ ci.cancel(); if(Objects.equals(location.getVariant(), "inventory")) { modelFiles.add(new ResourceLocation(location.getNamespace(), "item/" + location.getPath()));