diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java index 490a863f..3cf2a523 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfig.java @@ -28,6 +28,7 @@ public class VoxyConfig implements OptionStorage { public int sectionRenderDistance = 16; public int serviceThreads = Math.max(Runtime.getRuntime().availableProcessors()/2, 1); public float subDivisionSize = 128; + public boolean renderVanillaFog = false; public static VoxyConfig loadOrCreate() { var path = getConfigPath(); diff --git a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenPages.java b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenPages.java index 9aad1866..d27b1f91 100644 --- a/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenPages.java +++ b/src/main/java/me/cortex/voxy/client/config/VoxyConfigScreenPages.java @@ -133,6 +133,7 @@ public class VoxyConfigScreenPages implements ModMenuApi { } } }, s -> s.enableRendering) + .setImpact(OptionImpact.HIGH) .build() ).add(OptionImpl.createBuilder(int.class, storage) .setName(Text.translatable("voxy.config.general.subDivisionSize")) @@ -157,6 +158,12 @@ public class VoxyConfigScreenPages implements ModMenuApi { }, s -> s.sectionRenderDistance) .setImpact(OptionImpact.LOW) .build() + ).add(OptionImpl.createBuilder(boolean.class, storage) + .setName(Text.translatable("voxy.config.general.vanilla_fog")) + .setTooltip(Text.translatable("voxy.config.general.vanilla_fog.tooltip")) + .setControl(TickBoxControl::new) + .setBinding((s, v)-> s.renderVanillaFog = v, s -> s.renderVanillaFog) + .build() ).build() ); return new OptionPage(Text.translatable("voxy.config.title"), ImmutableList.copyOf(groups)); diff --git a/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinBackgroundRenderer.java b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinBackgroundRenderer.java new file mode 100644 index 00000000..d63fa0e1 --- /dev/null +++ b/src/main/java/me/cortex/voxy/client/mixin/minecraft/MixinBackgroundRenderer.java @@ -0,0 +1,27 @@ +package me.cortex.voxy.client.mixin.minecraft; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import me.cortex.voxy.client.config.VoxyConfig; +import me.cortex.voxy.client.core.IGetVoxyRenderSystem; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.BackgroundRenderer; +import net.minecraft.client.render.Camera; +import net.minecraft.client.render.Fog; +import org.joml.Vector4f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Inject; + +@Mixin(BackgroundRenderer.class) +public class MixinBackgroundRenderer { + @WrapMethod(method = "applyFog") + private static Fog voxy$overrideFog(Camera camera, BackgroundRenderer.FogType fogType, Vector4f color, float viewDistance, boolean thickenFog, float tickProgress, Operation original) { + var vrs = (IGetVoxyRenderSystem)MinecraftClient.getInstance().worldRenderer; + if (VoxyConfig.CONFIG.renderVanillaFog || vrs == null || vrs.getVoxyRenderSystem() == null) { + return original.call(camera, fogType, color, viewDistance, thickenFog, tickProgress); + } else { + return Fog.DUMMY; + } + } +} diff --git a/src/main/resources/assets/voxy/lang/en_us.json b/src/main/resources/assets/voxy/lang/en_us.json index 1145aa16..85e99f72 100644 --- a/src/main/resources/assets/voxy/lang/en_us.json +++ b/src/main/resources/assets/voxy/lang/en_us.json @@ -17,5 +17,8 @@ "voxy.config.general.subDivisionSize.tooltip": "Maximum size in pixels (squared) of screenspace AABB before subdiving to smaller LoDs (Smaller being higher quality)", "voxy.config.general.renderDistance": "Render distance", - "voxy.config.general.renderDistance.tooltip": "Render distance of voxy in chunks" + "voxy.config.general.renderDistance.tooltip": "Render distance of voxy in chunks", + + "voxy.config.general.vanilla_fog": "Enable vanilla fog", + "voxy.config.general.vanilla_fog.tooltip": "Enables or disables vanilla fog effect" } \ No newline at end of file diff --git a/src/main/resources/client.voxy.mixins.json b/src/main/resources/client.voxy.mixins.json index c87ab3b9..34ecbd66 100644 --- a/src/main/resources/client.voxy.mixins.json +++ b/src/main/resources/client.voxy.mixins.json @@ -3,6 +3,7 @@ "package": "me.cortex.voxy.client.mixin", "compatibilityLevel": "JAVA_17", "client": [ + "minecraft.MixinBackgroundRenderer", "minecraft.MixinClientCommonNetworkHandler", "minecraft.MixinClientLoginNetworkHandler", "minecraft.MixinDebugHud",