diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index fa02f7ee..44a673f9 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -576,4 +576,11 @@ public class CarpetSettings category = CREATIVE ) public static boolean extremeBehaviours = false; + + @Rule( + desc = "Removes fog from client in the nether and the end", + extra = "Improves visibility, but looks weird", + category = CLIENT + ) + public static boolean fogOff = false; } diff --git a/src/main/java/carpet/mixins/WorldRenderer_fogOffMixin.java b/src/main/java/carpet/mixins/WorldRenderer_fogOffMixin.java new file mode 100644 index 00000000..a620c194 --- /dev/null +++ b/src/main/java/carpet/mixins/WorldRenderer_fogOffMixin.java @@ -0,0 +1,23 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.client.render.WorldRenderer; +import net.minecraft.world.dimension.Dimension; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(value = WorldRenderer.class, priority = 69420) +public class WorldRenderer_fogOffMixin +{ + @Redirect(method = "render", require = 0, expect = 0, at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/dimension/Dimension;isFogThick(II)Z" + )) + private boolean isReallyThick(Dimension dimension, int x, int z) + { + if (CarpetSettings.fogOff) return false; + return dimension.isFogThick(x, z); + } + +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 950949f3..6fd71f94 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -169,7 +169,8 @@ "PlayerListHudMixin", "PistonBlockEntityRenderer_movableTEMixin", "ClientPlayNetworkHandler_smoothClientAnimationsMixin", - "ClientPlayerEntity_clientCommandMixin" + "ClientPlayerEntity_clientCommandMixin", + "WorldRenderer_fogOffMixin" ], "server": [ "MinecraftDedicatedServerMixin"