Skip to content

Commit 5ae4076

Browse files
authored
Merge pull request #23 from tildejustin/mac/1.16.1
fog occlusion and slider fix
2 parents e04e7ab + 0b17e19 commit 5ae4076

9 files changed

Lines changed: 56 additions & 46 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ yarn_mappings=1.16.1+build.21
99
loader_version=0.15.7
1010

1111
# Mod Properties
12-
mod_version=3.1.2
12+
mod_version=3.2.0
1313
maven_group=me.jellysquid.mods
1414
archives_base_name=sodium-fabric

src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ public static OptionPage quality() {
210210

211211
public static OptionPage advanced() {
212212
boolean disableBlacklist = SodiumClientMod.options().advanced.disableDriverBlacklist;
213-
boolean usePlanarFog = SodiumClientMod.options().unofficial.usePlanarFog;
214213

215214
List<OptionGroup> groups = new ArrayList<>();
216215

@@ -328,11 +327,25 @@ public static OptionPage unofficial() {
328327
"in areas with thick fog such as in the nether. This is vanilla behavior on systems where GL_NV_fog_distance is unavailable, but is not " +
329328
"considered desirable for any reason other than visibility. This option is not included in official releases of Sodium.")
330329
.setControl(TickBoxControl::new)
331-
.setBinding((opts, value) -> opts.unofficial.usePlanarFog = value, opts -> opts.unofficial.usePlanarFog)
330+
.setBinding((opts, value) -> opts.speedrun.usePlanarFog = value, opts -> opts.speedrun.usePlanarFog)
332331
.setImpact(OptionImpact.MEDIUM)
333332
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
334333
.build()
335334
)
335+
.add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
336+
.setName("Show Entity Culling")
337+
.setTooltip("If enabled, Entity Culling will be added to the vanilla menu so it can be toggled while in a world.")
338+
.setControl(TickBoxControl::new)
339+
.setBinding((opts, value) -> opts.speedrun.showEntityCulling = value, opts -> opts.speedrun.showEntityCulling)
340+
.build()
341+
)
342+
.add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
343+
.setName("Show Fog Occlusion")
344+
.setTooltip("If enabled, Fog Occlusion will be added to the vanilla menu so it can be toggled while in a world.")
345+
.setControl(TickBoxControl::new)
346+
.setBinding((opts, value) -> opts.speedrun.showFogOcclusion = value, opts -> opts.speedrun.showFogOcclusion)
347+
.build()
348+
)
336349
.build());
337350
return new OptionPage("Speedrun", ImmutableList.copyOf(groups));
338351
}

src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
public class SodiumGameOptions {
2323
public final QualitySettings quality = new QualitySettings();
2424
public final AdvancedSettings advanced = new AdvancedSettings();
25-
public final SettingsSettings settings = new SettingsSettings();
26-
public final UnofficialSettings unofficial = new UnofficialSettings();
25+
public final SpeedrunSettings speedrun = new SpeedrunSettings();
2726

2827
private File file;
2928

@@ -47,8 +46,10 @@ public static class QualitySettings {
4746
public boolean enableVignette = true;
4847
}
4948

50-
public static class UnofficialSettings {
49+
public static class SpeedrunSettings {
5150
public boolean usePlanarFog = true;
51+
public boolean showEntityCulling = true;
52+
public boolean showFogOcclusion = true;
5253
}
5354

5455
public enum ChunkRendererBackendOption implements TextProvider {
@@ -96,10 +97,6 @@ private interface SupportCheck {
9697
}
9798
}
9899

99-
public static class SettingsSettings {
100-
public boolean forceVanillaSettings = false;
101-
}
102-
103100
public enum GraphicsQuality implements TextProvider {
104101
DEFAULT("Default"),
105102
FANCY("Fancy"),

src/main/java/me/jellysquid/mods/sodium/client/gui/VanillaOptions.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package me.jellysquid.mods.sodium.client.gui;
22

33
import me.jellysquid.mods.sodium.client.gui.vanilla.builders.CycleOptionBuilder;
4-
import me.jellysquid.mods.sodium.client.gui.vanilla.options.EntityCulling;
4+
import me.jellysquid.mods.sodium.client.gui.vanilla.options.BooleanCyclingOption;
55
import net.minecraft.client.options.Option;
66

77
import java.util.HashSet;
@@ -24,12 +24,21 @@ public static void addSettingsChange(Runnable apply){
2424
DOUBLE_OPTIONS_RUNNABLE.add(apply);
2525
}
2626

27-
public static final Option ENTITY_CULLING = new CycleOptionBuilder<EntityCulling>()
27+
public static final Option ENTITY_CULLING = new CycleOptionBuilder<BooleanCyclingOption>()
2828
.setKey("options.entityCulling")
2929
.setText("Entity Culling")
30-
.setOptions(EntityCulling.values())
31-
.setGetter((options) -> EntityCulling.getOption(options.advanced.useEntityCulling))
30+
.setOptions(BooleanCyclingOption.values())
31+
.setGetter((options) -> BooleanCyclingOption.getOption(options.advanced.useEntityCulling))
3232
.setSetter((options, value) -> options.advanced.useEntityCulling = value.isEnabled())
33-
.setTextGetter(EntityCulling::getText)
33+
.setTextGetter(BooleanCyclingOption::getText)
34+
.build();
35+
36+
public static final Option FOG_OCCLUSION = new CycleOptionBuilder<BooleanCyclingOption>()
37+
.setKey("options.fogOcclusion")
38+
.setText("Fog Occlusion")
39+
.setOptions(BooleanCyclingOption.values())
40+
.setGetter(options -> BooleanCyclingOption.getOption(options.advanced.useFogOcclusion))
41+
.setSetter((options, value) -> options.advanced.useFogOcclusion = value.isEnabled())
42+
.setTextGetter(BooleanCyclingOption::getText)
3443
.build();
3544
}

src/main/java/me/jellysquid/mods/sodium/client/gui/vanilla/options/EntityCulling.java renamed to src/main/java/me/jellysquid/mods/sodium/client/gui/vanilla/options/BooleanCyclingOption.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
import net.minecraft.text.Text;
44
import net.minecraft.text.TranslatableText;
55

6-
public enum EntityCulling implements IndexedOption {
7-
6+
public enum BooleanCyclingOption implements IndexedOption {
87
ON(0, true, "options.on"),
98
OFF(1, false, "options.off");
109

1110
private final int index;
1211
private final boolean enabled;
1312
private final Text text;
14-
EntityCulling(int index, boolean enabled, String translationKey){
13+
14+
BooleanCyclingOption(int index, boolean enabled, String translationKey) {
1515
this.index = index;
1616
this.enabled = enabled;
1717
this.text = new TranslatableText(translationKey);
@@ -30,8 +30,8 @@ public Text getText() {
3030
return text;
3131
}
3232

33-
public static EntityCulling getOption(boolean value){
34-
if(value){
33+
public static BooleanCyclingOption getOption(boolean value) {
34+
if (value) {
3535
return ON;
3636
}
3737
return OFF;

src/main/java/me/jellysquid/mods/sodium/client/render/chunk/ChunkRenderManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private void init(Camera camera, FrustumExtended frustum, int frame, boolean spe
308308

309309
if (dist != 0.0f) {
310310
this.useFogCulling = true;
311-
if (SodiumClientMod.options().unofficial.usePlanarFog) {
311+
if (SodiumClientMod.options().speedrun.usePlanarFog) {
312312
this.usePlanarFog = true;
313313
}
314314
this.fogRenderCutoff = Math.max(FOG_PLANE_MIN_DISTANCE, dist * dist);

src/main/java/me/jellysquid/mods/sodium/client/render/chunk/shader/ChunkFogMode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static ChunkFogMode getActiveMode() {
4141

4242
int mode = GL11.glGetInteger(GL11.GL_FOG_MODE);
4343

44-
boolean usePlanarFog = SodiumClientMod.options().unofficial.usePlanarFog;
44+
boolean usePlanarFog = SodiumClientMod.options().speedrun.usePlanarFog;
4545

4646
switch (mode) {
4747
case GL11.GL_EXP2:

src/main/java/me/jellysquid/mods/sodium/mixin/features/options/MixinBackgroundRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
public abstract class MixinBackgroundRenderer {
1212
@Redirect(method = "applyFog", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;setupNvFogDistance()V"))
1313
private static void redirectSetupNvFogDistance() {
14-
if (SodiumClientMod.options().unofficial.usePlanarFog) {
14+
if (SodiumClientMod.options().speedrun.usePlanarFog) {
1515
return;
1616
} else {
1717
RenderSystem.setupNvFogDistance();

src/main/java/me/jellysquid/mods/sodium/mixin/features/options/MixinVideoOptionsScreen.java

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.jellysquid.mods.sodium.mixin.features.options;
22

33
import me.jellysquid.mods.sodium.client.SodiumClientMod;
4+
import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions;
45
import me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI;
56
import me.jellysquid.mods.sodium.client.gui.VanillaOptions;
67
import me.jellysquid.mods.sodium.client.gui.options.OptionFlag;
@@ -21,7 +22,9 @@
2122
import org.spongepowered.asm.mixin.injection.Redirect;
2223
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
2324

24-
import java.io.IOException;
25+
import java.util.ArrayList;
26+
import java.util.Arrays;
27+
import java.util.List;
2528
import java.util.Set;
2629

2730
@Mixin(VideoOptionsScreen.class)
@@ -31,29 +34,17 @@ public MixinVideoOptionsScreen(Screen parent, GameOptions gameOptions, Text titl
3134
super(parent, gameOptions, title);
3235
}
3336

34-
private static final Option[] OPTIONS = {
35-
Option.GRAPHICS,
36-
Option.RENDER_DISTANCE,
37-
Option.AO,
38-
Option.FRAMERATE_LIMIT,
39-
Option.VSYNC,
40-
Option.VIEW_BOBBING,
41-
Option.GUI_SCALE,
42-
Option.ATTACK_INDICATOR,
43-
Option.GAMMA,
44-
Option.CLOUDS,
45-
Option.FULLSCREEN,
46-
Option.PARTICLES,
47-
Option.MIPMAP_LEVELS,
48-
Option.ENTITY_SHADOWS,
49-
Option.ENTITY_DISTANCE_SCALING,
50-
VanillaOptions.ENTITY_CULLING
51-
};
52-
5337
@Redirect(method = "init", at=@At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/ButtonListWidget;addAll([Lnet/minecraft/client/options/Option;)V"))
54-
private void optionsSwap(ButtonListWidget list, Option[] old_options){
55-
list.addAll(OPTIONS);
56-
VanillaOptions.clearSettingsChanges();
38+
private void optionsSwap(ButtonListWidget list, Option[] old_options) {
39+
List<Option> options = new ArrayList<>(Arrays.asList(old_options));
40+
SodiumGameOptions.SpeedrunSettings speedrunSettings = SodiumClientMod.options().speedrun;
41+
if (speedrunSettings.showEntityCulling) {
42+
options.add(VanillaOptions.ENTITY_CULLING);
43+
}
44+
if (speedrunSettings.showFogOcclusion) {
45+
options.add(VanillaOptions.FOG_OCCLUSION);
46+
}
47+
list.addAll(options.toArray(new Option[0]));
5748
}
5849

5950
@Inject(method = "mouseReleased", at = @At("RETURN"))

0 commit comments

Comments
 (0)