From 2bb302309e3cbfb0ad3e18a9c0fdd263d30d6229 Mon Sep 17 00:00:00 2001 From: JellySquid Date: Fri, 26 Jan 2024 19:48:24 -0600 Subject: [PATCH] Revert some class name changes for options code This will help to avoid breaking some mods which currently depend on these internal details for a point release. Though, please, if you have some use case where you need to touch this code, please ask us for an API, rather than using mixins to hack into our code. --- .../mods/sodium/client/SodiumClientMod.java | 18 ++++++------- ...Layout.java => SodiumGameOptionPages.java} | 12 ++++----- .../SodiumGameOptions.java} | 21 ++++++++------- ...tingsScreen.java => SodiumOptionsGUI.java} | 26 +++++++++---------- .../options/storage/SodiumOptionsStorage.java | 10 +++---- .../hooks/settings/OptionsScreenMixin.java | 4 +-- 6 files changed, 46 insertions(+), 45 deletions(-) rename src/main/java/me/jellysquid/mods/sodium/client/gui/{RendererSettingsLayout.java => SodiumGameOptionPages.java} (98%) rename src/main/java/me/jellysquid/mods/sodium/client/{data/config/UserConfig.java => gui/SodiumGameOptions.java} (89%) rename src/main/java/me/jellysquid/mods/sodium/client/gui/{RendererSettingsScreen.java => SodiumOptionsGUI.java} (94%) diff --git a/src/main/java/me/jellysquid/mods/sodium/client/SodiumClientMod.java b/src/main/java/me/jellysquid/mods/sodium/client/SodiumClientMod.java index 8c32d85f63..3de3a87329 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/SodiumClientMod.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/SodiumClientMod.java @@ -1,6 +1,6 @@ package me.jellysquid.mods.sodium.client; -import me.jellysquid.mods.sodium.client.data.config.UserConfig; +import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions; import me.jellysquid.mods.sodium.client.data.fingerprint.FingerprintMeasure; import me.jellysquid.mods.sodium.client.data.fingerprint.HashedFingerprint; import me.jellysquid.mods.sodium.client.gui.console.Console; @@ -16,7 +16,7 @@ import java.io.IOException; public class SodiumClientMod implements ClientModInitializer { - private static UserConfig CONFIG; + private static SodiumGameOptions CONFIG; private static Logger LOGGER; private static String MOD_VERSION; @@ -43,7 +43,7 @@ public void onInitializeClient() { } } - public static UserConfig options() { + public static SodiumGameOptions options() { if (CONFIG == null) { throw new IllegalStateException("Config not yet available"); } @@ -59,16 +59,16 @@ public static Logger logger() { return LOGGER; } - private static UserConfig loadConfig() { + private static SodiumGameOptions loadConfig() { try { - return UserConfig.loadFromDisk(); + return SodiumGameOptions.loadFromDisk(); } catch (Exception e) { LOGGER.error("Failed to load configuration file", e); LOGGER.error("Using default configuration file in read-only mode"); Console.instance().logMessage(MessageLevel.SEVERE, Text.translatable("sodium.console.config_not_loaded"), 12.5); - var config = UserConfig.defaults(); + var config = SodiumGameOptions.defaults(); config.setReadOnly(); return config; @@ -76,10 +76,10 @@ private static UserConfig loadConfig() { } public static void restoreDefaultOptions() { - CONFIG = UserConfig.defaults(); + CONFIG = SodiumGameOptions.defaults(); try { - UserConfig.writeToDisk(CONFIG); + SodiumGameOptions.writeToDisk(CONFIG); } catch (IOException e) { throw new RuntimeException("Failed to write config file", e); } @@ -115,7 +115,7 @@ private static void updateFingerprint() { CONFIG.notifications.hasClearedDonationButton = false; try { - UserConfig.writeToDisk(CONFIG); + SodiumGameOptions.writeToDisk(CONFIG); } catch (IOException e) { LOGGER.error("Failed to update config file", e); } diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsLayout.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java similarity index 98% rename from src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsLayout.java rename to src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java index 37fd64e66f..8791f32a62 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsLayout.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptionPages.java @@ -1,7 +1,6 @@ package me.jellysquid.mods.sodium.client.gui; import com.google.common.collect.ImmutableList; -import me.jellysquid.mods.sodium.client.data.config.UserConfig; import me.jellysquid.mods.sodium.client.gl.arena.staging.MappedStagingBuffer; import me.jellysquid.mods.sodium.client.gl.device.RenderDevice; import me.jellysquid.mods.sodium.client.gui.options.*; @@ -24,7 +23,8 @@ import java.util.ArrayList; import java.util.List; -public class RendererSettingsLayout { +// TODO: Rename in Sodium 0.6 +public class SodiumGameOptionPages { private static final SodiumOptionsStorage sodiumOpts = new SodiumOptionsStorage(); private static final MinecraftOptionsStorage vanillaOpts = new MinecraftOptionsStorage(); @@ -161,17 +161,17 @@ public static OptionPage quality() { }, opts -> opts.getCloudRenderMode().getValue()) .setImpact(OptionImpact.LOW) .build()) - .add(OptionImpl.createBuilder(UserConfig.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) .setName(Text.translatable("soundCategory.weather")) .setTooltip(Text.translatable("sodium.options.weather_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, UserConfig.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class)) .setBinding((opts, value) -> opts.quality.weatherQuality = value, opts -> opts.quality.weatherQuality) .setImpact(OptionImpact.MEDIUM) .build()) - .add(OptionImpl.createBuilder(UserConfig.GraphicsQuality.class, sodiumOpts) + .add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts) .setName(Text.translatable("sodium.options.leaves_quality.name")) .setTooltip(Text.translatable("sodium.options.leaves_quality.tooltip")) - .setControl(option -> new CyclingControl<>(option, UserConfig.GraphicsQuality.class)) + .setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.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/data/config/UserConfig.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java similarity index 89% rename from src/main/java/me/jellysquid/mods/sodium/client/data/config/UserConfig.java rename to src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java index fc373caa6d..785b9d5dbd 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/data/config/UserConfig.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumGameOptions.java @@ -1,4 +1,4 @@ -package me.jellysquid.mods.sodium.client.data.config; +package me.jellysquid.mods.sodium.client.gui; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; @@ -16,7 +16,8 @@ import java.nio.file.Files; import java.nio.file.Path; -public class UserConfig { +// TODO: Rename in Sodium 0.6 +public class SodiumGameOptions { private static final String DEFAULT_FILE_NAME = "sodium-options.json"; public final QualitySettings quality = new QualitySettings(); @@ -26,12 +27,12 @@ public class UserConfig { private boolean readOnly; - private UserConfig() { + private SodiumGameOptions() { // NO-OP } - public static UserConfig defaults() { - return new UserConfig(); + public static SodiumGameOptions defaults() { + return new SodiumGameOptions(); } public static class PerformanceSettings { @@ -94,18 +95,18 @@ public boolean isFancy(GraphicsMode graphicsMode) { .excludeFieldsWithModifiers(Modifier.PRIVATE) .create(); - public static UserConfig loadFromDisk() { + public static SodiumGameOptions loadFromDisk() { Path path = getConfigPath(); - UserConfig config; + SodiumGameOptions config; if (Files.exists(path)) { try (FileReader reader = new FileReader(path.toFile())) { - config = GSON.fromJson(reader, UserConfig.class); + config = GSON.fromJson(reader, SodiumGameOptions.class); } catch (IOException e) { throw new RuntimeException("Could not parse config", e); } } else { - config = new UserConfig(); + config = new SodiumGameOptions(); } try { @@ -123,7 +124,7 @@ private static Path getConfigPath() { .resolve(DEFAULT_FILE_NAME); } - public static void writeToDisk(UserConfig config) throws IOException { + public static void writeToDisk(SodiumGameOptions config) throws IOException { if (config.isReadOnly()) { throw new IllegalStateException("Config file is read-only"); } diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsScreen.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumOptionsGUI.java similarity index 94% rename from src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsScreen.java rename to src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumOptionsGUI.java index 45e4beaf91..93ef6d3f98 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/RendererSettingsScreen.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/SodiumOptionsGUI.java @@ -1,7 +1,6 @@ package me.jellysquid.mods.sodium.client.gui; import me.jellysquid.mods.sodium.client.SodiumClientMod; -import me.jellysquid.mods.sodium.client.data.config.UserConfig; import me.jellysquid.mods.sodium.client.data.fingerprint.HashedFingerprint; import me.jellysquid.mods.sodium.client.gui.console.Console; import me.jellysquid.mods.sodium.client.gui.console.message.MessageLevel; @@ -37,7 +36,8 @@ import java.util.List; import java.util.stream.Stream; -public class RendererSettingsScreen extends Screen implements ScreenPromptable { +// TODO: Rename in Sodium 0.6 +public class SodiumOptionsGUI extends Screen implements ScreenPromptable { private final List pages = new ArrayList<>(); private final List> controls = new ArrayList<>(); @@ -54,15 +54,15 @@ public class RendererSettingsScreen extends Screen implements ScreenPromptable { private @Nullable ScreenPrompt prompt; - private RendererSettingsScreen(Screen prevScreen) { + private SodiumOptionsGUI(Screen prevScreen) { super(Text.literal("Sodium Renderer Settings")); this.prevScreen = prevScreen; - this.pages.add(RendererSettingsLayout.general()); - this.pages.add(RendererSettingsLayout.quality()); - this.pages.add(RendererSettingsLayout.performance()); - this.pages.add(RendererSettingsLayout.advanced()); + this.pages.add(SodiumGameOptionPages.general()); + this.pages.add(SodiumGameOptionPages.quality()); + this.pages.add(SodiumGameOptionPages.performance()); + this.pages.add(SodiumGameOptionPages.advanced()); this.checkPromptTimers(); } @@ -105,7 +105,7 @@ private void checkPromptTimers() { } } - private void openDonationPrompt(UserConfig options) { + private void openDonationPrompt(SodiumGameOptions options) { var prompt = new ScreenPrompt(this, DONATION_PROMPT_MESSAGE, 320, 190, new ScreenPrompt.Action(Text.literal("Buy us a coffee"), this::openDonationPage)); prompt.setFocused(true); @@ -113,7 +113,7 @@ private void openDonationPrompt(UserConfig options) { options.notifications.hasSeenDonationPrompt = true; try { - UserConfig.writeToDisk(options); + SodiumGameOptions.writeToDisk(options); } catch (IOException e) { SodiumClientMod.logger() .error("Failed to update config file", e); @@ -122,9 +122,9 @@ private void openDonationPrompt(UserConfig options) { public static Screen createScreen(Screen currentScreen) { if (SodiumClientMod.options().isReadOnly()) { - return new ConfigCorruptedScreen(currentScreen, RendererSettingsScreen::new); + return new ConfigCorruptedScreen(currentScreen, SodiumOptionsGUI::new); } else { - return new RendererSettingsScreen(currentScreen); + return new SodiumOptionsGUI(currentScreen); } } @@ -181,11 +181,11 @@ private void setDonationButtonVisibility(boolean value) { } private void hideDonationButton() { - UserConfig options = SodiumClientMod.options(); + SodiumGameOptions options = SodiumClientMod.options(); options.notifications.hasClearedDonationButton = true; try { - UserConfig.writeToDisk(options); + SodiumGameOptions.writeToDisk(options); } catch (IOException e) { throw new RuntimeException("Failed to save configuration", e); } diff --git a/src/main/java/me/jellysquid/mods/sodium/client/gui/options/storage/SodiumOptionsStorage.java b/src/main/java/me/jellysquid/mods/sodium/client/gui/options/storage/SodiumOptionsStorage.java index 03f20364c9..063dd19416 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/gui/options/storage/SodiumOptionsStorage.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/gui/options/storage/SodiumOptionsStorage.java @@ -1,26 +1,26 @@ package me.jellysquid.mods.sodium.client.gui.options.storage; import me.jellysquid.mods.sodium.client.SodiumClientMod; -import me.jellysquid.mods.sodium.client.data.config.UserConfig; +import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions; import java.io.IOException; -public class SodiumOptionsStorage implements OptionStorage { - private final UserConfig options; +public class SodiumOptionsStorage implements OptionStorage { + private final SodiumGameOptions options; public SodiumOptionsStorage() { this.options = SodiumClientMod.options(); } @Override - public UserConfig getData() { + public SodiumGameOptions getData() { return this.options; } @Override public void save() { try { - UserConfig.writeToDisk(this.options); + SodiumGameOptions.writeToDisk(this.options); } catch (IOException e) { throw new RuntimeException("Couldn't save configuration changes", e); } diff --git a/src/main/java/me/jellysquid/mods/sodium/mixin/features/gui/hooks/settings/OptionsScreenMixin.java b/src/main/java/me/jellysquid/mods/sodium/mixin/features/gui/hooks/settings/OptionsScreenMixin.java index 1669b343ce..330c06b9b1 100644 --- a/src/main/java/me/jellysquid/mods/sodium/mixin/features/gui/hooks/settings/OptionsScreenMixin.java +++ b/src/main/java/me/jellysquid/mods/sodium/mixin/features/gui/hooks/settings/OptionsScreenMixin.java @@ -1,6 +1,6 @@ package me.jellysquid.mods.sodium.mixin.features.gui.hooks.settings; -import me.jellysquid.mods.sodium.client.gui.RendererSettingsScreen; +import me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.option.OptionsScreen; import net.minecraft.text.Text; @@ -19,6 +19,6 @@ protected OptionsScreenMixin(Text title) { @Dynamic @Inject(method = "method_19828", at = @At("HEAD"), cancellable = true) private void open(CallbackInfoReturnable ci) { - ci.setReturnValue(RendererSettingsScreen.createScreen(this)); + ci.setReturnValue(SodiumOptionsGUI.createScreen(this)); } }