From 20782db23be14111d11ac60ae5d4b5a1d7853bb7 Mon Sep 17 00:00:00 2001 From: makamys Date: Thu, 30 Jun 2022 09:08:42 +0200 Subject: Make mixin members less conflict-prone From my testing, @Unique does its job for methods, but not fields, so I manually prefixed fields. --- .../makamys/neodymium/mixin/MixinRenderGlobal.java | 9 ++++---- .../neodymium/mixin/MixinWorldRenderer.java | 27 ++++++++++++---------- 2 files changed, 19 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java index f4d01ac..3574868 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java +++ b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java @@ -21,8 +21,7 @@ abstract class MixinRenderGlobal { @Shadow private WorldRenderer[] sortedWorldRenderers; - @Unique - private boolean isInsideUpdateRenderers; + private boolean nd$isInsideUpdateRenderers; @Redirect(method = "renderSortedRenderers", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/RenderGlobal;renderAllRenderLists(ID)V")) private void redirectRenderAllRenderLists(RenderGlobal thiz, int p1, double p2) { @@ -48,12 +47,12 @@ abstract class MixinRenderGlobal { @Inject(method = "updateRenderers", at = @At(value = "RETURN")) public void postUpdateRenderers(EntityLivingBase entity, boolean flag, CallbackInfoReturnable cir) { - if(Neodymium.isActive() && !isInsideUpdateRenderers) { - isInsideUpdateRenderers = true; + if(Neodymium.isActive() && !nd$isInsideUpdateRenderers) { + nd$isInsideUpdateRenderers = true; for(int i = 0; i < Neodymium.renderer.rendererSpeedup; i++) { ((RenderGlobal)(Object)this).updateRenderers(entity, flag); } - isInsideUpdateRenderers = false; + nd$isInsideUpdateRenderers = false; } } } diff --git a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java index ad7b3d2..d744409 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java +++ b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java @@ -5,6 +5,7 @@ import java.util.List; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -31,19 +32,19 @@ abstract class MixinWorldRenderer implements IWorldRenderer { @Shadow public boolean needsUpdate; - boolean savedDrawnStatus; + private boolean nd$savedDrawnStatus; - public List chunkMeshes; + private List nd$chunkMeshes; @Inject(method = {"updateRenderer", "updateRendererSort"}, at = @At(value = "HEAD")) private void preUpdateRenderer(CallbackInfo ci) { saveDrawnStatus(); if(Neodymium.isActive()) { - if(chunkMeshes != null) { - Collections.fill(chunkMeshes, null); + if(nd$chunkMeshes != null) { + Collections.fill(nd$chunkMeshes, null); } else { - chunkMeshes = Lists.newArrayList(null, null); + nd$chunkMeshes = Lists.newArrayList(null, null); } } } @@ -53,9 +54,9 @@ abstract class MixinWorldRenderer implements IWorldRenderer { notifyIfDrawnStatusChanged(); if(Neodymium.isActive()) { - if(chunkMeshes != null) { + if(nd$chunkMeshes != null) { Neodymium.renderer.onWorldRendererPost(WorldRenderer.class.cast(this)); - Collections.fill(chunkMeshes, null); + Collections.fill(nd$chunkMeshes, null); } } } @@ -63,8 +64,8 @@ abstract class MixinWorldRenderer implements IWorldRenderer { @Inject(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()I")) private void prePostRenderBlocks(int pass, EntityLivingBase entity, CallbackInfo ci) { if(Neodymium.isActive()) { - if(chunkMeshes != null) { - chunkMeshes.set(pass, ChunkMesh.fromTessellator(pass, WorldRenderer.class.cast(this), Tessellator.instance)); + if(nd$chunkMeshes != null) { + nd$chunkMeshes.set(pass, ChunkMesh.fromTessellator(pass, WorldRenderer.class.cast(this), Tessellator.instance)); } } } @@ -78,7 +79,7 @@ abstract class MixinWorldRenderer implements IWorldRenderer { @Override public List getChunkMeshes() { - return chunkMeshes; + return nd$chunkMeshes; } @Inject(method = "updateInFrustum", at = @At(value = "HEAD")) @@ -91,13 +92,15 @@ abstract class MixinWorldRenderer implements IWorldRenderer { notifyIfDrawnStatusChanged(); } + @Unique private void saveDrawnStatus() { - savedDrawnStatus = isDrawn(); + nd$savedDrawnStatus = isDrawn(); } + @Unique private void notifyIfDrawnStatusChanged() { boolean drawn = isDrawn(); - if(Neodymium.isActive() && drawn != savedDrawnStatus) { + if(Neodymium.isActive() && drawn != nd$savedDrawnStatus) { Neodymium.renderer.onWorldRendererChanged(WorldRenderer.class.cast(this), drawn ? NeoRenderer.WorldRendererChange.VISIBLE : NeoRenderer.WorldRendererChange.INVISIBLE); } } -- cgit