diff --git a/bukkit/build.gradle b/bukkit/build.gradle index 6d7d344..dc13854 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -11,7 +11,7 @@ dependencies { compileOnly 'dev.folia:folia-api:1.19.4-R0.1-SNAPSHOT' compileOnly 'io.netty:netty-all:4.1.25.Final' compileOnly 'fr.xephi:authme:5.6.0-beta2' - compileOnly 'com.nickuc.login:nlogin-api:10.2' + compileOnly 'com.nickuc.login:nlogin-api:10.3' compileOnly 'me.clip:placeholderapi:2.11.1' } diff --git a/bukkit/src/main/java/com/azuriom/azlink/bukkit/integrations/NLoginIntegration.java b/bukkit/src/main/java/com/azuriom/azlink/bukkit/integrations/NLoginIntegration.java index edfda6d..465306b 100644 --- a/bukkit/src/main/java/com/azuriom/azlink/bukkit/integrations/NLoginIntegration.java +++ b/bukkit/src/main/java/com/azuriom/azlink/bukkit/integrations/NLoginIntegration.java @@ -3,6 +3,7 @@ import com.azuriom.azlink.bukkit.AzLinkBukkitPlugin; import com.azuriom.azlink.common.integrations.BaseNLogin; import com.nickuc.login.api.enums.TwoFactorType; +import com.nickuc.login.api.event.bukkit.account.PasswordUpdateEvent; import com.nickuc.login.api.event.bukkit.auth.RegisterEvent; import com.nickuc.login.api.event.bukkit.twofactor.TwoFactorAddEvent; import org.bukkit.entity.Player; @@ -36,6 +37,11 @@ public void onRegister(RegisterEvent event) { handleRegister(player.getUniqueId(), player.getName(), event.getPassword(), address); } + @EventHandler + public void onPasswordUpdate(PasswordUpdateEvent event) { + handleUpdatePassword(event.getPlayerId(), event.getPlayerName(), event.getNewPassword()); + } + public static void register(AzLinkBukkitPlugin plugin) { if (ensureApiVersion(plugin)) { plugin.getServer().getPluginManager().registerEvents(new NLoginIntegration(plugin), plugin); diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index a1ca9da..249bd27 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ description: The plugin to link your Azuriom website with your server. website: https://azuriom.com main: com.azuriom.azlink.bukkit.AzLinkBukkitPlugin api-version: 1.13 -softdepend: [PlaceholderAPI, SkinsRestorer] +softdepend: [nLogin, PlaceholderAPI, SkinsRestorer] loadbefore: [AuthMe] folia-supported: true commands: diff --git a/bungee/build.gradle b/bungee/build.gradle index 44bae0d..cd2f2e8 100644 --- a/bungee/build.gradle +++ b/bungee/build.gradle @@ -6,7 +6,7 @@ repositories { dependencies { implementation project(':azlink-common') compileOnly 'net.md-5:bungeecord-api:1.16-R0.4' - compileOnly 'com.nickuc.login:nlogin-api:10.2' + compileOnly 'com.nickuc.login:nlogin-api:10.3' } processResources { diff --git a/bungee/src/main/java/com/azuriom/azlink/bungee/integrations/NLoginIntegration.java b/bungee/src/main/java/com/azuriom/azlink/bungee/integrations/NLoginIntegration.java index a9548a3..4b48a04 100644 --- a/bungee/src/main/java/com/azuriom/azlink/bungee/integrations/NLoginIntegration.java +++ b/bungee/src/main/java/com/azuriom/azlink/bungee/integrations/NLoginIntegration.java @@ -3,6 +3,7 @@ import com.azuriom.azlink.bungee.AzLinkBungeePlugin; import com.azuriom.azlink.common.integrations.BaseNLogin; import com.nickuc.login.api.enums.TwoFactorType; +import com.nickuc.login.api.event.bungee.account.PasswordUpdateEvent; import com.nickuc.login.api.event.bungee.auth.RegisterEvent; import com.nickuc.login.api.event.bungee.twofactor.TwoFactorAddEvent; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -38,6 +39,11 @@ public void onRegister(RegisterEvent event) { handleRegister(player.getUniqueId(), player.getName(), event.getPassword(), address); } + @EventHandler + public void onPasswordUpdate(PasswordUpdateEvent event) { + handleUpdatePassword(event.getPlayerId(), event.getPlayerName(), event.getNewPassword()); + } + public static void register(AzLinkBungeePlugin plugin) { if (ensureApiVersion(plugin)) { plugin.getProxy().getPluginManager().registerListener(plugin, new NLoginIntegration(plugin)); diff --git a/bungee/src/main/resources/bungee.yml b/bungee/src/main/resources/bungee.yml index 680924a..76c80f9 100644 --- a/bungee/src/main/resources/bungee.yml +++ b/bungee/src/main/resources/bungee.yml @@ -3,4 +3,4 @@ version: ${pluginVersion} author: Azuriom Team description: The plugin to link your Azuriom website with your server. main: com.azuriom.azlink.bungee.AzLinkBungeePlugin -softdepend: [SkinsRestorer] +softdepend: [nLogin, SkinsRestorer] diff --git a/common/build.gradle b/common/build.gradle index d79e81d..be33b49 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -8,7 +8,7 @@ dependencies { compileOnly 'com.google.code.gson:gson:2.10.1' compileOnly 'io.netty:netty-all:4.1.42.Final' compileOnly 'net.skinsrestorer:skinsrestorer-api:15.0.2' - compileOnly 'com.nickuc.login:nlogin-api:10.2' + compileOnly 'com.nickuc.login:nlogin-api:10.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.1' diff --git a/common/src/main/java/com/azuriom/azlink/common/integrations/BaseNLogin.java b/common/src/main/java/com/azuriom/azlink/common/integrations/BaseNLogin.java index c6eef91..e9a7534 100644 --- a/common/src/main/java/com/azuriom/azlink/common/integrations/BaseNLogin.java +++ b/common/src/main/java/com/azuriom/azlink/common/integrations/BaseNLogin.java @@ -37,6 +37,16 @@ protected void handleRegister(UUID uuid, String name, String password, InetAddre }); } + protected void handleUpdatePassword(UUID uuid, String name, String password) { + this.plugin.getHttpClient() + .updatePassword(uuid, password) + .exceptionally(ex -> { + this.plugin.getLogger().error("Unable to update password for " + name, ex); + + return null; + }); + } + protected static boolean ensureApiVersion(AzLinkPlatform platform) { if (nLoginAPI.getApi().getApiVersion() < 5) { platform.getPlugin().getLogger().warn("nLogin integration requires API v5 or higher"); diff --git a/velocity/build.gradle b/velocity/build.gradle index 546b771..b9d7188 100644 --- a/velocity/build.gradle +++ b/velocity/build.gradle @@ -13,7 +13,7 @@ dependencies { compileOnly 'com.velocitypowered:velocity-api:3.1.1' compileOnly 'net.elytrium.limboapi:api:1.1.13' compileOnly 'net.elytrium:limboauth:1.1.1' - compileOnly 'com.nickuc.login:nlogin-api:10.2' + compileOnly 'com.nickuc.login:nlogin-api:10.3' annotationProcessor 'com.velocitypowered:velocity-api:3.1.1' } diff --git a/velocity/src/main/java/com/azuriom/azlink/velocity/AzLinkVelocityPlugin.java b/velocity/src/main/java/com/azuriom/azlink/velocity/AzLinkVelocityPlugin.java index 721ad1c..dcc4c37 100644 --- a/velocity/src/main/java/com/azuriom/azlink/velocity/AzLinkVelocityPlugin.java +++ b/velocity/src/main/java/com/azuriom/azlink/velocity/AzLinkVelocityPlugin.java @@ -39,6 +39,7 @@ authors = "Azuriom Team", dependencies = { @Dependency(id = "limboauth", optional = true), + @Dependency(id = "nlogin", optional = true), @Dependency(id = "skinsrestorer", optional = true), } ) diff --git a/velocity/src/main/java/com/azuriom/azlink/velocity/integrations/NLoginIntegration.java b/velocity/src/main/java/com/azuriom/azlink/velocity/integrations/NLoginIntegration.java index 9ee60d8..8b12feb 100644 --- a/velocity/src/main/java/com/azuriom/azlink/velocity/integrations/NLoginIntegration.java +++ b/velocity/src/main/java/com/azuriom/azlink/velocity/integrations/NLoginIntegration.java @@ -4,6 +4,7 @@ import com.azuriom.azlink.velocity.AzLinkVelocityPlugin; import com.nickuc.login.api.enums.TwoFactorType; import com.nickuc.login.api.event.velocity.twofactor.TwoFactorAddEvent; +import com.nickuc.login.api.event.velocity.account.PasswordUpdateEvent; import com.nickuc.login.api.event.velocity.auth.RegisterEvent; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.proxy.Player; @@ -33,6 +34,11 @@ public void onRegister(RegisterEvent event) { handleRegister(player.getUniqueId(), player.getUsername(), event.getPassword(), address); } + @Subscribe + public void onPasswordUpdate(PasswordUpdateEvent event) { + handleUpdatePassword(event.getPlayerId(), event.getPlayerName(), event.getNewPassword()); + } + public static void register(AzLinkVelocityPlugin plugin) { if (ensureApiVersion(plugin)) { plugin.getProxy().getEventManager().register(plugin, new NLoginIntegration(plugin));