From 5ddae0ce6fcd9d76019316e0d74ae43c25506527 Mon Sep 17 00:00:00 2001 From: Madis Date: Tue, 30 Jan 2024 11:48:10 +0100 Subject: [PATCH 1/3] Separate Fast/Fancy for clouds, weather, leaves --- .../client/gui/SodiumGameOptionPages.java | 10 ++-- .../sodium/client/gui/SodiumGameOptions.java | 50 +++++++++++++++++-- .../resources/assets/sodium/lang/en_us.json | 6 +++ 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java index 8791f32a62..c972ecd921 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java @@ -148,7 +148,7 @@ public static OptionPage quality() { .add(OptionImpl.createBuilder(CloudRenderMode.class, vanillaOpts) .setName(Text.translatable("options.renderClouds")) .setTooltip(Text.translatable("sodium.options.clouds_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, CloudRenderMode.class, new Text[] { Text.translatable("options.off"), Text.translatable("options.graphics.fast"), Text.translatable("options.graphics.fancy") })) + .setControl(option -> new CyclingControl<>(option, CloudRenderMode.class, new Text[] { Text.translatable("options.off"), Text.translatable("sodium.options.clouds_quality.fast"), Text.translatable("sodium.options.clouds_quality.fancy") })) .setBinding((opts, value) -> { opts.getCloudRenderMode().setValue(value); @@ -161,17 +161,17 @@ public static OptionPage quality() { }, opts -> opts.getCloudRenderMode().getValue()) .setImpact(OptionImpact.LOW) .build()) - .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.WeatherQuality.class, sodiumOpts) .setName(Text.translatable("soundCategory.weather")) .setTooltip(Text.translatable("sodium.options.weather_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.WeatherQuality.class)) .setBinding((opts, value) -> opts.quality.weatherQuality = value, opts -> opts.quality.weatherQuality) .setImpact(OptionImpact.MEDIUM) .build()) - .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.LeavesQuality.class, sodiumOpts) .setName(Text.translatable("sodium.options.leaves_quality.name")) .setTooltip(Text.translatable("sodium.options.leaves_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.LeavesQuality.class)) .setBinding((opts, value) -> opts.quality.leavesQuality = value, opts -> opts.quality.leavesQuality) .setImpact(OptionImpact.MEDIUM) .setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD) diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java index 785b9d5dbd..c149e16eef 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java @@ -55,8 +55,8 @@ public static class AdvancedSettings { } public static class QualitySettings { - public GraphicsQuality weatherQuality = GraphicsQuality.DEFAULT; - public GraphicsQuality leavesQuality = GraphicsQuality.DEFAULT; + public WeatherQuality weatherQuality = WeatherQuality.DEFAULT; + public LeavesQuality leavesQuality = LeavesQuality.DEFAULT; public boolean enableVignette = true; } @@ -70,8 +70,8 @@ public static class NotificationSettings { public enum GraphicsQuality implements TextProvider { DEFAULT("options.gamma.default"), - FANCY("options.clouds.fancy"), - FAST("options.clouds.fast"); + FANCY("options.graphics.fancy"), + FAST("options.graphics.fast"); private final Text name; @@ -89,6 +89,48 @@ public boolean isFancy(GraphicsMode graphicsMode) { } } + public enum WeatherQuality implements TextProvider { + DEFAULT("options.gamma.default"), + FANCY("sodium.options.weather_quality.fancy"), + FAST("sodium.options.weather_quality.fast"); + + private final Text name; + + WeatherQuality(String name) { + this.name = Text.translatable(name); + } + + @Override + public Text getLocalizedName() { + return this.name; + } + + public boolean isFancy(GraphicsMode graphicsMode) { + return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsMode.FANCY || graphicsMode == GraphicsMode.FABULOUS)); + } + } + + public enum LeavesQuality implements TextProvider { + DEFAULT("options.gamma.default"), + FANCY("sodium.options.leaves_quality.fancy"), + FAST("sodium.options.leaves_quality.fast"); + + private final Text name; + + LeavesQuality(String name) { + this.name = Text.translatable(name); + } + + @Override + public Text getLocalizedName() { + return this.name; + } + + public boolean isFancy(GraphicsMode graphicsMode) { + return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsMode.FANCY || graphicsMode == GraphicsMode.FABULOUS)); + } + } + private static final Gson GSON = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .setPrettyPrinting() diff --git a/src/main/resources/assets/sodium/lang/en_us.json b/src/main/resources/assets/sodium/lang/en_us.json index 888b5634e7..8d982f2a76 100644 --- a/src/main/resources/assets/sodium/lang/en_us.json +++ b/src/main/resources/assets/sodium/lang/en_us.json @@ -19,8 +19,14 @@ "sodium.options.autosave_indicator.tooltip": "If enabled, an indicator will be shown when the game is saving the world to disk.", "sodium.options.graphics_quality.tooltip": "The default graphics quality controls some legacy options and is necessary for mod compatibility. If the options below are left to \"Default\", they will use this setting.", "sodium.options.clouds_quality.tooltip": "The quality level used for rendering clouds in the sky. Even though the options are labeled \"Fast\" and \"Fancy\", the effect on performance is negligible.", + "sodium.options.clouds_quality.fast": "Fast", + "sodium.options.clouds_quality.fancy": "Fancy", "sodium.options.weather_quality.tooltip": "Controls the distance that weather effects, such as rain and snow, will be rendered.", + "sodium.options.weather_quality.fast": "Fast", + "sodium.options.weather_quality.fancy": "Fancy", "sodium.options.leaves_quality.name": "Leaves", + "sodium.options.leaves_quality.fast": "Fast", + "sodium.options.leaves_quality.fancy": "Fancy", "sodium.options.leaves_quality.tooltip": "Controls whether leaves will be rendered as transparent (fancy) or opaque (fast).", "sodium.options.particle_quality.tooltip": "Controls the maximum number of particles which can be present on screen at any one time.", "sodium.options.smooth_lighting.tooltip": "Enables the smooth lighting and shading of blocks in the world. This can very slightly increase the amount of time it takes to load or update a chunk, but it doesn't affect frame rates.", From 2c1d32c3af10cb5b372b1360cc259e09d955ba53 Mon Sep 17 00:00:00 2001 From: Madis Date: Tue, 30 Jan 2024 11:59:06 +0100 Subject: [PATCH 2/3] Clouds already have separate phrases --- .../mods/sodium/client/gui/SodiumGameOptionPages.java | 2 +- src/main/resources/assets/sodium/lang/en_us.json | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java index c972ecd921..cdaf85bea6 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java @@ -148,7 +148,7 @@ public static OptionPage quality() { .add(OptionImpl.createBuilder(CloudRenderMode.class, vanillaOpts) .setName(Text.translatable("options.renderClouds")) .setTooltip(Text.translatable("sodium.options.clouds_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, CloudRenderMode.class, new Text[] { Text.translatable("options.off"), Text.translatable("sodium.options.clouds_quality.fast"), Text.translatable("sodium.options.clouds_quality.fancy") })) + .setControl(option -> new CyclingControl<>(option, CloudRenderMode.class, new Text[] { Text.translatable("options.off"), Text.translatable("options.clouds.fast"), Text.translatable("options.clouds.fancy") })) .setBinding((opts, value) -> { opts.getCloudRenderMode().setValue(value); diff --git a/src/main/resources/assets/sodium/lang/en_us.json b/src/main/resources/assets/sodium/lang/en_us.json index 8d982f2a76..a5f49b289a 100644 --- a/src/main/resources/assets/sodium/lang/en_us.json +++ b/src/main/resources/assets/sodium/lang/en_us.json @@ -19,8 +19,6 @@ "sodium.options.autosave_indicator.tooltip": "If enabled, an indicator will be shown when the game is saving the world to disk.", "sodium.options.graphics_quality.tooltip": "The default graphics quality controls some legacy options and is necessary for mod compatibility. If the options below are left to \"Default\", they will use this setting.", "sodium.options.clouds_quality.tooltip": "The quality level used for rendering clouds in the sky. Even though the options are labeled \"Fast\" and \"Fancy\", the effect on performance is negligible.", - "sodium.options.clouds_quality.fast": "Fast", - "sodium.options.clouds_quality.fancy": "Fancy", "sodium.options.weather_quality.tooltip": "Controls the distance that weather effects, such as rain and snow, will be rendered.", "sodium.options.weather_quality.fast": "Fast", "sodium.options.weather_quality.fancy": "Fancy", From a51af12da963ae827ca01d88fb0bea0d7678771f Mon Sep 17 00:00:00 2001 From: Madis Date: Fri, 16 Feb 2024 18:12:49 +0100 Subject: [PATCH 3/3] Additional fixes --- .../client/gui/SodiumGameOptionPages.java | 8 ++++---- .../sodium/client/gui/SodiumGameOptions.java | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptionPages.java b/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptionPages.java index 077c4427ad..f9130b6b77 100644 --- a/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptionPages.java +++ b/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptionPages.java @@ -164,17 +164,17 @@ public static OptionPage quality() { }, opts -> opts.cloudStatus().get()) .setImpact(OptionImpact.LOW) .build()) - .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.WeatherQuality.class, sodiumOpts) .setName(Component.translatable("soundCategory.weather")) .setTooltip(Component.translatable("sodium.options.weather_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.WeatherQuality.class)) .setBinding((opts, value) -> opts.quality.weatherQuality = value, opts -> opts.quality.weatherQuality) .setImpact(OptionImpact.MEDIUM) .build()) - .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.LeavesQuality.class, sodiumOpts) .setName(Component.translatable("sodium.options.leaves_quality.name")) .setTooltip(Component.translatable("sodium.options.leaves_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.LeavesQuality.class)) .setBinding((opts, value) -> opts.quality.leavesQuality = value, opts -> opts.quality.leavesQuality) .setImpact(OptionImpact.MEDIUM) .setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD) diff --git a/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptions.java b/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptions.java index a7d9ac7600..afc3edba1e 100644 --- a/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptions.java +++ b/src/main/java/net/caffeinemc/mods/sodium/client/gui/SodiumGameOptions.java @@ -98,19 +98,19 @@ public enum WeatherQuality implements TextProvider { FANCY("sodium.options.weather_quality.fancy"), FAST("sodium.options.weather_quality.fast"); - private final Text name; + private final Component name; WeatherQuality(String name) { - this.name = Text.translatable(name); + this.name = Component.translatable(name); } @Override - public Text getLocalizedName() { + public Component getLocalizedName() { return this.name; } - public boolean isFancy(GraphicsMode graphicsMode) { - return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsMode.FANCY || graphicsMode == GraphicsMode.FABULOUS)); + public boolean isFancy(GraphicsStatus graphicsMode) { + return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsStatus.FANCY || graphicsMode == GraphicsStatus.FABULOUS)); } } @@ -119,19 +119,19 @@ public enum LeavesQuality implements TextProvider { FANCY("sodium.options.leaves_quality.fancy"), FAST("sodium.options.leaves_quality.fast"); - private final Text name; + private final Component name; LeavesQuality(String name) { - this.name = Text.translatable(name); + this.name = Component.translatable(name); } @Override - public Text getLocalizedName() { + public Component getLocalizedName() { return this.name; } - public boolean isFancy(GraphicsMode graphicsMode) { - return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsMode.FANCY || graphicsMode == GraphicsMode.FABULOUS)); + public boolean isFancy(GraphicsStatus graphicsMode) { + return (this == FANCY) || (this == DEFAULT && (graphicsMode == GraphicsStatus.FANCY || graphicsMode == GraphicsStatus.FABULOUS)); } }