diff --git a/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinFogRenderer.java b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinFogRenderer.java new file mode 100644 index 00000000..d91c2ca4 --- /dev/null +++ b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinFogRenderer.java @@ -0,0 +1,25 @@ +package me.cortex.voxy.client.mixin.minecraft; + +import me.cortex.voxy.client.config.VoxyConfig; +import me.cortex.voxy.client.core.IGetVoxyRenderSystem; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.fog.FogData; +import net.minecraft.client.render.fog.FogRenderer; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(FogRenderer.class) +public class MixinFogRenderer { + @Redirect(method = "applyFog(Lnet/minecraft/client/render/Camera;IZLnet/minecraft/client/render/RenderTickCounter;FLnet/minecraft/client/world/ClientWorld;)Lorg/joml/Vector4f;", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/fog/FogData;renderDistanceEnd:F", opcode = Opcodes.PUTFIELD), require = 0) + private void voxy$modifyFog(FogData instance, float distance) { + var vrs = (IGetVoxyRenderSystem) MinecraftClient.getInstance().worldRenderer; + if (VoxyConfig.CONFIG.renderVanillaFog || vrs == null || vrs.getVoxyRenderSystem() == null) { + instance.renderDistanceEnd = distance; + } else { + instance.renderDistanceEnd = 999999999; + instance.environmentalEnd = 999999999; + } + } +} diff --git a/src/main/resources/client.voxy.mixins.json b/src/main/resources/client.voxy.mixins.json index 8a617bfa..5a66c5a6 100644 --- a/src/main/resources/client.voxy.mixins.json +++ b/src/main/resources/client.voxy.mixins.json @@ -6,11 +6,12 @@ "minecraft.MixinClientCommonNetworkHandler", "minecraft.MixinClientLoginNetworkHandler", "minecraft.MixinDebugHud", + "minecraft.MixinFogRenderer", + "minecraft.MixinGlDebug", "minecraft.MixinMinecraftClient", "minecraft.MixinThreadExecutor", "minecraft.MixinWindow", "minecraft.MixinWorldRenderer", - "minecraft.MixinGlDebug", "sodium.MixinDefaultChunkRenderer", "sodium.MixinRenderSectionManager", "sodium.MixinSodiumOptionsGUI"