Skip to content

Commit af25748

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

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
@@ -43,6 +43,7 @@ private static Identifier id(String path) {
4343
private static final Identifier MULTI_DIMENSION_FOG_OPTION_ID = id("multi_dimension_fog");
4444
private static final Identifier PROTECTED_GAMEPLAY_FOG_OPTION_ID = id("protected_gameplay_fog");
4545
private static final Identifier WAYLAND_FULLSCREEN_RESOLUTION_OPTION_ID = id("wayland_fullscreen_resolution");
46+
private static final Identifier CLOUD_HEIGHT_OVERRIDE_OPTION_ID = id("cloud_height_override");
4647
private static final Identifier SODIUM_FULLSCREEN_MODE_OPTION_ID = Identifier.parse("sodium:general.fullscreen_mode");
4748
private static final Identifier SODIUM_FULLSCREEN_RESOLUTION_OPTION_ID = Identifier.parse("sodium:general.fullscreen_resolution");
4849
private static final Identifier SODIUM_VSYNC_OPTION_ID = Identifier.parse("sodium:general.vsync");
@@ -82,6 +83,11 @@ private static boolean isProtectedGameplayFogOptionEnabled(ConfigState state) {
8283
&& state.readBooleanOption(PROTECTED_GAMEPLAY_FOG_OPTION_ID);
8384
}
8485

86+
private static boolean isCloudHeightOptionEnabled(ConfigState state) {
87+
return SodiumExtraClientMod.mixinConfig().getOptions().get("mixin.cloud").isEnabled()
88+
&& state.readBooleanOption(CLOUD_HEIGHT_OVERRIDE_OPTION_ID);
89+
}
90+
8591
private static SodiumExtraGameOptions.FogSettings fogSettings() {
8692
SodiumExtraGameOptions.RenderSettings renderSettings = SodiumExtraClientMod.options().renderSettings;
8793
renderSettings.sanitize();
@@ -884,8 +890,17 @@ private OptionPageBuilder createExtraPage(ConfigBuilder builder) {
884890
.setBinding((value) -> SodiumExtraClientMod.options().extraSettings.showCoords = value, () -> SodiumExtraClientMod.options().extraSettings.showCoords)
885891
.setStorageHandler(SodiumExtraClientMod.options())
886892
)
887-
.addOption(builder.createIntegerOption(id("cloud_height"))
893+
.addOption(builder.createBooleanOption(CLOUD_HEIGHT_OVERRIDE_OPTION_ID)
888894
.setEnabled(SodiumExtraClientMod.mixinConfig().getOptions().get("mixin.cloud").isEnabled())
895+
.setName(Component.translatable("sodium-extra.option.cloud_height_override"))
896+
.setTooltip(Component.translatable("sodium-extra.option.cloud_height_override.tooltip"))
897+
.setDefaultValue(false)
898+
.setBinding((value) -> SodiumExtraClientMod.options().extraSettings.cloudHeightOverride = value, () -> SodiumExtraClientMod.options().extraSettings.cloudHeightOverride)
899+
.setStorageHandler(SodiumExtraClientMod.options())
900+
)
901+
.addOption(builder.createIntegerOption(id("cloud_height"))
902+
.setEnabledProvider(SodiumExtraConfig::isCloudHeightOptionEnabled, CLOUD_HEIGHT_OVERRIDE_OPTION_ID)
903+
.setControlHiddenWhenDisabled(false)
889904
.setName(Component.translatable("sodium-extra.option.cloud_height"))
890905
.setTooltip(Component.translatable("sodium-extra.option.cloud_height.tooltip"))
891906
.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
@@ -447,6 +447,7 @@ public static class ExtraSettings {
447447
@SerializedName(SodiumExtraConfigKeys.WAYLAND_FULLSCREEN_RESOLUTION_RECOVERY_PENDING)
448448
public boolean waylandFullscreenResolutionRecoveryPending;
449449
public boolean useAdaptiveSync;
450+
public boolean cloudHeightOverride;
450451
public int cloudHeight;
451452
public boolean toasts;
452453
public boolean advancementToast;
@@ -468,6 +469,7 @@ public ExtraSettings() {
468469
this.waylandFullscreenResolution = false;
469470
this.waylandFullscreenResolutionRecoveryPending = false;
470471
this.useAdaptiveSync = false;
472+
this.cloudHeightOverride = false;
471473
this.cloudHeight = 192;
472474
this.toasts = true;
473475
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 = "lambda$addCloudsPass$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/CloudRenderer;render(ILnet/minecraft/client/CloudStatus;FILnet/minecraft/world/phys/Vec3;JF)V"))
1515
private void modifyCloudHeight(CloudRenderer instance, int i, CloudStatus cloudStatus, float f, int j, Vec3 vec3, long l, float g) {
16-
// todo: don't force overwrite
17-
instance.render(i, cloudStatus, SodiumExtraClientMod.options().extraSettings.cloudHeight + 0.33F, j, 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, j, 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)