diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 3c73c8ae95..af3e6d5aa2 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -284,4 +284,6 @@ public interface Client extends GameEngine ClanMember[] getClanMembers(); boolean isClanMember(String name); + + Preferences getPreferences(); } diff --git a/runelite-api/src/main/java/net/runelite/api/Preferences.java b/runelite-api/src/main/java/net/runelite/api/Preferences.java new file mode 100644 index 0000000000..82a5b6c67a --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/Preferences.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, Lotto + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.api; + +public interface Preferences +{ + String getRememberedUsername(); + + void setRememberedUsername(String username); +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernameConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerConfig.java similarity index 89% rename from runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernameConfig.java rename to runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerConfig.java index f5e5661de1..b312a66681 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernameConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerConfig.java @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package net.runelite.client.plugins.rememberusername; +package net.runelite.client.plugins.usernamesyncer; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; @@ -30,10 +30,10 @@ import net.runelite.client.config.ConfigItem; @ConfigGroup( keyName = "rememberusername", - name = "Remember Username", - description = "Configuration for the remember username plugin" + name = "Username Syncer", + description = "Syncs the username that is currently remembered between computers" ) -public interface RememberUsernameConfig extends Config +public interface UsernameSyncerConfig extends Config { @ConfigItem( keyName = "username", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernamePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerPlugin.java similarity index 78% rename from runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernamePlugin.java rename to runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerPlugin.java index 9e0ac069d2..00fb7debb5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/rememberusername/RememberUsernamePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/usernamesyncer/UsernameSyncerPlugin.java @@ -22,12 +22,11 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package net.runelite.client.plugins.rememberusername; +package net.runelite.client.plugins.usernamesyncer; import com.google.common.base.Strings; import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; -import java.util.Objects; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; @@ -39,16 +38,16 @@ import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @PluginDescriptor( - name = "Remember username" + name = "Username Syncer" ) @Slf4j -public class RememberUsernamePlugin extends Plugin +public class UsernameSyncerPlugin extends Plugin { @Inject private Client client; @Inject - private RememberUsernameConfig config; + private UsernameSyncerConfig config; @Override protected void startUp() throws Exception @@ -56,22 +55,10 @@ public class RememberUsernamePlugin extends Plugin applyUsername(); } - protected void shutDown() throws Exception - { - GameState gameState = client.getGameState(); - if (gameState == GameState.LOGIN_SCREEN) - { - if (Objects.equals(config.username(), client.getUsername())) - { - client.setUsername(""); - } - } - } - @Provides - RememberUsernameConfig getConfig(ConfigManager configManager) + UsernameSyncerConfig getConfig(ConfigManager configManager) { - return configManager.getConfig(RememberUsernameConfig.class); + return configManager.getConfig(UsernameSyncerConfig.class); } @Subscribe @@ -83,13 +70,20 @@ public class RememberUsernamePlugin extends Plugin } else if (event.getGameState() == GameState.LOGGED_IN) { - if (config.username().equals(client.getUsername())) + String username = ""; + + if (client.getPreferences().getRememberedUsername() != null) + { + username = client.getUsername(); + } + + if (config.username().equals(username)) { return; } - log.debug("Saving username: {}", client.getUsername()); - config.username(client.getUsername()); + log.debug("Saving username: {}", username); + config.username(username); } } @@ -106,12 +100,13 @@ public class RememberUsernamePlugin extends Plugin if (gameState == GameState.LOGIN_SCREEN) { String username = config.username(); + if (Strings.isNullOrEmpty(username)) { return; } - client.setUsername(username); + client.getPreferences().setRememberedUsername(username); } } } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index 4325635af4..928c84b537 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -468,4 +468,8 @@ public interface RSClient extends RSGameEngine, Client @Import("varbits") RSNodeCache getVarbitCache(); + + @Import("preferences") + @Override + RSPreferences getPreferences(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java new file mode 100644 index 0000000000..eca6b3d5bb --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018, Lotto + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.rs.api; + +import net.runelite.api.Preferences; +import net.runelite.mapping.Import; + +public interface RSPreferences extends Preferences +{ + @Import("rememberedUsername") + @Override + String getRememberedUsername(); + + @Import("rememberedUsername") + @Override + void setRememberedUsername(String username); +}