From 35c1bae15637ce7d54f070d49bf69542e18ccdc1 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 2 May 2026 10:00:24 -0500 Subject: [PATCH] move fog common mixin code to common --- .../commonMixins/MixinVanillaFogCommon.java | 125 ++++++++++++++++++ .../mixins/client/MixinFogRenderer.java | 62 +-------- .../mixins/client/MixinFogRenderer.java | 58 +------- 3 files changed, 133 insertions(+), 112 deletions(-) create mode 100644 common/src/main/java/com/seibel/distanthorizons/common/commonMixins/MixinVanillaFogCommon.java diff --git a/common/src/main/java/com/seibel/distanthorizons/common/commonMixins/MixinVanillaFogCommon.java b/common/src/main/java/com/seibel/distanthorizons/common/commonMixins/MixinVanillaFogCommon.java new file mode 100644 index 000000000..5888b572c --- /dev/null +++ b/common/src/main/java/com/seibel/distanthorizons/common/commonMixins/MixinVanillaFogCommon.java @@ -0,0 +1,125 @@ +package com.seibel.distanthorizons.common.commonMixins; + +import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; +import com.seibel.distanthorizons.core.api.internal.ClientApi; +import com.seibel.distanthorizons.core.config.Config; +import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector; +import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IImmersivePortalsAccessor; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; + +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.FogRenderer; +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; + + +import net.minecraft.client.Camera; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; + +#if MC_VER < MC_1_17_1 +import net.minecraft.world.level.material.FluidState; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.client.renderer.FogRenderer.FogMode; +import com.mojang.blaze3d.systems.RenderSystem; + +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +#elif MC_VER < MC_1_21_3 +import net.minecraft.world.level.material.FogType; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.client.renderer.FogRenderer.FogMode; +import com.mojang.blaze3d.systems.RenderSystem; + +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +#elif MC_VER < MC_1_21_6 +import net.minecraft.world.level.material.FogType; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import com.mojang.blaze3d.shaders.FogShape; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.client.renderer.FogRenderer.FogMode; +import net.minecraft.client.renderer.FogParameters; +import org.joml.Vector4f; +import com.mojang.blaze3d.systems.RenderSystem; + +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +#else +import net.minecraft.world.level.material.FogType; +import net.minecraft.client.renderer.fog.FogRenderer; +import net.minecraft.client.renderer.fog.FogData; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +#endif + + +public class MixinVanillaFogCommon +{ + + + #if MC_VER < MC_1_21_6 + public static boolean cancelFog(Camera camera, FogRenderer.FogMode fogMode) + #else + public static boolean cancelFog() + #endif + { + + + #if MC_VER < MC_1_21_6 + Entity entity = camera.getEntity(); + #elif MC_VER <= MC_1_21_10 + Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); + Entity entity = camera.getEntity(); + #else + Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); + Entity entity = camera.entity(); + #endif + + + boolean cameraNotInFluid = cameraNotInFluid(camera); + boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS); + + boolean cancelFog = !isSpecialFog; + cancelFog = cancelFog && cameraNotInFluid; + #if MC_VER < MC_1_21_6 + cancelFog = cancelFog && (fogMode == FogRenderer.FogMode.FOG_TERRAIN); + #endif + + cancelFog = cancelFog && !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial(); + cancelFog = cancelFog && !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get(); + + + + IImmersivePortalsAccessor immersivePortals = ModAccessorInjector.INSTANCE.get(IImmersivePortalsAccessor.class); + if (immersivePortals != null + && immersivePortals.isRenderingPortal()) + { + cancelFog = false; + } + + return cancelFog; + } + + private static boolean cameraNotInFluid(Camera camera) + { + #if MC_VER < MC_1_17_1 + FluidState fluidState = camera.getFluidInCamera(); + boolean cameraNotInFluid = fluidState.isEmpty(); + #else + FogType fogTypes = camera.getFluidInCamera(); + boolean cameraNotInFluid = fogTypes == FogType.NONE; + #endif + + return cameraNotInFluid; + } + + +} diff --git a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java index d5c433ae5..7136e5f4c 100644 --- a/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java +++ b/fabric/src/main/java/com/seibel/distanthorizons/fabric/mixins/client/MixinFogRenderer.java @@ -19,19 +19,13 @@ package com.seibel.distanthorizons.fabric.mixins.client; +import com.seibel.distanthorizons.common.commonMixins.MixinVanillaFogCommon; import com.seibel.distanthorizons.core.api.internal.ClientApi; -import com.seibel.distanthorizons.core.config.Config; -import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; -import net.minecraft.client.Minecraft; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import net.minecraft.client.Camera; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; #if MC_VER < MC_1_17_1 import net.minecraft.world.level.material.FluidState; @@ -42,7 +36,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; #elif MC_VER < MC_1_21_3 -import net.minecraft.world.level.material.FogType; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.client.renderer.FogRenderer.FogMode; import com.mojang.blaze3d.systems.RenderSystem; @@ -96,11 +89,11 @@ public class MixinFogRenderer #endif { #if MC_VER < MC_1_21_6 - boolean cancelFog = cancelFog(camera, fogMode); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(camera, fogMode); #elif MC_VER < MC_1_21_6 - boolean cancelFog = cancelFog(camera); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(camera); #else - boolean cancelFog = cancelFog(); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(); #endif if (cancelFog) @@ -164,52 +157,5 @@ public class MixinFogRenderer #endif - @Unique - #if MC_VER < MC_1_21_6 - private static boolean cancelFog(Camera camera, FogMode fogMode) - #else - private static boolean cancelFog() - #endif - { - #if MC_VER < MC_1_21_6 - Entity entity = camera.getEntity(); - #elif MC_VER <= MC_1_21_10 - Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); - Entity entity = camera.getEntity(); - #else - Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); - Entity entity = camera.entity(); - #endif - - - boolean cameraNotInFluid = cameraNotInFluid(camera); - boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS); - - boolean cancelFog = !isSpecialFog; - cancelFog = cancelFog && cameraNotInFluid; - #if MC_VER < MC_1_21_6 - cancelFog = cancelFog && (fogMode == FogMode.FOG_TERRAIN); - #endif - cancelFog = cancelFog && !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial(); - cancelFog = cancelFog && !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get(); - - return cancelFog; - } - - @Unique - private static boolean cameraNotInFluid(Camera camera) - { - #if MC_VER < MC_1_17_1 - FluidState fluidState = camera.getFluidInCamera(); - boolean cameraNotInFluid = fluidState.isEmpty(); - #else - FogType fogTypes = camera.getFluidInCamera(); - boolean cameraNotInFluid = fogTypes == FogType.NONE; - #endif - - return cameraNotInFluid; - } - - } diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinFogRenderer.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinFogRenderer.java index ce00aa4e7..7437d78a3 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinFogRenderer.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/mixins/client/MixinFogRenderer.java @@ -19,11 +19,8 @@ package com.seibel.distanthorizons.neoforge.mixins.client; +import com.seibel.distanthorizons.common.commonMixins.MixinVanillaFogCommon; import com.seibel.distanthorizons.core.api.internal.ClientApi; -import com.seibel.distanthorizons.core.config.Config; -import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; -import net.minecraft.client.Minecraft; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -96,11 +93,11 @@ public class MixinFogRenderer #endif { #if MC_VER < MC_1_21_6 - boolean cancelFog = cancelFog(camera, fogMode); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(camera, fogMode); #elif MC_VER < MC_1_21_6 - boolean cancelFog = cancelFog(camera); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(camera); #else - boolean cancelFog = cancelFog(); + boolean cancelFog = MixinVanillaFogCommon.cancelFog(); #endif if (cancelFog) @@ -164,52 +161,5 @@ public class MixinFogRenderer #endif - @Unique - #if MC_VER < MC_1_21_6 - private static boolean cancelFog(Camera camera, FogMode fogMode) - #else - private static boolean cancelFog() - #endif - { - #if MC_VER < MC_1_21_6 - Entity entity = camera.getEntity(); - #elif MC_VER <= MC_1_21_10 - Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); - Entity entity = camera.getEntity(); - #else - Camera camera = Minecraft.getInstance().gameRenderer.getMainCamera(); - Entity entity = camera.entity(); - #endif - - - boolean cameraNotInFluid = cameraNotInFluid(camera); - boolean isSpecialFog = (entity instanceof LivingEntity) && ((LivingEntity) entity).hasEffect(MobEffects.BLINDNESS); - - boolean cancelFog = !isSpecialFog; - cancelFog = cancelFog && cameraNotInFluid; - #if MC_VER < MC_1_21_6 - cancelFog = cancelFog && (fogMode == FogMode.FOG_TERRAIN); - #endif - cancelFog = cancelFog && !SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).isFogStateSpecial(); - cancelFog = cancelFog && !Config.Client.Advanced.Graphics.Fog.enableVanillaFog.get(); - - return cancelFog; - } - - @Unique - private static boolean cameraNotInFluid(Camera camera) - { - #if MC_VER < MC_1_17_1 - FluidState fluidState = camera.getFluidInCamera(); - boolean cameraNotInFluid = fluidState.isEmpty(); - #else - FogType fogTypes = camera.getFluidInCamera(); - boolean cameraNotInFluid = fogTypes == FogType.NONE; - #endif - - return cameraNotInFluid; - } - - }