Skip to content

Commit c2ed00d

Browse files
committed
change: Preserve dimension cloud height (#459)
1 parent a29098e commit c2ed00d

4 files changed

Lines changed: 25 additions & 4 deletions

File tree

common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraConfig.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ private static Identifier id(String path) {
4141
private static final Identifier MULTI_DIMENSION_FOG_OPTION_ID = id("multi_dimension_fog");
4242
private static final Identifier PROTECTED_GAMEPLAY_FOG_OPTION_ID = id("protected_gameplay_fog");
4343
private static final Identifier WAYLAND_FULLSCREEN_RESOLUTION_OPTION_ID = id("wayland_fullscreen_resolution");
44+
private static final Identifier CLOUD_HEIGHT_OVERRIDE_OPTION_ID = id("cloud_height_override");
4445
private static final Identifier SODIUM_FULLSCREEN_OPTION_ID = Identifier.parse("sodium:general.fullscreen");
4546
private static final Identifier SODIUM_FULLSCREEN_RESOLUTION_OPTION_ID = Identifier.parse("sodium:general.fullscreen_resolution");
4647
private static final Identifier SODIUM_VSYNC_OPTION_ID = Identifier.parse("sodium:general.vsync");
@@ -79,6 +80,11 @@ private static boolean isProtectedGameplayFogOptionEnabled(ConfigState state) {
7980
&& state.readBooleanOption(PROTECTED_GAMEPLAY_FOG_OPTION_ID);
8081
}
8182

83+
private static boolean isCloudHeightOptionEnabled(ConfigState state) {
84+
return SodiumExtraClientMod.mixinConfig().getOptions().get("mixin.cloud").isEnabled()
85+
&& state.readBooleanOption(CLOUD_HEIGHT_OVERRIDE_OPTION_ID);
86+
}
87+
8288
private static SodiumExtraGameOptions.FogSettings fogSettings() {
8389
SodiumExtraGameOptions.RenderSettings renderSettings = SodiumExtraClientMod.options().renderSettings;
8490
renderSettings.sanitize();
@@ -878,8 +884,17 @@ private OptionPageBuilder createExtraPage(ConfigBuilder builder) {
878884
.setBinding((value) -> SodiumExtraClientMod.options().extraSettings.showCoords = value, () -> SodiumExtraClientMod.options().extraSettings.showCoords)
879885
.setStorageHandler(SodiumExtraClientMod.options())
880886
)
881-
.addOption(builder.createIntegerOption(id("cloud_height"))
887+
.addOption(builder.createBooleanOption(CLOUD_HEIGHT_OVERRIDE_OPTION_ID)
882888
.setEnabled(SodiumExtraClientMod.mixinConfig().getOptions().get("mixin.cloud").isEnabled())
889+
.setName(Component.translatable("sodium-extra.option.cloud_height_override"))
890+
.setTooltip(Component.translatable("sodium-extra.option.cloud_height_override.tooltip"))
891+
.setDefaultValue(false)
892+
.setBinding((value) -> SodiumExtraClientMod.options().extraSettings.cloudHeightOverride = value, () -> SodiumExtraClientMod.options().extraSettings.cloudHeightOverride)
893+
.setStorageHandler(SodiumExtraClientMod.options())
894+
)
895+
.addOption(builder.createIntegerOption(id("cloud_height"))
896+
.setEnabledProvider(SodiumExtraConfig::isCloudHeightOptionEnabled, CLOUD_HEIGHT_OVERRIDE_OPTION_ID)
897+
.setControlHiddenWhenDisabled(false)
883898
.setName(Component.translatable("sodium-extra.option.cloud_height"))
884899
.setTooltip(Component.translatable("sodium-extra.option.cloud_height.tooltip"))
885900
.setRange(-64, 319, 1)

common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ public static class ExtraSettings {
435435
@SerializedName(SodiumExtraConfigKeys.WAYLAND_FULLSCREEN_RESOLUTION_RECOVERY_PENDING)
436436
public boolean waylandFullscreenResolutionRecoveryPending;
437437
public boolean useAdaptiveSync;
438+
public boolean cloudHeightOverride;
438439
public int cloudHeight;
439440
public boolean toasts;
440441
public boolean advancementToast;
@@ -456,6 +457,7 @@ public ExtraSettings() {
456457
this.waylandFullscreenResolution = false;
457458
this.waylandFullscreenResolutionRecoveryPending = false;
458459
this.useAdaptiveSync = false;
460+
this.cloudHeightOverride = false;
459461
this.cloudHeight = 192;
460462
this.toasts = true;
461463
this.advancementToast = true;

common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/cloud/MixinLevelRenderer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
public abstract class MixinLevelRenderer {
1414
@Redirect(method = {"method_62205", "lambda$addCloudsPass$3"}, require = 1, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/CloudRenderer;render(ILnet/minecraft/client/CloudStatus;FLnet/minecraft/world/phys/Vec3;JF)V"))
1515
private void modifyCloudHeight(CloudRenderer instance, int i, CloudStatus cloudStatus, float f, Vec3 vec3, long l, float g) {
16-
// todo: don't force overwrite
17-
instance.render(i, cloudStatus, SodiumExtraClientMod.options().extraSettings.cloudHeight + 0.33F, vec3, l, g);
16+
float cloudHeight = SodiumExtraClientMod.options().extraSettings.cloudHeightOverride
17+
? SodiumExtraClientMod.options().extraSettings.cloudHeight + 0.33F
18+
: f;
19+
instance.render(i, cloudStatus, cloudHeight, vec3, l, g);
1820
}
1921
}

common/src/main/resources/assets/sodium-extra/lang/en_us.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,9 @@
267267
"sodium-extra.option.cloud_distance": "Cloud Distance",
268268
"sodium-extra.option.cloud_distance.tooltip": "Sets how far from the player clouds are rendered.",
269269
"sodium-extra.option.cloud_height": "Cloud Height",
270-
"sodium-extra.option.cloud_height.tooltip": "Sets the height at which clouds are rendered.",
270+
"sodium-extra.option.cloud_height.tooltip": "Sets the cloud height used by Sodium Extra's cloud height override.",
271+
"sodium-extra.option.cloud_height_override": "Cloud Height Override",
272+
"sodium-extra.option.cloud_height_override.tooltip": "Overrides dimension-defined cloud heights with Sodium Extra's Cloud Height setting.",
271273
"sodium-extra.option.details": "Details",
272274
"sodium-extra.option.enchanting_table_book": "Enchanting Table Book",
273275
"sodium-extra.option.enchanting_table_book.tooltip": "Renders the enchanting table book.",

0 commit comments

Comments
 (0)