diff --git a/API/src/main/java/me/egg82/antivpn/api/model/player/PlayerManager.java b/API/src/main/java/me/egg82/antivpn/api/model/player/PlayerManager.java index f5cab223..fe567c41 100644 --- a/API/src/main/java/me/egg82/antivpn/api/model/player/PlayerManager.java +++ b/API/src/main/java/me/egg82/antivpn/api/model/player/PlayerManager.java @@ -357,7 +357,7 @@ default Component getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUI * * @throws NullPointerException if playerName, playerUuid, or ip is null */ - @Nullable + @NotNull Component getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip); /** diff --git a/Bungee/pom.xml b/Bungee/pom.xml index a529787e..f51330d9 100644 --- a/Bungee/pom.xml +++ b/Bungee/pom.xml @@ -227,11 +227,10 @@ papermc-snpashots https://papermc.io/repo/repository/maven-snapshots/ - - + egg82-nexus https://nexus.egg82.me/repository/maven-releases/ @@ -245,14 +244,14 @@ https://repo.aikar.co/content/groups/aikar/ + + sonatype-oss-snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + github-rjenkinsjr https://raw.github.com/rjenkinsjr/maven2/repo - - plan - https://dl.bintray.com/rsl1122/Plan-repository - CodeMC https://repo.codemc.org/repository/maven-public @@ -289,9 +288,9 @@ ${cloud.version} - net.kyori + me.lucko adventure-platform-bungeecord - ${adventure.version} + ${adventure.bungeecord.version} ninja.egg82 @@ -322,10 +321,9 @@ ${bstats.version} - com.djrapitops - Plan-api + com.github.plan-player-analytics + Plan ${plan.version} - provided net.luckperms @@ -347,7 +345,7 @@ net.kyori adventure-text-minimessage - ${adventure.version} + ${minimessage.version} net.oneandone.reflections8 diff --git a/Bungee/src/main/java/me/egg82/antivpn/AntiVPN.java b/Bungee/src/main/java/me/egg82/antivpn/AntiVPN.java index 840a7add..32126cba 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/AntiVPN.java +++ b/Bungee/src/main/java/me/egg82/antivpn/AntiVPN.java @@ -41,7 +41,6 @@ import me.egg82.antivpn.messaging.handler.MessagingHandlerImpl; import me.egg82.antivpn.services.GameAnalyticsErrorHandler; import me.egg82.antivpn.storage.StorageService; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; import net.engio.mbassy.bus.MBassador; import net.md_5.bungee.api.ChatColor; @@ -159,7 +158,7 @@ public void onDisable() { try { VPNAPIProvider.getInstance().runUpdateTask().join(); } catch (CancellationException | CompletionException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } for (EventHolder eventHolder : eventHolders) { @@ -356,7 +355,7 @@ private void loadTasks() { try { VPNAPIProvider.getInstance().runUpdateTask().join(); } catch (CancellationException | CompletionException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } }, 1L, 1L, TimeUnit.SECONDS).getId()); } diff --git a/Bungee/src/main/java/me/egg82/antivpn/api/model/player/BungeePlayerManager.java b/Bungee/src/main/java/me/egg82/antivpn/api/model/player/BungeePlayerManager.java index 09fa34d9..a6d6acc6 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/api/model/player/BungeePlayerManager.java +++ b/Bungee/src/main/java/me/egg82/antivpn/api/model/player/BungeePlayerManager.java @@ -15,7 +15,6 @@ import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.UUID; @@ -90,7 +89,7 @@ public boolean kickForMcLeaks(@NotNull String playerName, @NotNull UUID playerUu } @Override - public @Nullable String getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { + public @NotNull String getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); if (!cachedConfig.getMCLeaksKickMessage().isEmpty()) { diff --git a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java index 9e4a080f..1e57d2aa 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java +++ b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java @@ -6,7 +6,6 @@ import me.egg82.antivpn.api.model.ip.IPManager; import me.egg82.antivpn.api.model.player.PlayerManager; import me.egg82.antivpn.locale.MessageKey; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; import org.jetbrains.annotations.NotNull; @@ -35,7 +34,7 @@ private void checkIp(@NotNull String ip) { if (ipManager.getCurrentAlgorithmMethod() == AlgorithmMethod.CONSESNSUS) { ipManager.consensus(ip, true).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } @@ -44,7 +43,7 @@ private void checkIp(@NotNull String ip) { } else { ipManager.cascade(ip, true).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } @@ -60,7 +59,7 @@ private void checkPlayer(@NotNull String playerName) { .thenComposeAsync(uuid -> playerManager.checkMcLeaks(uuid, true)) .whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } diff --git a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java index 55bce17d..53d85458 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java +++ b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java @@ -9,7 +9,6 @@ import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.locale.MessageKey; import me.egg82.antivpn.utils.DNSUtil; -import me.egg82.antivpn.utils.ExceptionUtil; import org.jetbrains.annotations.NotNull; import java.text.DecimalFormat; @@ -103,7 +102,7 @@ private void test(@NotNull Source source, @NotNull String error += 1; continue; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); if (!(ex.getCause() instanceof APIException) || !((APIException) ex.getCause()).isHard()) { error += 1; } diff --git a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java index c365bb59..9836e40f 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java +++ b/Bungee/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java @@ -8,7 +8,6 @@ import me.egg82.antivpn.config.CachedConfig; import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.locale.MessageKey; -import me.egg82.antivpn.utils.ExceptionUtil; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -43,7 +42,7 @@ public void run() { futures.add(source.getResult(ip).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); latch.countDown(); return; } diff --git a/Bungee/src/main/java/me/egg82/antivpn/events/PlayerEvents.java b/Bungee/src/main/java/me/egg82/antivpn/events/PlayerEvents.java index 2b44f941..134ee5b6 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/events/PlayerEvents.java +++ b/Bungee/src/main/java/me/egg82/antivpn/events/PlayerEvents.java @@ -13,7 +13,6 @@ import me.egg82.antivpn.hooks.LuckPermsHook; import me.egg82.antivpn.services.lookup.PlayerInfo; import me.egg82.antivpn.services.lookup.PlayerLookup; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.TextComponent; @@ -88,7 +87,7 @@ private void checkPerms(@NotNull PreLoginEvent event) { Thread.currentThread().interrupt(); uuid = null; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); uuid = null; } @@ -102,7 +101,7 @@ private void checkPerms(@NotNull PreLoginEvent event) { Thread.currentThread().interrupt(); val = null; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); val = null; } checkPermsPlayer(event, uuid, Boolean.TRUE.equals(val)); @@ -213,7 +212,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -221,7 +220,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } } @@ -234,7 +233,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } } @@ -321,7 +320,7 @@ private boolean isVpn(@NotNull String ip, @NotNull String name, @NotNull CachedC Thread.currentThread().interrupt(); isVPN = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isVPN = false; } } else { @@ -331,7 +330,7 @@ private boolean isVpn(@NotNull String ip, @NotNull String name, @NotNull CachedC Thread.currentThread().interrupt(); isVPN = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isVPN = false; } } @@ -366,7 +365,7 @@ private boolean isMcLeaks(@NotNull String name, @NotNull UUID uuid, @NotNull Cac Thread.currentThread().interrupt(); isMCLeaks = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isMCLeaks = false; } diff --git a/Bungee/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java b/Bungee/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java index 5b0ff645..8a35e5da 100644 --- a/Bungee/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java +++ b/Bungee/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java @@ -15,7 +15,6 @@ import me.egg82.antivpn.api.model.ip.IPManager; import me.egg82.antivpn.api.model.player.PlayerManager; import me.egg82.antivpn.config.ConfigUtil; -import me.egg82.antivpn.utils.ExceptionUtil; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import org.jetbrains.annotations.NotNull; @@ -109,7 +108,7 @@ public long getVpns() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -119,7 +118,7 @@ public long getVpns() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } latch.countDown(); @@ -169,7 +168,7 @@ public long getMcLeaks() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } latch.countDown(); }); @@ -219,7 +218,7 @@ public boolean getUsingVpn(@NotNull UUID playerID) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -227,7 +226,7 @@ public boolean getUsingVpn(@NotNull UUID playerID) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } @@ -249,7 +248,7 @@ public boolean getMcLeaks(@NotNull UUID playerId) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } return false; diff --git a/Common/pom.xml b/Common/pom.xml index 2f29b21d..b7e568a7 100644 --- a/Common/pom.xml +++ b/Common/pom.xml @@ -92,6 +92,10 @@ sponge https://repo.spongepowered.org/repository/maven-public/ + + wesjd-repo + https://nexus.wesjd.net/repository/thirdparty/ + @@ -205,6 +209,12 @@ provided + + me.gong + mcleaks-api + 1.9.5-SNAPSHOT + + org.jetbrains diff --git a/Common/src/main/java/me/egg82/antivpn/api/VPNAPIImpl.java b/Common/src/main/java/me/egg82/antivpn/api/VPNAPIImpl.java index 1df46bcf..4d451606 100644 --- a/Common/src/main/java/me/egg82/antivpn/api/VPNAPIImpl.java +++ b/Common/src/main/java/me/egg82/antivpn/api/VPNAPIImpl.java @@ -5,9 +5,9 @@ import me.egg82.antivpn.api.model.player.AbstractPlayerManager; import me.egg82.antivpn.api.model.source.SourceManagerImpl; import me.egg82.antivpn.api.platform.Platform; +import me.egg82.antivpn.api.platform.PluginMetadata; import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.utils.PacketUtil; -import me.egg82.antivpn.api.platform.AbstractPluginMetadata; import net.kyori.event.EventBus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,7 +17,7 @@ public class VPNAPIImpl implements VPNAPI { private final @NotNull Platform platform; - private final @NotNull AbstractPluginMetadata pluginMetadata; + private final @NotNull PluginMetadata pluginMetadata; private final @NotNull AbstractIPManager ipManager; private final @NotNull AbstractPlayerManager playerManager; @@ -30,7 +30,7 @@ public class VPNAPIImpl implements VPNAPI { public VPNAPIImpl( @NotNull Platform platform, - @NotNull AbstractPluginMetadata pluginMetadata, + @NotNull PluginMetadata pluginMetadata, @NotNull AbstractIPManager ipManager, @NotNull AbstractPlayerManager playerManager, @NotNull SourceManagerImpl sourceManager, @@ -69,7 +69,7 @@ public VPNAPIImpl( @Override @NotNull - public AbstractPluginMetadata getPluginMetadata() { return pluginMetadata; } + public PluginMetadata getPluginMetadata() { return pluginMetadata; } @Override @NotNull diff --git a/Paper/pom.xml b/Paper/pom.xml index 413893e3..93bcba80 100644 --- a/Paper/pom.xml +++ b/Paper/pom.xml @@ -253,7 +253,7 @@ ${commodore.version} - net.kyori + me.lucko adventure-platform-bukkit ${adventure.bukkit.version} diff --git a/Paper/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java b/Paper/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java index a06cc49a..5dec61b4 100644 --- a/Paper/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java +++ b/Paper/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java @@ -10,7 +10,6 @@ import me.egg82.antivpn.storage.StorageService; import me.egg82.antivpn.storage.models.PlayerModel; import me.egg82.antivpn.utils.TimeUtil; -import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.craftbukkit.BukkitComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; @@ -87,7 +86,7 @@ public boolean kickForMcLeaks(@NotNull String playerName, @NotNull UUID playerUu } @Override - public @Nullable Component getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { + public @NotNull String getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); if (!cachedConfig.getMCLeaksKickMessage().isEmpty()) { diff --git a/Paper/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java b/Paper/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java index dcb513d7..e5229c5e 100644 --- a/Paper/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java +++ b/Paper/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java @@ -116,7 +116,7 @@ private void test(@NotNull Source source, @NotNull String error += 1; continue; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); if (!(ex.getCause() instanceof APIException) || !((APIException) ex.getCause()).isHard()) { error += 1; } diff --git a/Paper/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java b/Paper/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java index 29235905..ad062141 100644 --- a/Paper/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java +++ b/Paper/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java @@ -45,7 +45,7 @@ public void run() { futures.add(source.getResult(ip).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); latch.countDown(); return; } diff --git a/Spigot/pom.xml b/Spigot/pom.xml index 6860dba4..1b55d10f 100644 --- a/Spigot/pom.xml +++ b/Spigot/pom.xml @@ -258,10 +258,6 @@ github-rjenkinsjr https://raw.github.com/rjenkinsjr/maven2/repo - - plan - https://dl.bintray.com/rsl1122/Plan-repository - CodeMC https://repo.codemc.org/repository/maven-public @@ -301,7 +297,7 @@ ${commodore.version} - net.kyori + me.lucko adventure-platform-bukkit ${adventure.bukkit.version} @@ -334,10 +330,9 @@ ${bstats.version} - com.djrapitops - Plan-api + com.github.plan-player-analytics + Plan ${plan.version} - provided me.clip diff --git a/Spigot/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java b/Spigot/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java index 961bffa7..f3fbad54 100644 --- a/Spigot/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java +++ b/Spigot/src/main/java/me/egg82/antivpn/api/model/player/BukkitPlayerManager.java @@ -9,7 +9,6 @@ import me.egg82.antivpn.storage.StorageService; import me.egg82.antivpn.storage.models.PlayerModel; import me.egg82.antivpn.utils.TimeUtil; -import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.craftbukkit.BukkitComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; @@ -81,7 +80,7 @@ public boolean kickForMcLeaks(@NotNull String playerName, @NotNull UUID playerUu } @Override - public @Nullable Component getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { + public @NotNull String getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); if (!cachedConfig.getMCLeaksKickMessage().isEmpty()) { diff --git a/Spigot/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java b/Spigot/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java index 9fcd7472..3268e9bb 100644 --- a/Spigot/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java +++ b/Spigot/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java @@ -116,7 +116,7 @@ private void test(@NotNull Source source, @NotNull String error += 1; continue; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); if (!(ex.getCause() instanceof APIException) || !((APIException) ex.getCause()).isHard()) { error += 1; } diff --git a/Spigot/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java b/Spigot/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java index 5b3e0502..19480e1e 100644 --- a/Spigot/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java +++ b/Spigot/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java @@ -45,7 +45,7 @@ public void run() { futures.add(source.getResult(ip).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); latch.countDown(); return; } diff --git a/Velocity/pom.xml b/Velocity/pom.xml index 04a9b44e..00668beb 100644 --- a/Velocity/pom.xml +++ b/Velocity/pom.xml @@ -246,15 +246,14 @@ github-rjenkinsjr https://raw.github.com/rjenkinsjr/maven2/repo - - plan - https://dl.bintray.com/rsl1122/Plan-repository - CodeMC https://repo.codemc.org/repository/maven-public - + + wesjd-repo + https://nexus.wesjd.net/repository/thirdparty/ + jitpack.io https://jitpack.io @@ -296,6 +295,11 @@ dep-downloader ${depdownloader.version} + + ninja.egg82 + service-locator + ${servicelocator.version} + me.lucko jar-relocator @@ -303,10 +307,9 @@ - com.djrapitops - Plan-api + com.github.plan-player-analytics + Plan ${plan.version} - provided net.luckperms @@ -325,10 +328,15 @@ + + co.aikar + acf-velocity + 0.5.0-SNAPSHOT + net.kyori adventure-text-minimessage - ${adventure.version} + ${minimessage.version} net.oneandone.reflections8 @@ -463,7 +471,16 @@ mbassador ${mbassador.version} - + + me.gong + mcleaks-api + 1.9.5-SNAPSHOT + + + javax.inject + javax.inject + 1 + org.junit.jupiter diff --git a/Velocity/src/main/java/me/egg82/antivpn/AntiVPN.java b/Velocity/src/main/java/me/egg82/antivpn/AntiVPN.java index 4fbddcec..5a09f306 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/AntiVPN.java +++ b/Velocity/src/main/java/me/egg82/antivpn/AntiVPN.java @@ -1,6 +1,7 @@ package me.egg82.antivpn; import co.aikar.commands.*; +import co.aikar.locales.MessageKeyProvider; import com.google.common.collect.ImmutableList; import com.google.common.collect.SetMultimap; import com.velocitypowered.api.event.PostOrder; @@ -13,6 +14,7 @@ import me.egg82.antivpn.api.VPNAPI; import me.egg82.antivpn.api.VPNAPIImpl; import me.egg82.antivpn.api.VPNAPIProvider; +import me.egg82.antivpn.api.event.VPNEvent; import me.egg82.antivpn.api.event.api.APIDisableEventImpl; import me.egg82.antivpn.api.event.api.APILoadedEventImpl; import me.egg82.antivpn.api.model.ip.VelocityIPManager; @@ -33,20 +35,19 @@ import me.egg82.antivpn.hooks.LuckPermsHook; import me.egg82.antivpn.hooks.PlayerAnalyticsHook; import me.egg82.antivpn.hooks.PluginHook; -import me.egg82.antivpn.locale.LanguageFileUtil; -import me.egg82.antivpn.locale.MessageKey; -import me.egg82.antivpn.locale.PluginMessageFormatter; +import me.egg82.antivpn.locale.*; import me.egg82.antivpn.messaging.MessagingService; import me.egg82.antivpn.messaging.ServerIDUtil; import me.egg82.antivpn.messaging.handler.MessagingHandler; import me.egg82.antivpn.messaging.handler.MessagingHandlerImpl; -import me.egg82.antivpn.services.GameAnalyticsErrorHandler; import me.egg82.antivpn.storage.StorageService; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; import net.engio.mbassy.bus.MBassador; -import net.kyori.text.format.TextColor; -import ninja.egg82.events.PriorityEventSubscriber; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.event.SimpleEventBus; +import ninja.egg82.events.VelocityEventSubscriber; import ninja.egg82.service.ServiceLocator; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -70,14 +71,14 @@ public class AntiVPN { private VelocityCommandManager commandManager; private final List eventHolders = new ArrayList<>(); - private final List> events = new ArrayList<>(); + private final List> events = new ArrayList<>(); private final List tasks = new ArrayList<>(); private final Object plugin; private final ProxyServer proxy; private final PluginDescription description; - private CommandIssuer consoleCommandIssuer = null; + private LocalizedCommandSender consoleCommandIssuer = null; public AntiVPN(@NotNull Object plugin, @NotNull ProxyServer proxy, @NotNull PluginDescription description) { this.plugin = plugin; @@ -90,17 +91,25 @@ public void onLoad() { } public void onEnable() { - GameAnalyticsErrorHandler.open(ServerIDUtil.getId(new File( - new File(description.getSource().get().getParent().toFile(), description.getName().get()), - "stats-id.txt" - )), description.getVersion().get(), proxy.getVersion().getVersion()); commandManager = new VelocityCommandManager(proxy, plugin); commandManager.enableUnstableAPI("help"); setChatColors(); - consoleCommandIssuer = commandManager.getCommandIssuer(proxy.getConsoleCommandSource()); + // TODO fix + VelocityCommandIssuer console = commandManager.getCommandIssuer(proxy.getConsoleCommandSource()); + consoleCommandIssuer = new AbstractLocalizedCommandSender(console, console.getIssuer(), LocaleUtil.getConsoleI18N()) { + @Override + public boolean isConsole() { + return true; + } + + @Override + public boolean isUser() { + return false; + } + }; loadServices(); loadLanguages(); @@ -114,8 +123,8 @@ public void onEnable() { numEvents += eventHolder.numEvents(); } - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__ENABLED); - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__LOAD, + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__ENABLE_MESSAGE); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__LOAD_MESSAGE, "{version}", description.getVersion().get(), "{apiversion}", VPNAPIProvider.getInstance().getPluginMetadata().getApiVersion(), "{commands}", String.valueOf(commandManager.getRegisteredRootCommands().size()), @@ -135,14 +144,14 @@ public void onDisable() { try { VPNAPIProvider.getInstance().runUpdateTask().join(); } catch (CancellationException | CompletionException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } for (EventHolder eventHolder : eventHolders) { eventHolder.cancel(); } eventHolders.clear(); - for (PriorityEventSubscriber event : events) { + for (VelocityEventSubscriber event : events) { event.cancel(); } events.clear(); @@ -150,9 +159,8 @@ public void onDisable() { unloadHooks(); unloadServices(); - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__DISABLED); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__DISABLE_MESSAGE); - GameAnalyticsErrorHandler.close(); } private void loadLanguages() { @@ -162,13 +170,13 @@ private void loadLanguages() { try { for (Locale locale : Locale.getAvailableLocales()) { - Optional localeFile = LanguageFileUtil.getLanguage( + ResourceBundle localeFile = LanguageFileUtil.getLanguage( new File(description.getSource().get().getParent().toFile(), description.getName().get()), locale ); - if (localeFile.isPresent()) { + if (localeFile != null) { commandManager.addSupportedLanguage(locale); - loadYamlLanguageFile(locales, localeFile.get(), locale); + //loadYamlLanguageFile(locales, localeFile.get(), locale); } } } catch (IOException ex) { @@ -179,25 +187,23 @@ private void loadLanguages() { locales.setDefaultLocale(cachedConfig.getLanguage()); commandManager.usePerIssuerLocale(true); - commandManager.setFormat(MessageType.ERROR, new PluginMessageFormatter(commandManager, MessageKey.GENERAL__HEADER)); - commandManager.setFormat(MessageType.INFO, new PluginMessageFormatter(commandManager, MessageKey.GENERAL__HEADER)); setChatColors(); } private void setChatColors() { - commandManager.setFormat(MessageType.ERROR, TextColor.DARK_RED, TextColor.YELLOW, TextColor.AQUA, TextColor.WHITE); - commandManager.setFormat( + //commandManager.setFormat(MessageType.ERROR, NamedTextColor.DARK_RED, NamedTextColor.YELLOW, NamedTextColor.AQUA, NamedTextColor.WHITE); + /*commandManager.setFormat( MessageType.INFO, - TextColor.WHITE, - TextColor.YELLOW, - TextColor.AQUA, - TextColor.GREEN, - TextColor.RED, - TextColor.GOLD, - TextColor.BLUE, - TextColor.GRAY, - TextColor.DARK_RED - ); + NamedTextColor.WHITE, + NamedTextColor.YELLOW, + NamedTextColor.AQUA, + NamedTextColor.GREEN, + NamedTextColor.RED, + NamedTextColor.GOLD, + NamedTextColor.BLUE, + NamedTextColor.GRAY, + NamedTextColor.DARK_RED + );*/ } private void loadServices() { @@ -215,23 +221,21 @@ private void loadServices() { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); - VelocityIPManager ipManager = new VelocityIPManager(proxy, sourceManager, cachedConfig.getCacheTime().getTime(), cachedConfig.getCacheTime().getUnit()); + VelocityIPManager ipManager = new VelocityIPManager(proxy, sourceManager, cachedConfig.getCacheTime(), cachedConfig.getCacheTime().getUnit()); VelocityPlayerManager playerManager = new VelocityPlayerManager( proxy, cachedConfig.getThreads(), cachedConfig.getMcLeaksKey(), - cachedConfig.getCacheTime().getTime(), + cachedConfig.getCacheTime(), cachedConfig.getCacheTime().getUnit() ); Platform platform = new VelocityPlatform(System.currentTimeMillis()); - PluginMetadata metadata = new VelocityPluginMetadata(proxy.getVersion().getVersion()); - VPNAPI api = new VPNAPIImpl(platform, metadata, ipManager, playerManager, sourceManager, cachedConfig, new MBassador<>(new GenericPublicationErrorHandler())); - - APIUtil.setManagers(ipManager, playerManager, sourceManager); + VelocityPluginMetadata metadata = new VelocityPluginMetadata(proxy.getVersion().getVersion()); + VPNAPI api = new VPNAPIImpl(platform, metadata, ipManager, playerManager, sourceManager, new SimpleEventBus<>(VPNEvent.class)); APIRegistrationUtil.register(api); - api.getEventBus().post(new APILoadedEventImpl(api)).now(); + api.getEventBus().post(new APILoadedEventImpl(api)); } private void loadCommands() { @@ -242,8 +246,8 @@ private void loadCommands() { }); commandManager.getCommandConditions().addCondition(String.class, "source", (c, exec, value) -> { - List> sources = VPNAPIProvider.getInstance().getSourceManager().getSources(); - for (Source source : sources) { + List> sources = VPNAPIProvider.getInstance().getSourceManager().getSources(); + for (Source source : sources) { if (source.getName().equalsIgnoreCase(value)) { return; } @@ -254,7 +258,7 @@ private void loadCommands() { commandManager.getCommandCompletions().registerCompletion("source", c -> { String lower = c.getInput().toLowerCase().replace(" ", "_"); - List> sources = VPNAPIProvider.getInstance().getSourceManager().getSources(); + List> sources = VPNAPIProvider.getInstance().getSourceManager().getSources(); Set retVal = new LinkedHashSet<>(); for (Source source : sources) { @@ -337,7 +341,7 @@ private void loadTasks() { try { VPNAPIProvider.getInstance().runUpdateTask().join(); } catch (CancellationException | CompletionException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } }).delay(1L, TimeUnit.SECONDS).repeat(1L, TimeUnit.SECONDS).schedule()); } @@ -346,20 +350,20 @@ private void loadHooks() { PluginManager manager = proxy.getPluginManager(); if (manager.getPlugin("plan").isPresent()) { - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__HOOK_ENABLE, "{plugin}", "Plan"); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__ENABLE_HOOK, "{plugin}", "Plan"); ServiceLocator.register(new PlayerAnalyticsHook(proxy)); } else { - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__HOOK_DISABLE, "{plugin}", "Plan"); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__NO_HOOK, "{plugin}", "Plan"); } if (manager.getPlugin("luckperms").isPresent()) { - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__HOOK_ENABLE, "{plugin}", "LuckPerms"); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__ENABLE_HOOK, "{plugin}", "LuckPerms"); if (ConfigUtil.getDebugOrFalse()) { consoleCommandIssuer.sendMessage("Running actions on pre-login."); } ServiceLocator.register(new LuckPermsHook(consoleCommandIssuer)); } else { - consoleCommandIssuer.sendInfo(MessageKey.GENERAL__HOOK_DISABLE, "{plugin}", "LuckPerms"); + consoleCommandIssuer.sendMessage(MessageKey.GENERAL__NO_HOOK, "{plugin}", "LuckPerms"); if (ConfigUtil.getDebugOrFalse()) { consoleCommandIssuer.sendMessage("Running actions on post-login."); } @@ -387,8 +391,8 @@ private void unloadHooks() { public void unloadServices() { VPNAPI api = VPNAPIProvider.getInstance(); - api.getEventBus().post(new APIDisableEventImpl(api)).now(); - api.getEventBus().shutdown(); + api.getEventBus().post(new APIDisableEventImpl(api)); + api.getEventBus().unregisterAll(); APIRegistrationUtil.deregister(); CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); @@ -400,9 +404,6 @@ public void unloadServices() { } Set messagingHandlers = ServiceLocator.remove(MessagingHandler.class); - for (MessagingHandler handler : messagingHandlers) { - handler.cancel(); - } } public boolean loadYamlLanguageFile(@NotNull VelocityLocales locales, @NotNull File file, @NotNull Locale locale) throws IOException { @@ -416,7 +417,9 @@ private boolean loadLanguage(@NotNull VelocityLocales locales, @NotNull Commente for (Map.Entry kvp2 : kvp.getValue().childrenMap().entrySet()) { String value = kvp2.getValue().getString(); if (value != null && !value.isEmpty()) { - locales.addMessage(locale, MessageKey.of(kvp.getKey() + "." + kvp2.getKey()), value); + Map m = new HashMap<>(); + m.put(kvp.getKey() + "." + kvp2.getKey(), value); + locales.addMessageStrings(locale, m); loaded = true; } } diff --git a/Velocity/src/main/java/me/egg82/antivpn/api/model/ip/VelocityIPManager.java b/Velocity/src/main/java/me/egg82/antivpn/api/model/ip/VelocityIPManager.java index 61022d63..fa278fd3 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/api/model/ip/VelocityIPManager.java +++ b/Velocity/src/main/java/me/egg82/antivpn/api/model/ip/VelocityIPManager.java @@ -6,7 +6,9 @@ import me.egg82.antivpn.api.model.source.SourceManager; import me.egg82.antivpn.config.CachedConfig; import me.egg82.antivpn.config.ConfigUtil; +import me.egg82.antivpn.utils.TimeUtil; import me.egg82.antivpn.utils.VelocityTailorUtil; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,8 +21,8 @@ public class VelocityIPManager extends AbstractIPManager { private final ProxyServer proxy; - public VelocityIPManager(@NotNull ProxyServer proxy, @NotNull SourceManager sourceManager, long cacheTime, TimeUnit cacheTimeUnit) { - super(sourceManager, cacheTime, cacheTimeUnit); + public VelocityIPManager(@NotNull ProxyServer proxy, @NotNull SourceManager sourceManager, TimeUtil.Time cacheTime, TimeUnit cacheTimeUnit) { + super(sourceManager, cacheTime); this.proxy = proxy; } @@ -39,18 +41,17 @@ public boolean kickForVpn(@NotNull String playerName, @NotNull UUID playerUuid, } if (!cachedConfig.getVPNKickMessage().isEmpty()) { p.get() - .disconnect(LegacyComponentSerializer.legacyAmpersand() - .deserialize(VelocityTailorUtil.tailorKickMessage(cachedConfig.getVPNKickMessage(), playerName, playerUuid, ip))); + .disconnect(VelocityTailorUtil.tailorKickMessage(Component.text(cachedConfig.getVPNKickMessage()), playerName, playerUuid, ip)); } return true; } @Override - public @Nullable String getVpnKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { + public @Nullable Component getVpnKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); if (!cachedConfig.getVPNKickMessage().isEmpty()) { - return VelocityTailorUtil.tailorKickMessage(cachedConfig.getVPNKickMessage(), playerName, playerUuid, ip); + return VelocityTailorUtil.tailorKickMessage(Component.text(cachedConfig.getVPNKickMessage()), playerName, playerUuid, ip); } return null; } diff --git a/Velocity/src/main/java/me/egg82/antivpn/api/model/player/VelocityPlayerManager.java b/Velocity/src/main/java/me/egg82/antivpn/api/model/player/VelocityPlayerManager.java index ce28ff3b..fd9b2f0e 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/api/model/player/VelocityPlayerManager.java +++ b/Velocity/src/main/java/me/egg82/antivpn/api/model/player/VelocityPlayerManager.java @@ -10,11 +10,12 @@ import me.egg82.antivpn.storage.StorageService; import me.egg82.antivpn.storage.models.PlayerModel; import me.egg82.antivpn.utils.PacketUtil; +import me.egg82.antivpn.utils.TimeUtil; import me.egg82.antivpn.utils.VelocityTailorUtil; import me.gong.mcleaks.MCLeaksAPI; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Optional; @@ -26,8 +27,8 @@ public class VelocityPlayerManager extends AbstractPlayerManager { private final ProxyServer proxy; private final MCLeaksAPI api; - public VelocityPlayerManager(@NotNull ProxyServer proxy, int webThreads, String mcleaksKey, long cacheTime, TimeUnit cacheTimeUnit) { - super(cacheTime, cacheTimeUnit); + public VelocityPlayerManager(@NotNull ProxyServer proxy, int webThreads, String mcleaksKey, TimeUtil.Time cacheTime, TimeUnit cacheTimeUnit) { + super(cacheTime, mcleaksKey); this.proxy = proxy; api = MCLeaksAPI.builder() @@ -87,18 +88,17 @@ public boolean kickForMcLeaks(@NotNull String playerName, @NotNull UUID playerUu } if (!cachedConfig.getMCLeaksKickMessage().isEmpty()) { p.get() - .disconnect(LegacyComponentSerializer.legacyAmpersand() - .deserialize(VelocityTailorUtil.tailorKickMessage(cachedConfig.getMCLeaksKickMessage(), playerName, playerUuid, ip))); + .disconnect(VelocityTailorUtil.tailorKickMessage(Component.text(cachedConfig.getVPNKickMessage()), playerName, playerUuid, ip)); } return true; } @Override - public @Nullable String getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { + public @NotNull Component getMcLeaksKickMessage(@NotNull String playerName, @NotNull UUID playerUuid, @NotNull String ip) { CachedConfig cachedConfig = ConfigUtil.getCachedConfig(); if (!cachedConfig.getMCLeaksKickMessage().isEmpty()) { - return VelocityTailorUtil.tailorKickMessage(cachedConfig.getMCLeaksKickMessage(), playerName, playerUuid, ip); + return VelocityTailorUtil.tailorKickMessage(Component.text(cachedConfig.getVPNKickMessage()), playerName, playerUuid, ip); } return null; } diff --git a/Velocity/src/main/java/me/egg82/antivpn/api/platform/AbstractPluginMetadata.java b/Velocity/src/main/java/me/egg82/antivpn/api/platform/AbstractPluginMetadata.java new file mode 100644 index 00000000..84920c44 --- /dev/null +++ b/Velocity/src/main/java/me/egg82/antivpn/api/platform/AbstractPluginMetadata.java @@ -0,0 +1,10 @@ +package me.egg82.antivpn.api.platform; + +import org.jetbrains.annotations.NotNull; + +public abstract class AbstractPluginMetadata implements PluginMetadata { + private static final String API_VERSION = "${api.version}"; + + @Override + public @NotNull String getApiVersion() { return API_VERSION; } +} \ No newline at end of file diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/AntiVPNCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/AntiVPNCommand.java index 58038658..065f6359 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/AntiVPNCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/AntiVPNCommand.java @@ -24,6 +24,7 @@ public AntiVPNCommand(@NotNull ProxyServer proxy, @NotNull PluginDescription des this.console = console; } +/* @Subcommand("reload") @CommandPermission("avpn.admin") @Description("{@@description.reload}") @@ -80,6 +81,7 @@ public void onScore(@NotNull LocalizedCommandSender issuer, @NotNull @Conditions public void onCheck(@NotNull LocalizedCommandSender issuer, @NotNull String type) { new CheckCommand(proxy, issuer, type).run(); } +*/ @CatchUnknown @Default diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/AbstractCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/AbstractCommand.java index 15f2d516..07532b78 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/AbstractCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/AbstractCommand.java @@ -2,6 +2,7 @@ import co.aikar.commands.CommandIssuer; import com.velocitypowered.api.proxy.ProxyServer; +import me.egg82.antivpn.locale.LocalizedCommandSender; import me.egg82.antivpn.services.lookup.PlayerInfo; import me.egg82.antivpn.services.lookup.PlayerLookup; import org.jetbrains.annotations.NotNull; @@ -15,9 +16,9 @@ public abstract class AbstractCommand implements Runnable { protected final Logger logger = LoggerFactory.getLogger(getClass()); protected final ProxyServer proxy; - protected final CommandIssuer issuer; + protected final LocalizedCommandSender issuer; - protected AbstractCommand(@NotNull ProxyServer proxy, @NotNull CommandIssuer issuer) { + protected AbstractCommand(@NotNull ProxyServer proxy, @NotNull LocalizedCommandSender issuer) { this.proxy = proxy; this.issuer = issuer; } diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java index 5ee5ef6b..4ae7c3c1 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/CheckCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -6,15 +7,15 @@ import me.egg82.antivpn.api.model.ip.AlgorithmMethod; import me.egg82.antivpn.api.model.ip.IPManager; import me.egg82.antivpn.api.model.player.PlayerManager; +import me.egg82.antivpn.locale.LocalizedCommandSender; import me.egg82.antivpn.locale.MessageKey; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; import org.jetbrains.annotations.NotNull; public class CheckCommand extends AbstractCommand { private final String type; - public CheckCommand(@NotNull ProxyServer proxy, @NotNull CommandIssuer issuer, @NotNull String type) { + public CheckCommand(@NotNull ProxyServer proxy, @NotNull LocalizedCommandSender issuer, @NotNull String type) { super(proxy, issuer); this.type = type; } @@ -36,7 +37,7 @@ private void checkIp(@NotNull String ip) { if (ipManager.getCurrentAlgorithmMethod() == AlgorithmMethod.CONSESNSUS) { ipManager.consensus(ip, true).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } @@ -45,7 +46,7 @@ private void checkIp(@NotNull String ip) { } else { ipManager.cascade(ip, true).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } @@ -61,7 +62,7 @@ private void checkPlayer(@NotNull String playerName) { .thenComposeAsync(uuid -> playerManager.checkMcLeaks(uuid, true)) .whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); issuer.sendError(MessageKey.ERROR__INTERNAL); return; } @@ -69,3 +70,4 @@ private void checkPlayer(@NotNull String playerName) { }); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ImportCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ImportCommand.java index 6d2f283b..1ae3e46d 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ImportCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ImportCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -92,3 +93,4 @@ public void run() { issuer.sendInfo(MessageKey.IMPORT__END); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/KickCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/KickCommand.java index ccdd29a1..7e3f4f37 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/KickCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/KickCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -93,3 +94,4 @@ public void run() { return host.getHostAddress(); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ReloadCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ReloadCommand.java index f6b79dd4..96ec11d8 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ReloadCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ReloadCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -75,3 +76,4 @@ public void run() { issuer.sendInfo(MessageKey.RELOAD__END); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java index b65afaad..735cc459 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/ScoreCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -10,7 +11,6 @@ import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.locale.MessageKey; import me.egg82.antivpn.utils.DNSUtil; -import me.egg82.antivpn.utils.ExceptionUtil; import org.jetbrains.annotations.NotNull; import java.text.DecimalFormat; @@ -104,7 +104,7 @@ private void test(@NotNull Source source, @NotNull String error += 1; continue; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); if (!(ex.getCause() instanceof APIException) || !((APIException) ex.getCause()).isHard()) { error += 1; } @@ -122,3 +122,4 @@ private void test(@NotNull Source source, @NotNull String issuer.sendInfo(MessageKey.SCORE__SCORE, "{source}", source.getName(), "{type}", vpnName, "{percent}", format.format((good / ips.size()) * 100.0d)); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java index 67c64247..a98c0064 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java +++ b/Velocity/src/main/java/me/egg82/antivpn/commands/internal/TestCommand.java @@ -1,3 +1,4 @@ +/* package me.egg82.antivpn.commands.internal; import co.aikar.commands.CommandIssuer; @@ -9,7 +10,6 @@ import me.egg82.antivpn.config.CachedConfig; import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.locale.MessageKey; -import me.egg82.antivpn.utils.ExceptionUtil; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -44,7 +44,7 @@ public void run() { futures.add(source.getResult(ip).whenCompleteAsync((val, ex) -> { if (ex != null) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); latch.countDown(); return; } @@ -84,3 +84,4 @@ public void run() { issuer.sendInfo(MessageKey.TEST__END, "{ip}", ip); } } +*/ diff --git a/Velocity/src/main/java/me/egg82/antivpn/events/EventHolder.java b/Velocity/src/main/java/me/egg82/antivpn/events/EventHolder.java index 0d16eff1..e51d5ea3 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/events/EventHolder.java +++ b/Velocity/src/main/java/me/egg82/antivpn/events/EventHolder.java @@ -1,7 +1,9 @@ package me.egg82.antivpn.events; import com.velocitypowered.api.event.PostOrder; +import com.velocitypowered.api.event.connection.PreLoginEvent; import ninja.egg82.events.PriorityEventSubscriber; +import ninja.egg82.events.VelocityEventSubscriber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,12 +13,12 @@ public abstract class EventHolder { protected final Logger logger = LoggerFactory.getLogger(getClass()); - protected final List> events = new ArrayList<>(); + protected final List> events = new ArrayList<>(); public final int numEvents() { return events.size(); } public final void cancel() { - for (PriorityEventSubscriber event : events) { + for (VelocityEventSubscriber event : events) { event.cancel(); } } diff --git a/Velocity/src/main/java/me/egg82/antivpn/events/PlayerEvents.java b/Velocity/src/main/java/me/egg82/antivpn/events/PlayerEvents.java index aa394caf..6b5af7f2 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/events/PlayerEvents.java +++ b/Velocity/src/main/java/me/egg82/antivpn/events/PlayerEvents.java @@ -15,10 +15,11 @@ import me.egg82.antivpn.config.CachedConfig; import me.egg82.antivpn.config.ConfigUtil; import me.egg82.antivpn.hooks.LuckPermsHook; +import me.egg82.antivpn.locale.LocalizedCommandSender; import me.egg82.antivpn.services.lookup.PlayerInfo; import me.egg82.antivpn.services.lookup.PlayerLookup; -import me.egg82.antivpn.utils.ExceptionUtil; import me.egg82.antivpn.utils.ValidationUtil; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import ninja.egg82.events.VelocityEvents; import ninja.egg82.service.ServiceLocator; @@ -38,9 +39,9 @@ public class PlayerEvents extends EventHolder { private final ProxyServer proxy; - private final CommandIssuer console; + private final LocalizedCommandSender console; - public PlayerEvents(@NotNull Object plugin, @NotNull ProxyServer proxy, @NotNull CommandIssuer console) { + public PlayerEvents(@NotNull Object plugin, @NotNull ProxyServer proxy, @NotNull LocalizedCommandSender console) { this.proxy = proxy; this.console = console; @@ -83,7 +84,7 @@ private void checkPerms(@NotNull PreLoginEvent event) { Thread.currentThread().interrupt(); uuid = null; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); uuid = null; } @@ -97,7 +98,7 @@ private void checkPerms(@NotNull PreLoginEvent event) { Thread.currentThread().interrupt(); val = null; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); val = null; } checkPermsPlayer(event, uuid, Boolean.TRUE.equals(val)); @@ -151,12 +152,12 @@ private void checkPermsPlayer(@NotNull PreLoginEvent event, @NotNull UUID uuid, try { proxy.getCommandManager().executeImmediatelyAsync(proxy.getConsoleCommandSource(), command).join(); } catch (CancellationException | CompletionException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } - String kickMessage = ipManager.getVpnKickMessage(event.getUsername(), uuid, ip); + Component kickMessage = ipManager.getVpnKickMessage(event.getUsername(), uuid, ip); if (kickMessage != null) { - event.setResult(PreLoginEvent.PreLoginComponentResult.denied(LegacyComponentSerializer.legacyAmpersand().deserialize(kickMessage))); + event.setResult(PreLoginEvent.PreLoginComponentResult.denied(kickMessage)); } } @@ -167,9 +168,9 @@ private void checkPermsPlayer(@NotNull PreLoginEvent event, @NotNull UUID uuid, for (String command : commands) { proxy.getCommandManager().executeImmediatelyAsync(proxy.getConsoleCommandSource(), command); } - String kickMessage = playerManager.getMcLeaksKickMessage(event.getUsername(), uuid, ip); + Component kickMessage = playerManager.getMcLeaksKickMessage(event.getUsername(), uuid, ip); if (kickMessage != null) { - event.setResult(PreLoginEvent.PreLoginComponentResult.denied(LegacyComponentSerializer.legacyAmpersand().deserialize(kickMessage))); + event.setResult(PreLoginEvent.PreLoginComponentResult.denied(kickMessage)); } } } @@ -209,7 +210,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -217,7 +218,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } } @@ -230,7 +231,7 @@ private void cacheData(@NotNull String ip, @NotNull UUID uuid, @NotNull CachedCo } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } } @@ -284,9 +285,9 @@ private void checkPlayer(@NotNull PostLoginEvent event) { for (String command : commands) { proxy.getCommandManager().executeImmediatelyAsync(proxy.getConsoleCommandSource(), command); } - String kickMessage = ipManager.getVpnKickMessage(event.getPlayer().getUsername(), event.getPlayer().getUniqueId(), ip); + Component kickMessage = ipManager.getVpnKickMessage(event.getPlayer().getUsername(), event.getPlayer().getUniqueId(), ip); if (kickMessage != null) { - event.getPlayer().disconnect(LegacyComponentSerializer.legacyAmpersand().deserialize(kickMessage)); + event.getPlayer().disconnect(kickMessage); } } @@ -297,9 +298,9 @@ private void checkPlayer(@NotNull PostLoginEvent event) { for (String command : commands) { proxy.getCommandManager().executeImmediatelyAsync(proxy.getConsoleCommandSource(), command); } - String kickMessage = playerManager.getMcLeaksKickMessage(event.getPlayer().getUsername(), event.getPlayer().getUniqueId(), ip); + Component kickMessage = playerManager.getMcLeaksKickMessage(event.getPlayer().getUsername(), event.getPlayer().getUniqueId(), ip); if (kickMessage != null) { - event.getPlayer().disconnect(LegacyComponentSerializer.legacyAmpersand().deserialize(kickMessage)); + event.getPlayer().disconnect(kickMessage); } } } @@ -317,7 +318,7 @@ private boolean isVpn(@NotNull String ip, @NotNull String name, @NotNull CachedC Thread.currentThread().interrupt(); isVPN = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isVPN = false; } } else { @@ -327,7 +328,7 @@ private boolean isVpn(@NotNull String ip, @NotNull String name, @NotNull CachedC Thread.currentThread().interrupt(); isVPN = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isVPN = false; } } @@ -362,7 +363,7 @@ private boolean isMcLeaks(@NotNull String name, @NotNull UUID uuid, @NotNull Cac Thread.currentThread().interrupt(); isMCLeaks = false; } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); isMCLeaks = false; } diff --git a/Velocity/src/main/java/me/egg82/antivpn/hooks/LuckPermsHook.java b/Velocity/src/main/java/me/egg82/antivpn/hooks/LuckPermsHook.java index 856cc5df..5c4df8ad 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/hooks/LuckPermsHook.java +++ b/Velocity/src/main/java/me/egg82/antivpn/hooks/LuckPermsHook.java @@ -2,6 +2,7 @@ import co.aikar.commands.CommandIssuer; import me.egg82.antivpn.config.ConfigUtil; +import me.egg82.antivpn.locale.LocalizedCommandSender; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.context.ContextManager; import net.luckperms.api.context.ImmutableContextSet; @@ -13,9 +14,9 @@ import java.util.concurrent.CompletableFuture; public class LuckPermsHook implements PluginHook { - private final CommandIssuer console; + private final LocalizedCommandSender console; - public LuckPermsHook(@NotNull CommandIssuer console) { + public LuckPermsHook(@NotNull LocalizedCommandSender console) { this.console = console; } diff --git a/Velocity/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java b/Velocity/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java index c40e044f..ec503ce8 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java +++ b/Velocity/src/main/java/me/egg82/antivpn/hooks/PlayerAnalyticsHook.java @@ -17,7 +17,6 @@ import me.egg82.antivpn.api.model.ip.IPManager; import me.egg82.antivpn.api.model.player.PlayerManager; import me.egg82.antivpn.config.ConfigUtil; -import me.egg82.antivpn.utils.ExceptionUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -113,7 +112,7 @@ public long getVpns() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -123,7 +122,7 @@ public long getVpns() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } latch.countDown(); @@ -173,7 +172,7 @@ public long getMcLeaks() { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } latch.countDown(); }); @@ -223,7 +222,7 @@ public boolean getUsingVpn(@NotNull UUID playerID) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } else { try { @@ -231,7 +230,7 @@ public boolean getUsingVpn(@NotNull UUID playerID) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } } @@ -253,7 +252,7 @@ public boolean getMcLeaks(@NotNull UUID playerId) { } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } catch (ExecutionException | CancellationException ex) { - ExceptionUtil.handleException(ex, logger); + logger.error(ex.getClass().getName() + ": " + ex.getMessage(), ex); } return false; diff --git a/Velocity/src/main/java/me/egg82/antivpn/utils/VelocityTailorUtil.java b/Velocity/src/main/java/me/egg82/antivpn/utils/VelocityTailorUtil.java index ddaf86d5..6c026a94 100644 --- a/Velocity/src/main/java/me/egg82/antivpn/utils/VelocityTailorUtil.java +++ b/Velocity/src/main/java/me/egg82/antivpn/utils/VelocityTailorUtil.java @@ -1,5 +1,8 @@ package me.egg82.antivpn.utils; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.TextReplacementConfig; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,8 +31,14 @@ private VelocityTailorUtil() { } return retVal; } - public static @NotNull String tailorKickMessage(@NotNull String message, @NotNull String name, @NotNull UUID uuid, @NotNull String ip) { - message = message.replace("%player%", name).replace("%uuid%", uuid.toString()).replace("%ip%", ip); - return message.replace("\\r", "").replace("\r", "").replace("\\n", "\n"); + public static @NotNull Component tailorKickMessage(@NotNull Component message, @NotNull String name, @NotNull UUID uuid, @NotNull String ip) { + message = message.asComponent() + .replaceText(TextReplacementConfig.builder().match("%player%").replacement(name).build()) + .replaceText(TextReplacementConfig.builder().match("%uuid%").replacement(uuid.toString()).build()) + .replaceText(TextReplacementConfig.builder().match("%ip%").replacement(ip).build()) + .replaceText(TextReplacementConfig.builder().match("\\r").replacement("").build()) + .replaceText(TextReplacementConfig.builder().match("\r").replacement("").build()) + .replaceText(TextReplacementConfig.builder().match("\\n").replacement("\n").build()); + return message; } } diff --git a/pom.xml b/pom.xml index 3826f1b0..cacf707b 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 1.16.5-R0.1-SNAPSHOT 1.16.5-R0.1-SNAPSHOT 1.16-R0.4-SNAPSHOT - 1.1.4 + 3.0.0 2.2.1 0.31.0 @@ -28,7 +28,7 @@ 12.7.2 4.0.3 3.3 - 3.0.0 + 4.0.0-SNAPSHOT 3.5.1 5.11.0 2.8.0 @@ -41,12 +41,15 @@ 4.1.50.Final 20.1.0 5.8.0-M1 + 1.3.1 1.5.0 1.10 - 4.7.0 - 4.0.0-SNAPSHOT - 4.1.0-SNAPSHOT + 4.8.1 + 4.8.1 + 4.8.1 + 4.2.0-SNAPSHOT 2.1.0 3.1.2 1.2.1 @@ -54,6 +57,9 @@ 1.4 0.11.7 3.27.0-GA + 2.2.16 + 1.0.2 + 0.5.1-SNAPSHOT 5.4.1330 2.10.9 @@ -187,8 +193,8 @@ API Common Paper - - + Spigot + Bungee + Velocity