diff --git a/src/main/java/net/kaupenjoe/tutorialmod/TutorialModClient.java b/src/main/java/net/kaupenjoe/tutorialmod/TutorialModClient.java index 2a14f6a..5211c78 100644 --- a/src/main/java/net/kaupenjoe/tutorialmod/TutorialModClient.java +++ b/src/main/java/net/kaupenjoe/tutorialmod/TutorialModClient.java @@ -4,6 +4,7 @@ import com.terraformersmc.terraform.sign.SpriteIdentifierRegistry; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.kaupenjoe.tutorialmod.block.ModBlocks; @@ -21,9 +22,12 @@ import net.minecraft.client.render.TexturedRenderLayers; import net.minecraft.client.render.block.entity.BlockEntityRendererFactories; import net.minecraft.client.render.entity.FlyingItemEntityRenderer; +import net.minecraft.client.util.ModelIdentifier; import net.minecraft.client.util.SpriteIdentifier; public class TutorialModClient implements ClientModInitializer { + public static final ModelIdentifier RUBY_STAFF_3D = new ModelIdentifier(TutorialMod.MOD_ID, "ruby_staff_3d", "inventory"); + @Override public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.RUBY_DOOR, RenderLayer.getCutout()); @@ -50,5 +54,9 @@ public void onInitializeClient() { TerraformBoatClientHelper.registerModelLayers(ModBoats.CHESTNUT_BOAT_ID, false); EntityRendererRegistry.register(ModEntities.DICE_PROJECTILE, FlyingItemEntityRenderer::new); + + ModelLoadingPlugin.register(context -> { + context.addModels(RUBY_STAFF_3D); + }); } } diff --git a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererAccessor.java b/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererAccessor.java deleted file mode 100644 index d96963f..0000000 --- a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.kaupenjoe.tutorialmod.mixin; - -import net.minecraft.client.render.item.ItemModels; -import net.minecraft.client.render.item.ItemRenderer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ItemRenderer.class) -public interface ItemRendererAccessor { - @Accessor("models") - ItemModels mccourse$getModels(); -} \ No newline at end of file diff --git a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererMixin.java b/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererMixin.java index d041cc1..8c0682b 100644 --- a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererMixin.java +++ b/src/main/java/net/kaupenjoe/tutorialmod/mixin/ItemRendererMixin.java @@ -1,24 +1,29 @@ package net.kaupenjoe.tutorialmod.mixin; -import net.kaupenjoe.tutorialmod.TutorialMod; +import net.kaupenjoe.tutorialmod.TutorialModClient; import net.kaupenjoe.tutorialmod.item.ModItems; import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.item.ItemModels; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.json.ModelTransformationMode; -import net.minecraft.client.util.ModelIdentifier; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Final; 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.ModifyVariable; @Mixin(ItemRenderer.class) public abstract class ItemRendererMixin { + @Shadow + private @Final ItemModels models; + @ModifyVariable(method = "renderItem", at = @At(value = "HEAD"), argsOnly = true) - public BakedModel useRubyStaffModel(BakedModel value, ItemStack stack, ModelTransformationMode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { + private BakedModel useRubyStaffModel(BakedModel value, ItemStack stack, ModelTransformationMode renderMode, boolean leftHanded, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { if (stack.isOf(ModItems.RUBY_STAFF) && renderMode != ModelTransformationMode.GUI) { - return ((ItemRendererAccessor) this).mccourse$getModels().getModelManager().getModel(new ModelIdentifier(TutorialMod.MOD_ID, "ruby_staff_3d", "inventory")); + return models.getModelManager().getModel(TutorialModClient.RUBY_STAFF_3D); } return value; } diff --git a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ModelLoaderMixin.java b/src/main/java/net/kaupenjoe/tutorialmod/mixin/ModelLoaderMixin.java deleted file mode 100644 index 321e046..0000000 --- a/src/main/java/net/kaupenjoe/tutorialmod/mixin/ModelLoaderMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.kaupenjoe.tutorialmod.mixin; - -import net.kaupenjoe.tutorialmod.TutorialMod; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.render.model.ModelLoader; -import net.minecraft.client.render.model.json.JsonUnbakedModel; -import net.minecraft.client.util.ModelIdentifier; -import net.minecraft.util.Identifier; -import net.minecraft.util.profiler.Profiler; -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.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.List; -import java.util.Map; - -@Mixin(ModelLoader.class) -public abstract class ModelLoaderMixin { - @Shadow - protected abstract void addModel(ModelIdentifier modelId); - - @Inject(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/model/ModelLoader;addModel(Lnet/minecraft/client/util/ModelIdentifier;)V", ordinal = 3, shift = At.Shift.AFTER)) - public void addRubyStaff(BlockColors blockColors, Profiler profiler, Map jsonUnbakedModels, Map> blockStates, CallbackInfo ci) { - this.addModel(new ModelIdentifier(TutorialMod.MOD_ID, "ruby_staff_3d", "inventory")); - } -} \ No newline at end of file diff --git a/src/main/resources/tutorialmod.mixins.json b/src/main/resources/tutorialmod.mixins.json index f56facf..cc4e0da 100644 --- a/src/main/resources/tutorialmod.mixins.json +++ b/src/main/resources/tutorialmod.mixins.json @@ -6,9 +6,7 @@ "ExampleMixin" ], "client": [ - "ItemRendererAccessor", - "ItemRendererMixin", - "ModelLoaderMixin" + "ItemRendererMixin" ], "injectors": { "defaultRequire": 1