diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index 42b2d25..294b5c2 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -17,7 +17,8 @@ public class ModManager { new Coordinates(), new Freelook(), new Keystrokes(), - new Fullbright() + new Fullbright(), + new NoFog() }; public static void init() { diff --git a/src/main/java/org/saturnclient/modules/mods/NoFog.java b/src/main/java/org/saturnclient/modules/mods/NoFog.java new file mode 100644 index 0000000..14c3ace --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/NoFog.java @@ -0,0 +1,39 @@ +package org.saturnclient.modules.mods; + +import org.saturnclient.modules.Module; +import org.saturnclient.modules.ModuleDetails; +import org.saturnclient.saturnclient.config.Property; + +public class NoFog extends Module { + private static Property enabled = Property.bool(false); + private static Property liquids = Property.bool(false); + + public NoFog() { + super( + new ModuleDetails("No Fog", "nofog") + .description("Stops fog from rendering") + .tags("Camera") + .version("v0.1.0"), + enabled.named("Enabled"), + liquids.named("See through liquids")); + } + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public void onEnabled(boolean e) { + enabled.value = e; + } + + // static for the mixin + public static boolean isActive() { + return enabled.value; + } + + public static boolean liquids() { + return liquids.value; + } +} diff --git a/src/main/java/org/saturnclient/modules/mods/mixins/BackgroundRendererMixin.java b/src/main/java/org/saturnclient/modules/mods/mixins/BackgroundRendererMixin.java new file mode 100644 index 0000000..fd354f1 --- /dev/null +++ b/src/main/java/org/saturnclient/modules/mods/mixins/BackgroundRendererMixin.java @@ -0,0 +1,33 @@ +package org.saturnclient.modules.mods.mixins; + +import net.minecraft.client.render.BackgroundRenderer; + +import org.saturnclient.modules.mods.NoFog; +import net.minecraft.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BackgroundRenderer.class) +public class BackgroundRendererMixin { + + @ModifyVariable(method = "applyFog", at = @At("HEAD"), ordinal = 0, argsOnly = true) + private static float modifyFogStart(float viewDistance) { + if (NoFog.isActive()) { + return Float.MAX_VALUE; + } + return viewDistance; + } + // liquids + @Redirect( + method = "applyFog", + at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;isSpectator()Z") + ) + private static boolean redirectIsSpectator(Entity entity) { + if (NoFog.isActive() && NoFog.liquids()) { + return true; // pretend to be spectator + } + return entity.isSpectator(); + } +} diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png b/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png new file mode 100644 index 0000000..d7dc168 Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png differ diff --git a/src/main/resources/mods.mixins.json b/src/main/resources/mods.mixins.json index 9ec0737..76f9b1f 100644 --- a/src/main/resources/mods.mixins.json +++ b/src/main/resources/mods.mixins.json @@ -7,7 +7,8 @@ "CameraMixin", "EntityMixin", "RenderMixin", - "LightmapTextureManagerMixin" + "LightmapTextureManagerMixin", + "BackgroundRendererMixin" ], "injectors": { "defaultRequire": 1