From b71b950132db103d85000cf322a4217e6b7c5e53 Mon Sep 17 00:00:00 2001 From: makamys Date: Thu, 9 Jun 2022 13:26:00 +0200 Subject: Clean up and document mixins --- .../java/makamys/neodymium/MixinConfigPlugin.java | 6 ++-- .../makamys/neodymium/mixin/MixinChunkCache.java | 29 ----------------- .../neodymium/mixin/MixinEntityRenderer.java | 35 --------------------- .../makamys/neodymium/mixin/MixinRenderBlocks.java | 29 ----------------- .../makamys/neodymium/mixin/MixinRenderGlobal.java | 1 + .../mixin/MixinRenderGlobal_OptiFine.java | 1 + .../neodymium/mixin/MixinWorldRenderer.java | 1 + .../mixin/unused/lod/MixinChunkCache.java | 30 ++++++++++++++++++ .../mixin/unused/lod/MixinEntityRenderer.java | 36 ++++++++++++++++++++++ .../mixin/unused/lod/MixinRenderBlocks.java | 30 ++++++++++++++++++ 10 files changed, 101 insertions(+), 97 deletions(-) delete mode 100644 src/main/java/makamys/neodymium/mixin/MixinChunkCache.java delete mode 100644 src/main/java/makamys/neodymium/mixin/MixinEntityRenderer.java delete mode 100644 src/main/java/makamys/neodymium/mixin/MixinRenderBlocks.java create mode 100644 src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java create mode 100644 src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java create mode 100644 src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java (limited to 'src/main/java') diff --git a/src/main/java/makamys/neodymium/MixinConfigPlugin.java b/src/main/java/makamys/neodymium/MixinConfigPlugin.java index cc4bc30..a2357d4 100644 --- a/src/main/java/makamys/neodymium/MixinConfigPlugin.java +++ b/src/main/java/makamys/neodymium/MixinConfigPlugin.java @@ -39,11 +39,9 @@ public class MixinConfigPlugin implements IMixinConfigPlugin { @Override public List getMixins() { List mixins = new ArrayList<>(); - mixins.addAll(Arrays.asList("MixinChunkCache", - "MixinEntityRenderer", + mixins.addAll(Arrays.asList( "MixinRenderGlobal", - "MixinWorldRenderer", - "MixinRenderBlocks")); + "MixinWorldRenderer")); if (isOptiFinePresent()) { System.out.println("Detected OptiFine"); diff --git a/src/main/java/makamys/neodymium/mixin/MixinChunkCache.java b/src/main/java/makamys/neodymium/mixin/MixinChunkCache.java deleted file mode 100644 index 331e3cf..0000000 --- a/src/main/java/makamys/neodymium/mixin/MixinChunkCache.java +++ /dev/null @@ -1,29 +0,0 @@ -package makamys.neodymium.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import makamys.neodymium.Neodymium; -import makamys.neodymium.renderer.FarChunkCache; -import makamys.neodymium.renderer.NeoRenderer; -import net.minecraft.world.ChunkCache; -import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; - -@Mixin(ChunkCache.class) -abstract class MixinChunkCache { - - @Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getChunkFromChunkCoords(II)Lnet/minecraft/world/chunk/Chunk;")) - private Chunk redirectGetChunkFromChunkCoords(World world, int p1, int p2) { - Chunk chunk = world.getChunkFromChunkCoords(p1, p2); - if(Neodymium.isActive() && FarChunkCache.class.isInstance(this.getClass()) && chunk.isEmpty()) { - Chunk myChunk = Neodymium.renderer.getChunkFromChunkCoords(p1, p2); - if(myChunk != null) { - chunk = myChunk; - } - } - return chunk; - } - -} diff --git a/src/main/java/makamys/neodymium/mixin/MixinEntityRenderer.java b/src/main/java/makamys/neodymium/mixin/MixinEntityRenderer.java deleted file mode 100644 index 6e5cf7b..0000000 --- a/src/main/java/makamys/neodymium/mixin/MixinEntityRenderer.java +++ /dev/null @@ -1,35 +0,0 @@ -package makamys.neodymium.mixin; - -import org.lwjgl.opengl.GL11; -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.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import makamys.neodymium.Neodymium; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.EntityRenderer; -import net.minecraft.entity.EntityLivingBase; - -@Mixin(EntityRenderer.class) -abstract class MixinEntityRenderer { - - @Shadow - private float farPlaneDistance; - - @Inject(method = "setupCameraTransform", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/EntityRenderer;farPlaneDistance:F", shift = At.Shift.AFTER, ordinal = 1)) - private void onConstructed(CallbackInfo ci) { - if(Neodymium.isActive()) { - farPlaneDistance *= Neodymium.renderer.getFarPlaneDistanceMultiplier(); - } - } - - @Inject(method = "setupFog", at = @At(value = "RETURN")) - private void afterSetupFog(int mode, float alpha, CallbackInfo ci) { - if(Neodymium.isActive()) { - Neodymium.renderer.afterSetupFog(mode, alpha, farPlaneDistance); - } - } -} diff --git a/src/main/java/makamys/neodymium/mixin/MixinRenderBlocks.java b/src/main/java/makamys/neodymium/mixin/MixinRenderBlocks.java deleted file mode 100644 index fdfbe65..0000000 --- a/src/main/java/makamys/neodymium/mixin/MixinRenderBlocks.java +++ /dev/null @@ -1,29 +0,0 @@ -package makamys.neodymium.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import makamys.neodymium.Neodymium; -import makamys.neodymium.renderer.FarChunkCache; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraft.world.chunk.Chunk; - -@Mixin(RenderBlocks.class) -abstract class MixinRenderBlocks { - - @Redirect(method = "renderBlockLiquid", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;shouldSideBeRendered(Lnet/minecraft/world/IBlockAccess;IIII)Z")) - public boolean shouldSideBeRendered(Block block, IBlockAccess ba, int x, int y, int z, int w) { - if(Neodymium.isActive()) { - return Neodymium.renderer.shouldSideBeRendered(block, ba, x, y, z, w); - } else { - return block.shouldSideBeRendered(ba, x, y, z, w); - } - } - -} diff --git a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java index 03b8aac..8814221 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java +++ b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal.java @@ -18,6 +18,7 @@ import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.entity.Entity; +/** Blocks vanilla chunk rendering while NeoRenderer is active. */ @Mixin(RenderGlobal.class) abstract class MixinRenderGlobal { diff --git a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal_OptiFine.java b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal_OptiFine.java index d63e3ad..c337c42 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal_OptiFine.java +++ b/src/main/java/makamys/neodymium/mixin/MixinRenderGlobal_OptiFine.java @@ -11,6 +11,7 @@ import makamys.neodymium.Neodymium; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderGlobal; +/** Blocks vanilla chunk rendering while NeoRenderer is active. (OptiFine compat) */ @Mixin(RenderGlobal.class) abstract class MixinRenderGlobal_OptiFine { diff --git a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java index 7d1ffd8..ee6908e 100644 --- a/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java +++ b/src/main/java/makamys/neodymium/mixin/MixinWorldRenderer.java @@ -27,6 +27,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.ChunkCache; import net.minecraft.world.World; +/** Inserts hooks in WorldRenderer to listen for changes, and to grab the tessellator data right before rendering. */ @Mixin(WorldRenderer.class) abstract class MixinWorldRenderer implements IWorldRenderer { diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java new file mode 100644 index 0000000..f1da9bb --- /dev/null +++ b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinChunkCache.java @@ -0,0 +1,30 @@ +package makamys.neodymium.mixin.unused.lod; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import makamys.neodymium.Neodymium; +import makamys.neodymium.renderer.FarChunkCache; +import makamys.neodymium.renderer.NeoRenderer; +import net.minecraft.world.ChunkCache; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +/** Unused remnant from LODMod. Handles reusage of Chunks when a LOD chunk becomes loaded. */ +@Mixin(ChunkCache.class) +abstract class MixinChunkCache { + + @Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getChunkFromChunkCoords(II)Lnet/minecraft/world/chunk/Chunk;")) + private Chunk redirectGetChunkFromChunkCoords(World world, int p1, int p2) { + Chunk chunk = world.getChunkFromChunkCoords(p1, p2); + if(Neodymium.isActive() && FarChunkCache.class.isInstance(this.getClass()) && chunk.isEmpty()) { + Chunk myChunk = Neodymium.renderer.getChunkFromChunkCoords(p1, p2); + if(myChunk != null) { + chunk = myChunk; + } + } + return chunk; + } + +} diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java new file mode 100644 index 0000000..a88ac72 --- /dev/null +++ b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinEntityRenderer.java @@ -0,0 +1,36 @@ +package makamys.neodymium.mixin.unused.lod; + +import org.lwjgl.opengl.GL11; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import makamys.neodymium.Neodymium; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.entity.EntityLivingBase; + +/** Unused remnant from LODMod. Handles changing fog distance. */ +@Mixin(EntityRenderer.class) +abstract class MixinEntityRenderer { + + @Shadow + private float farPlaneDistance; + + @Inject(method = "setupCameraTransform", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/EntityRenderer;farPlaneDistance:F", shift = At.Shift.AFTER, ordinal = 1)) + private void onConstructed(CallbackInfo ci) { + if(Neodymium.isActive()) { + farPlaneDistance *= Neodymium.renderer.getFarPlaneDistanceMultiplier(); + } + } + + @Inject(method = "setupFog", at = @At(value = "RETURN")) + private void afterSetupFog(int mode, float alpha, CallbackInfo ci) { + if(Neodymium.isActive()) { + Neodymium.renderer.afterSetupFog(mode, alpha, farPlaneDistance); + } + } +} diff --git a/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java new file mode 100644 index 0000000..27b0605 --- /dev/null +++ b/src/main/java/makamys/neodymium/mixin/unused/lod/MixinRenderBlocks.java @@ -0,0 +1,30 @@ +package makamys.neodymium.mixin.unused.lod; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import makamys.neodymium.Neodymium; +import makamys.neodymium.renderer.FarChunkCache; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; + +/** Unused remnant from LODMod. Disables a wall being drawn on the edges of chunks facing unloaded chunks. */ +@Mixin(RenderBlocks.class) +abstract class MixinRenderBlocks { + + @Redirect(method = "renderBlockLiquid", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;shouldSideBeRendered(Lnet/minecraft/world/IBlockAccess;IIII)Z")) + public boolean shouldSideBeRendered(Block block, IBlockAccess ba, int x, int y, int z, int w) { + if(Neodymium.isActive()) { + return Neodymium.renderer.shouldSideBeRendered(block, ba, x, y, z, w); + } else { + return block.shouldSideBeRendered(ba, x, y, z, w); + } + } + +} -- cgit