@@ -45,7 +45,7 @@ private static Identifier id(String path) {
4545 private static final Identifier SODIUM_FULLSCREEN_OPTION_ID = Identifier .parse ("sodium:general.fullscreen" );
4646 private static final Identifier SODIUM_FULLSCREEN_RESOLUTION_OPTION_ID = Identifier .parse ("sodium:general.fullscreen_resolution" );
4747 private static final Identifier SODIUM_VSYNC_OPTION_ID = Identifier .parse ("sodium:general.vsync" );
48- private static final List <Identifier > DEFAULT_DIMENSION_IDS = List .of (
48+ private static final List <Identifier > DEFAULT_DIMENSION_EFFECT_IDS = List .of (
4949 Level .OVERWORLD .identifier (),
5050 Level .NETHER .identifier (),
5151 Level .END .identifier ()
@@ -105,6 +105,36 @@ private static SodiumExtraGameOptions.AtmosphericFogSettings createDimensionFogS
105105 return settings ;
106106 }
107107
108+ private static List <Identifier > getDimensionFogEffectIds (SodiumExtraGameOptions .FogSettings fogSettings ) {
109+ Set <Identifier > identifiers = new LinkedHashSet <>(DEFAULT_DIMENSION_EFFECT_IDS );
110+ addKnownWorldDimensionEffectIds (identifiers );
111+ identifiers .addAll (fogSettings .dimensionOverrides .keySet ());
112+
113+ identifiers .forEach (identifier -> fogSettings .dimensionOverrides .computeIfAbsent (identifier , ignored -> createDimensionFogSettings ()));
114+
115+ return identifiers .stream ()
116+ .sorted (Comparator .comparing (Identifier ::toString ))
117+ .toList ();
118+ }
119+
120+ private static void addKnownWorldDimensionEffectIds (Set <Identifier > identifiers ) {
121+ Minecraft minecraft = Minecraft .getInstance ();
122+ if (minecraft == null ) {
123+ return ;
124+ }
125+
126+ if (minecraft .level != null ) {
127+ identifiers .add (getDimensionFogEffectId (minecraft .level ));
128+ }
129+ }
130+
131+ private static Identifier getDimensionFogEffectId (Level level ) {
132+ return level .dimensionTypeRegistration ()
133+ .unwrapKey ()
134+ .map (key -> key .identifier ())
135+ .orElseGet (() -> level .dimension ().identifier ());
136+ }
137+
108138 private static void setAtmosphericFogStart (int value ) {
109139 SodiumExtraGameOptions .FogSettings fogSettings = fogSettings ();
110140 int clampedValue = Math .clamp (value , 0 , 100 );
@@ -513,9 +543,7 @@ private OptionPageBuilder createRenderPage(ConfigBuilder builder) {
513543 .setName (Component .translatable ("sodium-extra.option.render" ));
514544
515545 SodiumExtraGameOptions .FogSettings fogSettings = fogSettings ();
516- DEFAULT_DIMENSION_IDS .stream ()
517- .filter (identifier -> !fogSettings .dimensionOverrides .containsKey (identifier ))
518- .forEach (identifier -> fogSettings .dimensionOverrides .put (identifier , createDimensionFogSettings ()));
546+ List <Identifier > dimensionFogEffectIds = getDimensionFogEffectIds (fogSettings );
519547
520548 page .addOptionGroup (builder .createOptionGroup ()
521549 .addOption (builder .createBooleanOption (ADVANCED_FOG_OPTION_ID )
@@ -603,9 +631,7 @@ private OptionPageBuilder createRenderPage(ConfigBuilder builder) {
603631 );
604632
605633 OptionGroupBuilder dimensionFogGroup = builder .createOptionGroup ();
606- fogSettings .dimensionOverrides .keySet ().stream ()
607- .sorted (Comparator .comparing (Identifier ::toString ))
608- .forEach (identifier -> dimensionFogGroup .addOption (builder .createIntegerOption (id ("fog." + identifier .toLanguageKey ("options.dimensions" )))
634+ dimensionFogEffectIds .forEach (identifier -> dimensionFogGroup .addOption (builder .createIntegerOption (id ("fog." + identifier .toLanguageKey ("options.dimensions" )))
609635 .setEnabledProvider (
610636 SodiumExtraConfig ::isDimensionFogOptionEnabled ,
611637 ADVANCED_FOG_OPTION_ID ,
@@ -623,7 +649,9 @@ private OptionPageBuilder createRenderPage(ConfigBuilder builder) {
623649 )
624650 .setDefaultValue (0 )
625651 ));
626- page .addOptionGroup (dimensionFogGroup );
652+ if (!dimensionFogEffectIds .isEmpty ()) {
653+ page .addOptionGroup (dimensionFogGroup );
654+ }
627655
628656 page .addOptionGroup (builder .createOptionGroup ()
629657 .addOption (builder .createBooleanOption (PROTECTED_GAMEPLAY_FOG_OPTION_ID )
0 commit comments