diff options
| author | makamys <makamys@outlook.com> | 2021-05-07 10:22:11 +0200 |
|---|---|---|
| committer | makamys <makamys@outlook.com> | 2021-05-07 14:14:58 +0200 |
| commit | 17056d8f4a8e3679d7d77a67c65016eee497b8f4 (patch) | |
| tree | 41f7960b135da14f849c97f4cd3a7b9699fcc277 /src/main/java/makamys/lodmod/mixin | |
| parent | c233ea31da07957d8872d3859d6e75b99937becd (diff) | |
| download | Neodymium-17056d8f4a8e3679d7d77a67c65016eee497b8f4.tar.gz Neodymium-17056d8f4a8e3679d7d77a67c65016eee497b8f4.tar.bz2 Neodymium-17056d8f4a8e3679d7d77a67c65016eee497b8f4.zip | |
Refactor MyRenderer to use a singleton instead of being static
This should help with memory leaks and clean up the code a bit
Diffstat (limited to 'src/main/java/makamys/lodmod/mixin')
5 files changed, 35 insertions, 48 deletions
diff --git a/src/main/java/makamys/lodmod/mixin/MixinChunkCache.java b/src/main/java/makamys/lodmod/mixin/MixinChunkCache.java index bbfcca1..c5b6f33 100644 --- a/src/main/java/makamys/lodmod/mixin/MixinChunkCache.java +++ b/src/main/java/makamys/lodmod/mixin/MixinChunkCache.java @@ -4,6 +4,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import makamys.lodmod.LODMod; import makamys.lodmod.renderer.FarChunkCache; import makamys.lodmod.renderer.MyRenderer; import net.minecraft.world.ChunkCache; @@ -16,8 +17,8 @@ abstract class MixinChunkCache { @Redirect(method = "<init>*", 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(FarChunkCache.class.isInstance(this.getClass()) && chunk.isEmpty()) { - Chunk myChunk = MyRenderer.getChunkFromChunkCoords(p1, p2); + if(LODMod.isActive() && FarChunkCache.class.isInstance(this.getClass()) && chunk.isEmpty()) { + Chunk myChunk = LODMod.renderer.getChunkFromChunkCoords(p1, p2); if(myChunk != null) { chunk = myChunk; } diff --git a/src/main/java/makamys/lodmod/mixin/MixinEntityRenderer.java b/src/main/java/makamys/lodmod/mixin/MixinEntityRenderer.java index 544d131..4fe081c 100644 --- a/src/main/java/makamys/lodmod/mixin/MixinEntityRenderer.java +++ b/src/main/java/makamys/lodmod/mixin/MixinEntityRenderer.java @@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import makamys.lodmod.LODMod; import makamys.lodmod.renderer.MyRenderer; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.EntityRenderer; @@ -22,23 +23,29 @@ abstract class MixinEntityRenderer { @Inject(method = "setupCameraTransform", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/EntityRenderer;farPlaneDistance:F", shift = At.Shift.AFTER, args = "log=true", ordinal = 0)) private void onConstructed(CallbackInfo ci) { - farPlaneDistance *= 4; + if(LODMod.isActive()) { + farPlaneDistance *= 4; + } } @Inject(method = "renderWorld", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glAlphaFunc(IF)V", shift = At.Shift.AFTER, ordinal = 1)) private void afterSortAndRender(float alpha, long something, CallbackInfo ci) { - Minecraft.getMinecraft().entityRenderer.enableLightmap((double)alpha); - MyRenderer.beforeRenderTerrain(); - Minecraft.getMinecraft().entityRenderer.disableLightmap((double)alpha); + if(LODMod.isActive()) { + Minecraft.getMinecraft().entityRenderer.enableLightmap((double)alpha); + LODMod.renderer.beforeRenderTerrain(); + Minecraft.getMinecraft().entityRenderer.disableLightmap((double)alpha); + } } @Redirect(method = "setupFog", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glFogf(IF)V")) private void afterSetupFog(int pname, float param, int mode, float alpha) { - EntityLivingBase var3 = Minecraft.getMinecraft().renderViewEntity; - if(pname == GL11.GL_FOG_START && mode != 999 && mode != -1 && !var3.isPotionActive(Potion.blindness) && !Minecraft.getMinecraft().theWorld.provider.doesXZShowFog((int)var3.posX, (int)var3.posZ)) { - GL11.glFogf(pname, farPlaneDistance * 0.2f); - } else { - GL11.glFogf(pname, param); + if(LODMod.isActive()) { + EntityLivingBase var3 = Minecraft.getMinecraft().renderViewEntity; + if(pname == GL11.GL_FOG_START && mode != 999 && mode != -1 && !var3.isPotionActive(Potion.blindness) && !Minecraft.getMinecraft().theWorld.provider.doesXZShowFog((int)var3.posX, (int)var3.posZ)) { + GL11.glFogf(pname, farPlaneDistance * 0.2f); + } else { + GL11.glFogf(pname, param); + } } } } diff --git a/src/main/java/makamys/lodmod/mixin/MixinMinecraftServer.java b/src/main/java/makamys/lodmod/mixin/MixinMinecraftServer.java deleted file mode 100644 index 747cbb8..0000000 --- a/src/main/java/makamys/lodmod/mixin/MixinMinecraftServer.java +++ /dev/null @@ -1,30 +0,0 @@ -package makamys.lodmod.mixin; - -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 makamys.lodmod.renderer.MyRenderer; -import net.minecraft.server.MinecraftServer; - -@Mixin(MinecraftServer.class) -abstract class MixinMinecraftServer { - - @Shadow - boolean worldIsBeingDeleted; - - @Inject(method = "stopServer", at = @At("HEAD")) - public void stopServer(CallbackInfo ci) { - if(!worldIsBeingDeleted) { - MyRenderer.onStopServer(); - } - } - - @Inject(method = "updateTimeLightAndEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkSystem;networkTick()V")) - public void preServerTick(CallbackInfo ci) { - MyRenderer.serverTick(); - } - -} diff --git a/src/main/java/makamys/lodmod/mixin/MixinRenderGlobal.java b/src/main/java/makamys/lodmod/mixin/MixinRenderGlobal.java index f2b89fd..18f95a6 100644 --- a/src/main/java/makamys/lodmod/mixin/MixinRenderGlobal.java +++ b/src/main/java/makamys/lodmod/mixin/MixinRenderGlobal.java @@ -4,7 +4,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import makamys.lodmod.renderer.MyRenderer; +import makamys.lodmod.LODMod; import net.minecraft.client.renderer.RenderGlobal; @Mixin(RenderGlobal.class) @@ -12,7 +12,7 @@ abstract class MixinRenderGlobal { @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) { - if(MyRenderer.renderWorld) { + if(LODMod.isActive() && LODMod.renderer.renderWorld) { thiz.renderAllRenderLists(p1, p2); } } diff --git a/src/main/java/makamys/lodmod/mixin/MixinWorldRenderer.java b/src/main/java/makamys/lodmod/mixin/MixinWorldRenderer.java index abfcc4e..988b478 100644 --- a/src/main/java/makamys/lodmod/mixin/MixinWorldRenderer.java +++ b/src/main/java/makamys/lodmod/mixin/MixinWorldRenderer.java @@ -11,6 +11,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import makamys.lodmod.LODMod; import makamys.lodmod.ducks.ITessellator; import makamys.lodmod.ducks.IWorldRenderer; import makamys.lodmod.renderer.ChunkMesh; @@ -55,18 +56,24 @@ abstract class MixinWorldRenderer implements IWorldRenderer { @Inject(method = "updateRenderer", at = @At(value = "HEAD")) private void preUpdateRenderer(CallbackInfo ci) { - chunkMeshes.clear(); + if(LODMod.isActive()) { + chunkMeshes.clear(); + } } @Inject(method = "updateRenderer", at = @At(value = "TAIL")) private void postUpdateRenderer(CallbackInfo ci) { - MyRenderer.onWorldRendererPost(WorldRenderer.class.cast(this)); - chunkMeshes.clear(); + if(LODMod.isActive()) { + LODMod.renderer.onWorldRendererPost(WorldRenderer.class.cast(this)); + chunkMeshes.clear(); + } } @Inject(method = "postRenderBlocks", at = @At(value = "HEAD")) private void prePostRenderBlocks(CallbackInfo ci) { - chunkMeshes.add(((ITessellator)Tessellator.instance).toChunkMesh()); + if(LODMod.isActive()) { + chunkMeshes.add(((ITessellator)Tessellator.instance).toChunkMesh()); + } } @Redirect(method = "postRenderBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Tessellator;draw()I")) @@ -107,7 +114,9 @@ abstract class MixinWorldRenderer implements IWorldRenderer { @Inject(method = "setDontDraw", at = @At(value = "HEAD")) private void preSetDontDraw(CallbackInfo ci) { - MyRenderer.onDontDraw(WorldRenderer.class.cast(this)); + if(LODMod.isActive()) { + LODMod.renderer.onDontDraw(WorldRenderer.class.cast(this)); + } } @Override |
