From b45c544f5d2846578617074152416dbff30c629a Mon Sep 17 00:00:00 2001 From: xxneox <29680081+xxneox@users.noreply.github.com> Date: Wed, 18 Aug 2021 16:47:52 +0200 Subject: [PATCH] Fix data directory, handle PreLogin async on Velocity --- VERSION.txt | 2 +- build.gradle | 5 ++--- .../java/me/xneox/epicguard/core/EpicGuard.java | 13 +++++-------- .../main/java/me/xneox/epicguard/core/Platform.java | 8 ++++---- .../xneox/epicguard/core/handler/JoinHandler.java | 2 +- .../me/xneox/epicguard/core/manager/GeoManager.java | 5 ++++- .../me/xneox/epicguard/core/proxy/ProxyManager.java | 7 +++---- .../epicguard/core/storage/StorageManager.java | 4 ++-- .../me/xneox/epicguard/core/task/MonitorTask.java | 2 +- .../me/xneox/epicguard/core/util/FileUtils.java | 2 -- .../me/xneox/epicguard/paper/EpicGuardPaper.java | 11 ++++++----- .../xneox/epicguard/velocity/EpicGuardVelocity.java | 10 ++++++---- .../velocity/listener/PreLoginListener.java | 7 ++++--- .../epicguard/waterfall/EpicGuardWaterfall.java | 10 +++++----- 14 files changed, 44 insertions(+), 44 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index f4965a31..41225218 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -6.0.0 \ No newline at end of file +7.0.0 \ No newline at end of file diff --git a/build.gradle b/build.gradle index baa9bf8f..3c199929 100644 --- a/build.gradle +++ b/build.gradle @@ -5,12 +5,11 @@ plugins { allprojects { group = "me.xneox" - version = "6.0.0" + version = "7.0.0" } subprojects { - // IF I TOUCH THIS THEN BUILD FAILS. WHAT THE FUCK - // PLEASE SOMEONE JUST REWRITE THIS FOR ME I WASTED TOO MUCH TIME ON THIS + // TODO: REWRITE EVERYTHING HERE sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 diff --git a/core/src/main/java/me/xneox/epicguard/core/EpicGuard.java b/core/src/main/java/me/xneox/epicguard/core/EpicGuard.java index e7bda744..b3517977 100644 --- a/core/src/main/java/me/xneox/epicguard/core/EpicGuard.java +++ b/core/src/main/java/me/xneox/epicguard/core/EpicGuard.java @@ -61,11 +61,11 @@ private void startup() { this.loadConfigurations(); logger().info("Initializing managers..."); + this.geoManager = new GeoManager(this); this.storageManager = new StorageManager(this); + this.proxyManager = new ProxyManager(this); this.attackManager = new AttackManager(); this.userManager = new UserManager(); - this.proxyManager = new ProxyManager(this); - this.geoManager = new GeoManager(this); this.commandHandler = new CommandHandler(this); @@ -75,14 +75,11 @@ private void startup() { logger().info("Scheduling tasks..."); this.platform.scheduleRepeatingTask(new MonitorTask(this), 1L); this.platform.scheduleRepeatingTask(new UpdateCheckerTask(this), 1800L); - this.platform.scheduleRepeatingTask( - new AttackResetTask(this), this.config.misc().attackResetInterval()); - this.platform.scheduleRepeatingTask( - new DataSaveTask(this), TimeUnit.MINUTES.toSeconds(this.config.misc().autoSaveInterval())); + this.platform.scheduleRepeatingTask(new AttackResetTask(this), this.config.misc().attackResetInterval()); + this.platform.scheduleRepeatingTask(new DataSaveTask(this), TimeUnit.MINUTES.toSeconds(this.config.misc().autoSaveInterval())); EpicGuardAPI.INSTANCE.setInstance(this); - logger() - .info("Startup completed successfully. Welcome to EpicGuard v" + this.platform.version()); + logger().info("Startup completed successfully. Welcome to EpicGuard v" + this.platform.version()); } public void loadConfigurations() { diff --git a/core/src/main/java/me/xneox/epicguard/core/Platform.java b/core/src/main/java/me/xneox/epicguard/core/Platform.java index 406fe39c..ab8b12d4 100644 --- a/core/src/main/java/me/xneox/epicguard/core/Platform.java +++ b/core/src/main/java/me/xneox/epicguard/core/Platform.java @@ -15,7 +15,7 @@ package me.xneox.epicguard.core; -import me.xneox.epicguard.core.user.OnlineUser; +import java.util.UUID; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import org.jetbrains.annotations.NotNull; @@ -30,15 +30,15 @@ public interface Platform { /** Returns an audience for the provided user. */ @Nullable - Audience audience(@NotNull OnlineUser user); + Audience audience(@NotNull UUID uuid); /** * Kicks the user from the server with a specified message (find the player using User#getUUID). * - * @param onlineUser The user to be kicked. + * @param uuid The UUID of user to be kicked. * @param message The kick message. */ - void disconnectUser(@NotNull OnlineUser onlineUser, @NotNull Component message); + void disconnectUser(@NotNull UUID uuid, @NotNull Component message); /** * Schedules a task to be run asynchronously after the specified time (in seconds). diff --git a/core/src/main/java/me/xneox/epicguard/core/handler/JoinHandler.java b/core/src/main/java/me/xneox/epicguard/core/handler/JoinHandler.java index e4ff0bf3..1057ccf0 100644 --- a/core/src/main/java/me/xneox/epicguard/core/handler/JoinHandler.java +++ b/core/src/main/java/me/xneox/epicguard/core/handler/JoinHandler.java @@ -60,7 +60,7 @@ public void handle(@NotNull UUID uuid, @NotNull String address) { if (this.epicGuard.config().settingsCheck().enabled()) { this.epicGuard.platform().runTaskLater(() -> { if (user != null && !user.settingsChanged()) { - this.epicGuard.platform().disconnectUser(user, MessageUtils.multilineComponent(this.epicGuard.messages().disconnect().settingsPacket())); + this.epicGuard.platform().disconnectUser(uuid, MessageUtils.multilineComponent(this.epicGuard.messages().disconnect().settingsPacket())); } }, this.epicGuard.config().settingsCheck().delay()); } diff --git a/core/src/main/java/me/xneox/epicguard/core/manager/GeoManager.java b/core/src/main/java/me/xneox/epicguard/core/manager/GeoManager.java index abbe0f4b..1a0b456a 100644 --- a/core/src/main/java/me/xneox/epicguard/core/manager/GeoManager.java +++ b/core/src/main/java/me/xneox/epicguard/core/manager/GeoManager.java @@ -49,7 +49,10 @@ public GeoManager(EpicGuard epicGuard) { this.epicGuard = epicGuard; epicGuard.logger().info("This product includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com"); - String parent = FileUtils.EPICGUARD_DIR + "/data"; + File parent = new File(FileUtils.EPICGUARD_DIR, "/data"); + //noinspection ResultOfMethodCallIgnored + parent.mkdirs(); + File countryDatabase = new File(parent, "GeoLite2-Country.mmdb"); File cityDatabase = new File(parent, "GeoLite2-City.mmdb"); File countryArchive = new File(parent, "GeoLite2-Country.tar.gz"); diff --git a/core/src/main/java/me/xneox/epicguard/core/proxy/ProxyManager.java b/core/src/main/java/me/xneox/epicguard/core/proxy/ProxyManager.java index e1765c51..0b90c3d5 100644 --- a/core/src/main/java/me/xneox/epicguard/core/proxy/ProxyManager.java +++ b/core/src/main/java/me/xneox/epicguard/core/proxy/ProxyManager.java @@ -29,10 +29,9 @@ public class ProxyManager { public ProxyManager(EpicGuard epicGuard) { this.epicGuard = epicGuard; - this.resultCache = - CacheBuilder.newBuilder() - .expireAfterWrite(epicGuard.config().proxyCheck().cacheDuration(), TimeUnit.SECONDS) - .build(); + this.resultCache = CacheBuilder.newBuilder() + .expireAfterWrite(epicGuard.config().proxyCheck().cacheDuration(), TimeUnit.SECONDS) + .build(); } /** diff --git a/core/src/main/java/me/xneox/epicguard/core/storage/StorageManager.java b/core/src/main/java/me/xneox/epicguard/core/storage/StorageManager.java index dede455e..3420c1ae 100644 --- a/core/src/main/java/me/xneox/epicguard/core/storage/StorageManager.java +++ b/core/src/main/java/me/xneox/epicguard/core/storage/StorageManager.java @@ -101,7 +101,8 @@ public void updateAccounts(@NotNull ConnectingUser user) { * *

Returned list is immutable, used only for statistics and command suggestions. */ - public List viewAddresses(Predicate predicate) { + @NotNull + public List viewAddresses(@NotNull Predicate predicate) { return this.addresses.entrySet().stream() .filter(entry -> predicate.test(entry.getValue())) .map(Map.Entry::getKey) @@ -116,7 +117,6 @@ public SQLDatabase database() { return this.database; } - @NotNull public Collection pingCache() { return this.pingCache; } diff --git a/core/src/main/java/me/xneox/epicguard/core/task/MonitorTask.java b/core/src/main/java/me/xneox/epicguard/core/task/MonitorTask.java index babb0a95..5677e414 100644 --- a/core/src/main/java/me/xneox/epicguard/core/task/MonitorTask.java +++ b/core/src/main/java/me/xneox/epicguard/core/task/MonitorTask.java @@ -39,7 +39,7 @@ public void run() { for (OnlineUser user : this.epicGuard.userManager().users()) { if (user.notifications()) { - Audience audience = this.epicGuard.platform().audience(user); + Audience audience = this.epicGuard.platform().audience(user.uuid()); if (audience != null) { audience.sendActionBar(monitor); } diff --git a/core/src/main/java/me/xneox/epicguard/core/util/FileUtils.java b/core/src/main/java/me/xneox/epicguard/core/util/FileUtils.java index ef749c20..b0b69afa 100644 --- a/core/src/main/java/me/xneox/epicguard/core/util/FileUtils.java +++ b/core/src/main/java/me/xneox/epicguard/core/util/FileUtils.java @@ -28,8 +28,6 @@ public final class FileUtils { public static final String EPICGUARD_DIR = "plugins/EpicGuard"; - private FileUtils() {} - @SuppressWarnings("ResultOfMethodCallIgnored") public static void downloadFile(@NotNull String urlFrom, @NotNull File file) throws IOException { Validate.notNull(urlFrom, "Download URL cannot be null!"); diff --git a/paper/src/main/java/me/xneox/epicguard/paper/EpicGuardPaper.java b/paper/src/main/java/me/xneox/epicguard/paper/EpicGuardPaper.java index 27a6ae31..57f43963 100644 --- a/paper/src/main/java/me/xneox/epicguard/paper/EpicGuardPaper.java +++ b/paper/src/main/java/me/xneox/epicguard/paper/EpicGuardPaper.java @@ -15,9 +15,9 @@ package me.xneox.epicguard.paper; +import java.util.UUID; import me.xneox.epicguard.core.EpicGuard; import me.xneox.epicguard.core.Platform; -import me.xneox.epicguard.core.user.OnlineUser; import me.xneox.epicguard.paper.listener.PlayerJoinListener; import me.xneox.epicguard.paper.listener.PlayerPreLoginListener; import me.xneox.epicguard.paper.listener.PlayerQuitListener; @@ -76,13 +76,14 @@ public String version() { } @Override - public @Nullable Audience audience(OnlineUser user) { - return Bukkit.getPlayer(user.uuid()); + @Nullable + public Audience audience(@NotNull UUID uuid) { + return Bukkit.getPlayer(uuid); } @Override - public void disconnectUser(@NotNull OnlineUser onlineUser, @NotNull Component message) { - Player player = Bukkit.getPlayer(onlineUser.uuid()); + public void disconnectUser(@NotNull UUID uuid, @NotNull Component message) { + Player player = Bukkit.getPlayer(uuid); if (player != null) { player.kick(message); } diff --git a/velocity/src/main/java/me/xneox/epicguard/velocity/EpicGuardVelocity.java b/velocity/src/main/java/me/xneox/epicguard/velocity/EpicGuardVelocity.java index a0e05fb1..dceb387c 100644 --- a/velocity/src/main/java/me/xneox/epicguard/velocity/EpicGuardVelocity.java +++ b/velocity/src/main/java/me/xneox/epicguard/velocity/EpicGuardVelocity.java @@ -24,6 +24,7 @@ import com.velocitypowered.api.event.proxy.ProxyShutdownEvent; import com.velocitypowered.api.plugin.Plugin; import com.velocitypowered.api.proxy.ProxyServer; +import java.util.UUID; import java.util.concurrent.TimeUnit; import me.xneox.epicguard.core.EpicGuard; import me.xneox.epicguard.core.Platform; @@ -96,13 +97,14 @@ public String version() { } @Override - public @Nullable Audience audience(@NotNull OnlineUser user) { - return this.server.getPlayer(user.uuid()).orElse(null); + @Nullable + public Audience audience(@NotNull UUID uuid) { + return this.server.getPlayer(uuid).orElse(null); } @Override - public void disconnectUser(@NotNull OnlineUser onlineUser, @NotNull Component message) { - this.server.getPlayer(onlineUser.uuid()).ifPresent(player -> player.disconnect(message)); + public void disconnectUser(@NotNull UUID uuid, @NotNull Component message) { + this.server.getPlayer(uuid).ifPresent(player -> player.disconnect(message)); } @Override diff --git a/velocity/src/main/java/me/xneox/epicguard/velocity/listener/PreLoginListener.java b/velocity/src/main/java/me/xneox/epicguard/velocity/listener/PreLoginListener.java index 8c6e2292..ab0a0a7f 100644 --- a/velocity/src/main/java/me/xneox/epicguard/velocity/listener/PreLoginListener.java +++ b/velocity/src/main/java/me/xneox/epicguard/velocity/listener/PreLoginListener.java @@ -15,6 +15,7 @@ package me.xneox.epicguard.velocity.listener; +import com.velocitypowered.api.event.EventTask; import com.velocitypowered.api.event.PostOrder; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.PreLoginEvent; @@ -27,11 +28,11 @@ public PreLoginListener(EpicGuard epicGuard) { } @Subscribe(order = PostOrder.FIRST) - public void onPreLogin(PreLoginEvent event) { + public EventTask onPreLogin(PreLoginEvent event) { String address = event.getConnection().getRemoteAddress().getAddress().getHostAddress(); String nickname = event.getUsername(); - this.handle(address, nickname).ifPresent(result -> - event.setResult(PreLoginEvent.PreLoginComponentResult.denied(result))); + return EventTask.async(() -> + this.handle(address, nickname).ifPresent(result -> event.setResult(PreLoginEvent.PreLoginComponentResult.denied(result)))); } } diff --git a/waterfall/src/main/java/me/xneox/epicguard/waterfall/EpicGuardWaterfall.java b/waterfall/src/main/java/me/xneox/epicguard/waterfall/EpicGuardWaterfall.java index 6a54ef6e..0522f479 100644 --- a/waterfall/src/main/java/me/xneox/epicguard/waterfall/EpicGuardWaterfall.java +++ b/waterfall/src/main/java/me/xneox/epicguard/waterfall/EpicGuardWaterfall.java @@ -15,6 +15,7 @@ package me.xneox.epicguard.waterfall; +import java.util.UUID; import java.util.concurrent.TimeUnit; import me.xneox.epicguard.waterfall.listener.DisconnectListener; import me.xneox.epicguard.waterfall.listener.PlayerSettingsListener; @@ -23,7 +24,6 @@ import me.xneox.epicguard.waterfall.listener.ServerPingListener; import me.xneox.epicguard.core.EpicGuard; import me.xneox.epicguard.core.Platform; -import me.xneox.epicguard.core.user.OnlineUser; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.platform.bungeecord.BungeeAudiences; import net.kyori.adventure.text.Component; @@ -76,8 +76,8 @@ public String version() { @Override @Nullable - public Audience audience(@NotNull OnlineUser user) { - ProxiedPlayer player = ProxyServer.getInstance().getPlayer(user.uuid()); + public Audience audience(@NotNull UUID uuid) { + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); if (player != null) { return this.adventure.player(player); } @@ -85,9 +85,9 @@ public Audience audience(@NotNull OnlineUser user) { } @Override - public void disconnectUser(@NotNull OnlineUser onlineUser, @NotNull Component component) { + public void disconnectUser(@NotNull UUID uuid, @NotNull Component component) { ProxyServer.getInstance() - .getPlayer(onlineUser.uuid()) + .getPlayer(uuid) .disconnect(BungeeUtils.toLegacyComponent(component)); }