diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/ender_dragon_leak/EnderDragonRendererMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/ender_dragon_leak/EnderDragonRendererMixin.java new file mode 100644 index 00000000..d3600b87 --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/bugfix/ender_dragon_leak/EnderDragonRendererMixin.java @@ -0,0 +1,24 @@ +package org.embeddedt.modernfix.common.mixin.bugfix.ender_dragon_leak; + +import net.minecraft.client.renderer.entity.EnderDragonRenderer; +import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +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.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(EnderDragonRenderer.class) +@ClientOnlyMixin +public abstract class EnderDragonRendererMixin { + @Shadow @Final private EnderDragonRenderer.DragonModel model; + + /** + * Prevent leaking the client world through the entity reference. + */ + @Inject(method = "render(Lnet/minecraft/world/entity/boss/enderdragon/EnderDragon;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At("RETURN")) + private void clearDragonEntityReference(CallbackInfo ci) { + this.model.entity = null; + } +} diff --git a/common/src/main/resources/modernfix.accesswidener b/common/src/main/resources/modernfix.accesswidener index 84a6a568..3e0503ec 100644 --- a/common/src/main/resources/modernfix.accesswidener +++ b/common/src/main/resources/modernfix.accesswidener @@ -33,4 +33,5 @@ accessible field net/minecraft/client/KeyMapping ALL Ljava/util/Map; accessible field net/minecraft/server/packs/resources/MultiPackResourceManager namespacedManagers Ljava/util/Map; accessible field net/minecraft/resources/RegistryOps registryAccess Lnet/minecraft/core/RegistryAccess; accessible field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel; -mutable field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel; \ No newline at end of file +mutable field net/minecraft/client/renderer/block/model/ItemOverrides$BakedOverride model Lnet/minecraft/client/resources/model/BakedModel; +accessible field net/minecraft/client/renderer/entity/EnderDragonRenderer$DragonModel entity Lnet/minecraft/world/entity/boss/enderdragon/EnderDragon;