Config option for enabling/disabling vanilla fog (only applies when the voxy renderer is active)
This commit is contained in:
@@ -28,6 +28,7 @@ public class VoxyConfig implements OptionStorage<VoxyConfig> {
|
||||
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();
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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<Fog> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
"package": "me.cortex.voxy.client.mixin",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"client": [
|
||||
"minecraft.MixinBackgroundRenderer",
|
||||
"minecraft.MixinClientCommonNetworkHandler",
|
||||
"minecraft.MixinClientLoginNetworkHandler",
|
||||
"minecraft.MixinDebugHud",
|
||||
|
||||
Reference in New Issue
Block a user