From e4b40c93838203f4669490ff0f89b74be9304cef Mon Sep 17 00:00:00 2001 From: tom lee Date: Thu, 13 Jan 2022 23:35:18 +0800 Subject: [PATCH] Update core + Add disableVanillaFog for Forge --- .../minecraft/MinecraftRenderWrapper.java | 5 ++ core | 2 +- .../lod/forge/mixins/MixinFogRenderer.java | 47 +++++++++++++++++++ forge/src/main/resources/lod.mixins.json | 3 +- 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 forge/src/main/java/com/seibel/lod/forge/mixins/MixinFogRenderer.java diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java index b5a1ac859..51e115e93 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -263,4 +263,9 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper public boolean isFogStateInUnderWater() { return GAME_RENDERER.getMainCamera().getFluidInCamera() == FogType.WATER; } + + @Override + public boolean tryDisableVanillaFog() { + return true; // Handled via MixinFogRenderer in both forge and fabric + } } diff --git a/core b/core index bb22ad58b..976874e7a 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit bb22ad58bcfe095be21b5c74d820a744175db763 +Subproject commit 976874e7a3ad87c9eda7ec16c4058eebf9ba76ea diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinFogRenderer.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinFogRenderer.java new file mode 100644 index 000000000..baae4a22a --- /dev/null +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinFogRenderer.java @@ -0,0 +1,47 @@ +package com.seibel.lod.forge.mixins; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.seibel.lod.core.util.SingletonHandler; +import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton; + +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.client.renderer.FogRenderer.FogMode; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.material.FogType; + +@Mixin(FogRenderer.class) +public class MixinFogRenderer { + + // Using this instead of Float.MAX_VALUE because Sodium don't like it. (and copy paste in case someone in forge don't like it) + private static final float A_REALLY_REALLY_BIG_VALUE = 420694206942069.F; + private static final float A_EVEN_LARGER_VALUE = 42069420694206942069.F; + + @Inject(at = @At("RETURN"), + method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;FZF)V", + remap = false) // Remap = false due to this being added by forge. + private static final void disableSetupFog(Camera camera, FogMode fogMode, float f, boolean bl, float partTick, CallbackInfo callback) { + ILodConfigWrapperSingleton CONFIG; + try { + CONFIG = SingletonHandler.get(ILodConfigWrapperSingleton.class); + } catch (NullPointerException e) { + return; // May happen due to forge for some reason haven't inited out thingy yet. + } + FogType fogTypes = camera.getFluidInCamera(); + Entity entity = camera.getEntity(); + boolean isUnderWater = (entity instanceof LivingEntity) && ((LivingEntity)entity).hasEffect(MobEffects.BLINDNESS); + if (!isUnderWater) { + if (fogMode == FogMode.FOG_TERRAIN && fogTypes == FogType.NONE && CONFIG.client().graphics().fogQuality().getDisableVanillaFog()) { + RenderSystem.setShaderFogStart(A_REALLY_REALLY_BIG_VALUE); + RenderSystem.setShaderFogEnd(A_EVEN_LARGER_VALUE); + } + } + } +} diff --git a/forge/src/main/resources/lod.mixins.json b/forge/src/main/resources/lod.mixins.json index 99d813485..ee8753b85 100644 --- a/forge/src/main/resources/lod.mixins.json +++ b/forge/src/main/resources/lod.mixins.json @@ -7,7 +7,8 @@ ], "client": [ "MixinOptionsScreen", - "MixinWorldRenderer" + "MixinWorldRenderer", + "MixinFogRenderer" ], "server": [] }