diff --git a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java index 4fc8152126..3b86e4b681 100644 --- a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java +++ b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java @@ -147,7 +147,7 @@ public class SessionManager { // Initialize config for new session // If the session isn't logged in yet, don't switch to the new config - configManager.switchSession(session); + configManager.switchSession(); } eventBus.post(new SessionOpen()); @@ -177,7 +177,7 @@ public class SessionManager accountSession = null; // No more account // Restore config - configManager.switchSession(null); + configManager.switchSession(); eventBus.post(new SessionClose()); } diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index b0f42f7bf1..d7d2c52f47 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -62,7 +62,7 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ConfigChanged; import net.runelite.client.RuneLite; -import net.runelite.client.account.AccountSession; +import static net.runelite.client.RuneLite.PROFILES_DIR; import net.runelite.client.eventbus.EventBus; import net.runelite.client.util.ColorUtil; @@ -71,14 +71,14 @@ import net.runelite.client.util.ColorUtil; public class ConfigManager { private static final String SETTINGS_FILE_NAME = "runeliteplus.properties"; + private static final String STANDARD_SETTINGS_FILE_NAME = "settings.properties"; private static final File SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, SETTINGS_FILE_NAME); - private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, "settings.properties"); + private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME); @Inject EventBus eventBus; private final ScheduledExecutorService executor; - private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this); private final Properties properties = new Properties(); private final Map pendingChanges = new HashMap<>(); @@ -91,7 +91,7 @@ public class ConfigManager executor.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS); } - public final void switchSession(AccountSession session) + public final void switchSession() { // Ensure existing config is saved load(); @@ -164,7 +164,7 @@ public class ConfigManager catch (FileNotFoundException ex) { log.debug("Unable to load settings - no such file, syncing from standard settings"); - syncPropertiesFromFile(STANDARD_SETTINGS_FILE); + syncLastModified(); } catch (IllegalArgumentException | IOException ex) { @@ -201,11 +201,11 @@ public class ConfigManager } } - private void saveToFile(final File propertiesFile) throws IOException + private void saveToFile() throws IOException { - propertiesFile.getParentFile().mkdirs(); + ConfigManager.SETTINGS_FILE.getParentFile().mkdirs(); - try (FileOutputStream out = new FileOutputStream(propertiesFile)) + try (FileOutputStream out = new FileOutputStream(ConfigManager.SETTINGS_FILE)) { final FileLock lock = out.getChannel().lock(); @@ -589,7 +589,7 @@ public class ConfigManager { try { - saveToFile(SETTINGS_FILE); + saveToFile(); } catch (IOException ex) { @@ -597,4 +597,32 @@ public class ConfigManager } } } -} + + private void syncLastModified() + { + File newestFile; + + newestFile = STANDARD_SETTINGS_FILE; + + for (File profileDir : PROFILES_DIR.listFiles()) + { + if (!profileDir.isDirectory()) + { + continue; + } + + for (File settings : profileDir.listFiles()) + { + if (!settings.getName().equals(STANDARD_SETTINGS_FILE_NAME) || + settings.lastModified() < newestFile.lastModified()) + { + continue; + } + + newestFile = settings; + } + } + + syncPropertiesFromFile(newestFile); + } +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusConfig.java index dbdeea12d0..7e666c19b2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusConfig.java @@ -29,6 +29,7 @@ package net.runelite.client.plugins.runeliteplus; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.Range; @ConfigGroup("runeliteplus") public interface RuneLitePlusConfig extends Config @@ -55,6 +56,10 @@ public interface RuneLitePlusConfig extends Config return false; } + @Range( + min = 15, + max = 100 + ) @ConfigItem( keyName = "opacityPercentage", name = "Opacity percentage",