From 5e29f7f74a96450386a4df53aeb62b239517536d Mon Sep 17 00:00:00 2001 From: Colbster937 Date: Tue, 13 Jan 2026 20:32:08 -0600 Subject: [PATCH] add manual update command --- README.md | 2 +- .../originblacklist/base/OriginBlacklist.java | 174 +++++++++++------- .../base/command/CommandContext.java | 3 + .../base/command/OriginBlacklistCommand.java | 26 ++- .../base/config/OriginBlacklistConfig.java | 26 ++- .../base/enums/EnumBlacklistType.java | 4 + .../base/util/IOriginBlacklistPlugin.java | 1 + .../base/util/UpdateChecker.java | 2 +- .../bukkit/OriginBlacklistBukkit.java | 5 + .../bukkit/command/BKTCommandContext.java | 9 +- .../command/OriginBlacklistCommandBukkit.java | 7 +- .../bungee/OriginBlacklistBungee.java | 5 + .../bungee/command/BNGCommandContext.java | 9 +- .../command/OriginBlacklistCommandBungee.java | 6 +- .../velocity/OriginBlacklistVelocity.java | 13 +- .../OriginBlacklistCommandVelocity.java | 7 +- .../velocity/command/VCommandContext.java | 10 +- 17 files changed, 220 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index 626b475..57b1586 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ - [x] MiniMessage and legacy formattings supported - [x] Plugin update checker - [x] Send blacklist logs to a webhook +- [x] Reverse blacklist (whitelist) - [ ] Ingame blacklist management command - [ ] Subscribe to an auto-updating blacklist -- [ ] Reverse blacklist (whitelist)

Changes from v1

diff --git a/src/main/java/xyz/webmc/originblacklist/base/OriginBlacklist.java b/src/main/java/xyz/webmc/originblacklist/base/OriginBlacklist.java index d0aa84b..76cf575 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/OriginBlacklist.java +++ b/src/main/java/xyz/webmc/originblacklist/base/OriginBlacklist.java @@ -24,7 +24,6 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Base64; import java.util.List; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import de.marhali.json5.Json5Array; @@ -54,8 +53,8 @@ public final class OriginBlacklist { this.plugin = plugin; this.config = new OriginBlacklistConfig(plugin); plugin.scheduleRepeat(() -> { - this.checkForUpdate(); - }, 60, TimeUnit.MINUTES); + this.checkForUpdates(); + }, this.config.getInteger("update_checker.check_timer"), TimeUnit.SECONDS); } public final void init() { @@ -109,11 +108,11 @@ public final class OriginBlacklist { } public final boolean isDebugEnabled() { - return this.config.get("debug").getAsBoolean(); + return this.config.getBoolean("debug"); } public final boolean isMetricsEnabled() { - return this.config.get("bStats").getAsBoolean(); + return this.config.getBoolean("bStats"); } public final OriginBlacklistConfig getConfig() { @@ -135,57 +134,133 @@ public final class OriginBlacklist { conn.disconnect(); } + public final void checkForUpdates(Runnable action1, Runnable action2) { + if (this.config.getBoolean("update_checker.enabled")) { + this.plugin.runAsync(() -> { + this.updateURL = UpdateChecker.checkForUpdates(PLUGIN_REPO, this.plugin.getPluginVersion(), + this.config.getBoolean("update_checker.allow_snapshots")); + if (isNonNull((this.updateURL))) { + action1.run(); + return; + } + action2.run(); + }); + } else { + action2.run(); + } + } + + public final void updatePlugin(Runnable action1, Runnable action2) { + try { + final URL url = new URL(this.updateURL); + final Path jar = this.plugin.getPluginJarPath(); + final Path bak = jar.resolveSibling(jar.getFileName().toString() + ".bak"); + final Path upd = jar.resolveSibling(Paths.get(URLDecoder.decode(url.getPath(), StandardCharsets.UTF_8)).getFileName()); + + try { + Files.copy(jar, bak, StandardCopyOption.REPLACE_EXISTING); + } catch (final Throwable t) { + t.printStackTrace(); + } + + try { + final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(15000); + conn.setReadTimeout(15000); + conn.setRequestProperty("User-Agent", OriginBlacklist.getUserAgent()); + conn.connect(); + try (final InputStream in = conn.getInputStream()) { + Files.copy(in, upd, StandardCopyOption.REPLACE_EXISTING); + } finally { + conn.disconnect(); + } + Files.delete(jar); + Files.delete(bak); + action1.run(); + return; + } catch (final Throwable t) { + t.printStackTrace(); + Files.move(bak, jar, StandardCopyOption.REPLACE_EXISTING); + } + } catch (final Throwable t) { + t.printStackTrace(); + } + action2.run(); + } + + public final void updatePlugin() { + this.updatePlugin(() -> {}, () -> {}); + } + private final EnumBlacklistType testBlacklist(final OPlayer player) { final String name = player.getName(); final String addr = player.getAddr(); final String origin = player.getOrigin(); final String brand = player.getBrand(); + final boolean whitelist = this.config.getBoolean("blacklist_to_whitelist"); + EnumBlacklistType type = EnumBlacklistType.NONE; + if (isNonNull(origin)) { - for (final Json5Element element : this.config.get("blacklist.origins").getAsJson5Array()) { + if (whitelist && !type.isBlacklisted()) type = EnumBlacklistType.ORIGIN; + for (final Json5Element element : this.config.getArray("blacklist.origins").getAsJson5Array()) { if (origin.matches(element.getAsString())) { - return EnumBlacklistType.ORIGIN; + if (whitelist) type = EnumBlacklistType.NONE; + else if (!type.isBlacklisted()) type = EnumBlacklistType.ORIGIN; + break; } } + } else if (this.config.getBoolean("block_undefined_origin")) { + return whitelist ? EnumBlacklistType.NONE : EnumBlacklistType.ORIGIN; } if (isNonNull(brand)) { - for (final Json5Element element : this.config.get("blacklist.brands").getAsJson5Array()) { + if (whitelist && !type.isBlacklisted()) type = EnumBlacklistType.BRAND; + for (final Json5Element element : this.config.getArray("blacklist.brands")) { if (brand.matches(element.getAsString())) { - return EnumBlacklistType.BRAND; + if (whitelist) type = EnumBlacklistType.NONE; + else if (!type.isBlacklisted()) type = EnumBlacklistType.BRAND; + break; } } } if (isNonNull(name)) { - for (final Json5Element element : this.config.get("blacklist.player_names").getAsJson5Array()) { + if (whitelist && !type.isBlacklisted()) type = EnumBlacklistType.NAME; + for (final Json5Element element : this.config.getArray("blacklist.player_names")) { this.plugin.log(EnumLogLevel.DEBUG, element.getAsString()); if (name.matches(element.getAsString())) { - return EnumBlacklistType.NAME; + if (whitelist) type = EnumBlacklistType.NONE; + else if (!type.isBlacklisted()) type = EnumBlacklistType.NAME; + break; } } } if (isNonNull(addr)) { - for (final Json5Element element : this.config.get("blacklist.ip_addresses").getAsJson5Array()) { + if (whitelist && !type.isBlacklisted()) type = EnumBlacklistType.ADDR; + for (final Json5Element element : this.config.getArray("blacklist.ip_addresses")) { try { if ((new IPAddressString(element.getAsString()).toAddress()) .contains((new IPAddressString(addr)).toAddress())) { - return EnumBlacklistType.ADDR; + if (whitelist) type = EnumBlacklistType.NONE; + else if (!type.isBlacklisted()) type = EnumBlacklistType.ADDR; + break; } } catch (final AddressStringException exception) { - // exception.printStackTrace(); + if (this.isDebugEnabled()) exception.printStackTrace(); } } } - return EnumBlacklistType.NONE; + return type; } private final Component getBlacklistedComponent(final String type, final String id, final String blockType, final String blockTypeAlt, final String notAllowed, final String notAllowedAlt, final String blockValue, final String action) { - final Json5Array arr = this.config.get("messages." + type).getAsJson5Array(); + final Json5Array arr = this.config.getArray("messages." + type); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.size(); i++) { if (i > 0) @@ -193,7 +268,7 @@ public final class OriginBlacklist { sb.append(arr.get(i).getAsString()); } final String str = sb.toString() - .replaceAll("%action%", this.config.get("messages.actions." + action).getAsString()) + .replaceAll("%action%", this.config.getString("messages.actions." + action)) .replaceAll("%block_type%", blockType) .replaceAll("%block_type%", blockType) .replaceAll("%not_allowed%", notAllowed) @@ -203,8 +278,7 @@ public final class OriginBlacklist { } private final void sendWebhooks(final OriginBlacklistLoginEvent event, final EnumBlacklistType type) { - Json5Element element = this.config.get("discord.enabled"); - if (element.getAsBoolean()) { + if (this.config.getBoolean("discord.enabled")) { final OPlayer player = event.getPlayer(); final EnumConnectionType connType = event.getConnectionType(); final String userAgent; @@ -252,7 +326,7 @@ public final class OriginBlacklist { player.getName().replaceAll("_", "\\_"), player.getOrigin(), player.getBrand(), - this.config.get("discord.send_ips").getAsBoolean() ? player.getAddr() : "*\\*CENSORED\\**", + this.config.getBoolean("discord.send_ips") ? player.getAddr() : "*\\*CENSORED\\**", player.getPVN(), userAgent, player.isRewind() ? "YES" : "NO", @@ -261,10 +335,10 @@ public final class OriginBlacklist { PLUGIN_REPO, PLUGIN_REPO ).getBytes(); - element = this.config.get("discord.webhook_urls"); + final Json5Element element = this.config.get("discord.webhook_urls"); if (element instanceof Json5Array) { for (final Json5Element _element : element.getAsJson5Array()) { - CompletableFuture.runAsync(() -> { + this.plugin.runAsync(() -> { try { final URL url = new URL(_element.getAsString()); final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); @@ -293,56 +367,14 @@ public final class OriginBlacklist { } } - private final void checkForUpdate() { - if (this.config.get("update_checker.enabled").getAsBoolean()) { - CompletableFuture.runAsync(() -> { - this.updateURL = UpdateChecker.checkForUpdate(PLUGIN_REPO, this.plugin.getPluginVersion(), - this.config.get("update_checker.allow_snapshots").getAsBoolean()); - if (isNonNull((this.updateURL))) { - if (!this.config.get("update_checker.auto_update").getAsBoolean()) { - this.plugin.log(EnumLogLevel.INFO, "An update is available! Download it at " + this.updateURL); - } else { - this.updatePlugin(); - } - } - }); - } - } - - private final void updatePlugin() { - try { - final URL url = new URL(this.updateURL); - final Path jar = this.plugin.getPluginJarPath(); - final Path bak = jar.resolveSibling(jar.getFileName().toString() + ".bak"); - final Path upd = jar.resolveSibling(Paths.get(URLDecoder.decode(url.getPath(), StandardCharsets.UTF_8)).getFileName()); - - try { - Files.copy(jar, bak, StandardCopyOption.REPLACE_EXISTING); - } catch (final Throwable t) { - t.printStackTrace(); + private final void checkForUpdates() { + this.checkForUpdates(() -> { + if (!this.config.getBoolean("update_checker.auto_update")) { + this.plugin.log(EnumLogLevel.INFO, "An update is available! Download it at " + this.updateURL); + } else { + this.updatePlugin(); } - - try { - final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("GET"); - conn.setConnectTimeout(15000); - conn.setReadTimeout(15000); - conn.setRequestProperty("User-Agent", OriginBlacklist.getUserAgent()); - conn.connect(); - try (final InputStream in = conn.getInputStream()) { - Files.copy(in, upd, StandardCopyOption.REPLACE_EXISTING); - } finally { - conn.disconnect(); - } - Files.delete(jar); - Files.delete(bak); - } catch (final Throwable t) { - t.printStackTrace(); - Files.move(bak, jar, StandardCopyOption.REPLACE_EXISTING); - } - } catch (final Throwable t) { - t.printStackTrace(); - } + }, () -> {}); } public static final String getComponentString(final Component comp) { diff --git a/src/main/java/xyz/webmc/originblacklist/base/command/CommandContext.java b/src/main/java/xyz/webmc/originblacklist/base/command/CommandContext.java index 70a9b08..d84993f 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/command/CommandContext.java +++ b/src/main/java/xyz/webmc/originblacklist/base/command/CommandContext.java @@ -1,6 +1,9 @@ package xyz.webmc.originblacklist.base.command; +import xyz.webmc.originblacklist.base.OriginBlacklist; + public interface CommandContext { + public OriginBlacklist getPlugin(); public String getPlayerName(); public void reply(final String message); public boolean hasPermission(final String permission); diff --git a/src/main/java/xyz/webmc/originblacklist/base/command/OriginBlacklistCommand.java b/src/main/java/xyz/webmc/originblacklist/base/command/OriginBlacklistCommand.java index 7f3e91d..0eb19a8 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/command/OriginBlacklistCommand.java +++ b/src/main/java/xyz/webmc/originblacklist/base/command/OriginBlacklistCommand.java @@ -30,24 +30,41 @@ public class OriginBlacklistCommand implements ICommand { if (ctx.hasPermission("originblacklist.command.reload")) { ctx.reply("Blacklist:"); ctx.reply(" - Origins:"); - for (final Json5Element element : this.plugin.getConfig().get("blacklist.origins").getAsJson5Array()) { + for (final Json5Element element : this.plugin.getConfig().getArray("blacklist.origins")) { ctx.reply(" - " + element.getAsString() + ""); } ctx.reply(" - Brands:"); - for (final Json5Element element : this.plugin.getConfig().get("blacklist.brands").getAsJson5Array()) { + for (final Json5Element element : this.plugin.getConfig().getArray("blacklist.brands")) { ctx.reply(" - " + element.getAsString() + ""); } ctx.reply(" - Players:"); - for (final Json5Element element : this.plugin.getConfig().get("blacklist.player_names").getAsJson5Array()) { + for (final Json5Element element : this.plugin.getConfig().getArray("blacklist.player_names")) { ctx.reply(" - " + element.getAsString() + ""); } ctx.reply(" - IPs:"); - for (final Json5Element element : this.plugin.getConfig().get("blacklist.ip_addresses").getAsJson5Array()) { + for (final Json5Element element : this.plugin.getConfig().getArray("blacklist.ip_addresses")) { ctx.reply(" - " + element.getAsString() + ""); } } else { ctx.reply(NO_PERMISSION); } + } else if ("update".equals(command)) { + if (ctx.hasPermission("originblacklist.command.update")) { + ctx.reply("Checking for updates..."); + final OriginBlacklist plugin = ctx.getPlugin(); + plugin.checkForUpdates(() -> { + ctx.reply("Updating plugin..."); + plugin.updatePlugin(() -> { + ctx.reply("Successfully updated plugin."); + }, () -> { + ctx.reply("Failed to update plugin."); + }); + }, () -> { + ctx.reply("Plugin is up to date."); + }); + } else { + ctx.reply(NO_PERMISSION); + } } else { this.usage(ctx); } @@ -69,6 +86,7 @@ public class OriginBlacklistCommand implements ICommand { public void usage(CommandContext ctx) { ctx.reply("Commands:"); ctx.reply(" - /originblacklist reload"); + ctx.reply(" - /originblacklist update"); // ctx.reply(" - /originblacklist add "); // ctx.reply(" - /originblacklist remove "); ctx.reply(" - /originblacklist list"); diff --git a/src/main/java/xyz/webmc/originblacklist/base/config/OriginBlacklistConfig.java b/src/main/java/xyz/webmc/originblacklist/base/config/OriginBlacklistConfig.java index c99fe23..3ac57ec 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/config/OriginBlacklistConfig.java +++ b/src/main/java/xyz/webmc/originblacklist/base/config/OriginBlacklistConfig.java @@ -31,7 +31,7 @@ public final class OriginBlacklistConfig { private byte[] icon; private String icon64; - public OriginBlacklistConfig(IOriginBlacklistPlugin plugin) { + public OriginBlacklistConfig(final IOriginBlacklistPlugin plugin) { this.json5 = Json5.builder(builder -> builder .quoteless() .quoteSingle() @@ -155,6 +155,26 @@ public final class OriginBlacklistConfig { return element; } + public final String getString(final String key) { + return this.get(key).getAsString(); + } + + public final boolean getBoolean(final String key) { + return this.get(key).getAsBoolean(); + } + + public final int getInteger(final String key) { + return this.get(key).getAsInt(); + } + + public final Json5Array getArray(final String key) { + return this.get(key).getAsJson5Array(); + } + + public final Json5Object getObject(final String key) { + return this.get(key).getAsJson5Object(); + } + public final byte[] getIconBytes() { return this.icon; } @@ -221,9 +241,13 @@ public final class OriginBlacklistConfig { final Json5Object uobj = new Json5Object(); addJSONObj(uobj, "enabled", Json5Primitive.fromBoolean(true), null); addJSONObj(uobj, "allow_snapshots", Json5Primitive.fromBoolean(false), null); + addJSONObj(uobj, "check_timer", Json5Primitive.fromNumber(3600), null); addJSONObj(uobj, "auto_update", Json5Primitive.fromBoolean(true), null); addJSONObj(obj, "update_checker", uobj, null); + addJSONObj(obj, "blacklist_to_whitelist", Json5Primitive.fromBoolean(false), null); + addJSONObj(obj, "block_undefined_origin", Json5Primitive.fromBoolean(false), null); addJSONObj(obj, "bStats", Json5Primitive.fromBoolean(true), null); + addJSONObj(obj, "config_version", Json5Primitive.fromNumber(1), "DO NOT CHANGE"); return obj; } diff --git a/src/main/java/xyz/webmc/originblacklist/base/enums/EnumBlacklistType.java b/src/main/java/xyz/webmc/originblacklist/base/enums/EnumBlacklistType.java index 9ddbd96..7bd70ef 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/enums/EnumBlacklistType.java +++ b/src/main/java/xyz/webmc/originblacklist/base/enums/EnumBlacklistType.java @@ -36,4 +36,8 @@ public enum EnumBlacklistType { public final String getActionString() { return this.act; } + + public final boolean isBlacklisted() { + return this != NONE; + } } diff --git a/src/main/java/xyz/webmc/originblacklist/base/util/IOriginBlacklistPlugin.java b/src/main/java/xyz/webmc/originblacklist/base/util/IOriginBlacklistPlugin.java index 1c2dfde..3661c71 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/util/IOriginBlacklistPlugin.java +++ b/src/main/java/xyz/webmc/originblacklist/base/util/IOriginBlacklistPlugin.java @@ -19,5 +19,6 @@ public interface IOriginBlacklistPlugin { public void setMOTD(final Component txt, final OriginBlacklistMOTDEvent event); public String parsePlaceholders(final OPlayer player, final String str); public void scheduleRepeat(final Runnable task, final int period, final TimeUnit unit); + public void runAsync(final Runnable task); public void shutdown(); } diff --git a/src/main/java/xyz/webmc/originblacklist/base/util/UpdateChecker.java b/src/main/java/xyz/webmc/originblacklist/base/util/UpdateChecker.java index 6d317dc..9532e87 100644 --- a/src/main/java/xyz/webmc/originblacklist/base/util/UpdateChecker.java +++ b/src/main/java/xyz/webmc/originblacklist/base/util/UpdateChecker.java @@ -17,7 +17,7 @@ import org.semver4j.Semver.VersionDiff; public class UpdateChecker { private static final Json5 json5 = Json5.builder(builder -> builder.build()); - public static final String checkForUpdate(final String repo, final Semver currentVersion, final boolean allowSnapshots) { + public static final String checkForUpdates(final String repo, final Semver currentVersion, final boolean allowSnapshots) { try { final URL url = new URL("https://api.github.com/repos/" + repo + "/releases"); final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); diff --git a/src/main/java/xyz/webmc/originblacklist/bukkit/OriginBlacklistBukkit.java b/src/main/java/xyz/webmc/originblacklist/bukkit/OriginBlacklistBukkit.java index 064f6e7..7e6fb62 100644 --- a/src/main/java/xyz/webmc/originblacklist/bukkit/OriginBlacklistBukkit.java +++ b/src/main/java/xyz/webmc/originblacklist/bukkit/OriginBlacklistBukkit.java @@ -234,6 +234,11 @@ public final class OriginBlacklistBukkit extends JavaPlugin implements Listener, Bukkit.getScheduler().runTaskTimer(this, task, 0, ticks); } + @Override + public final void runAsync(final Runnable task) { + Bukkit.getScheduler().runTaskAsynchronously(this, task); + } + @Override public final void shutdown() { this.metrics.shutdown(); diff --git a/src/main/java/xyz/webmc/originblacklist/bukkit/command/BKTCommandContext.java b/src/main/java/xyz/webmc/originblacklist/bukkit/command/BKTCommandContext.java index e265898..459f35c 100644 --- a/src/main/java/xyz/webmc/originblacklist/bukkit/command/BKTCommandContext.java +++ b/src/main/java/xyz/webmc/originblacklist/bukkit/command/BKTCommandContext.java @@ -6,14 +6,21 @@ import xyz.webmc.originblacklist.base.command.CommandContext; import org.bukkit.command.CommandSender; public class BKTCommandContext implements CommandContext { + private final OriginBlacklist plugin; private final CommandSender sender; private final String[] args; - public BKTCommandContext(final CommandSender sender, final String[] args) { + public BKTCommandContext(final OriginBlacklist plugin, final CommandSender sender, final String[] args) { + this.plugin = plugin; this.sender = sender; this.args = args; } + @Override + public OriginBlacklist getPlugin() { + return this.plugin; + } + @Override public String getPlayerName() { return this.sender.getName(); diff --git a/src/main/java/xyz/webmc/originblacklist/bukkit/command/OriginBlacklistCommandBukkit.java b/src/main/java/xyz/webmc/originblacklist/bukkit/command/OriginBlacklistCommandBukkit.java index 7077c53..6e5ef07 100644 --- a/src/main/java/xyz/webmc/originblacklist/bukkit/command/OriginBlacklistCommandBukkit.java +++ b/src/main/java/xyz/webmc/originblacklist/bukkit/command/OriginBlacklistCommandBukkit.java @@ -10,17 +10,20 @@ import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; public class OriginBlacklistCommandBukkit extends OriginBlacklistCommand implements TabExecutor { + private final OriginBlacklist plugin; + public OriginBlacklistCommandBukkit(OriginBlacklist plugin) { super(plugin); + this.plugin = plugin; } @Override public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { - return super.execute(new BKTCommandContext(sender, args)); + return super.execute(new BKTCommandContext(this.plugin, sender, args)); } @Override public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) { - return super.suggest(new BKTCommandContext(sender, args)); + return super.suggest(new BKTCommandContext(this.plugin, sender, args)); } } diff --git a/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java index c10db49..0acd53c 100644 --- a/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java +++ b/src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java @@ -198,6 +198,11 @@ public final class OriginBlacklistBungee extends Plugin implements Listener, IOr this.proxy.getScheduler().schedule(this, task, 0, period, unit); } + @Override + public final void runAsync(final Runnable task) { + this.proxy.getScheduler().runAsync(this, task); + } + @Override public final void shutdown() { this.metrics.shutdown(); diff --git a/src/main/java/xyz/webmc/originblacklist/bungee/command/BNGCommandContext.java b/src/main/java/xyz/webmc/originblacklist/bungee/command/BNGCommandContext.java index 52422a3..8253ed8 100644 --- a/src/main/java/xyz/webmc/originblacklist/bungee/command/BNGCommandContext.java +++ b/src/main/java/xyz/webmc/originblacklist/bungee/command/BNGCommandContext.java @@ -7,14 +7,21 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.TextComponent; public class BNGCommandContext implements CommandContext { + private final OriginBlacklist plugin; private final CommandSender sender; private final String[] args; - public BNGCommandContext(final CommandSender sender, final String[] args) { + public BNGCommandContext(final OriginBlacklist plugin, final CommandSender sender, final String[] args) { + this.plugin = plugin; this.sender = sender; this.args = args; } + @Override + public OriginBlacklist getPlugin() { + return this.plugin; + } + @Override public String getPlayerName() { return this.sender.getName(); diff --git a/src/main/java/xyz/webmc/originblacklist/bungee/command/OriginBlacklistCommandBungee.java b/src/main/java/xyz/webmc/originblacklist/bungee/command/OriginBlacklistCommandBungee.java index 40ec09a..1cc10b0 100644 --- a/src/main/java/xyz/webmc/originblacklist/bungee/command/OriginBlacklistCommandBungee.java +++ b/src/main/java/xyz/webmc/originblacklist/bungee/command/OriginBlacklistCommandBungee.java @@ -12,19 +12,21 @@ import net.md_5.bungee.api.plugin.TabExecutor; public class OriginBlacklistCommandBungee extends Command implements TabExecutor { private final OriginBlacklistCommand cmd; + private final OriginBlacklist blacklist; public OriginBlacklistCommandBungee(final OriginBlacklistBungee plugin, final OriginBlacklist blacklist, final String command) { super(command); this.cmd = new OriginBlacklistCommand(blacklist); + this.blacklist = blacklist; } @Override public void execute(final CommandSender sender, final String[] args) { - this.cmd.execute(new BNGCommandContext(sender, args)); + this.cmd.execute(new BNGCommandContext(this.blacklist, sender, args)); } @Override public List onTabComplete(final CommandSender sender, final String[] args) { - return this.cmd.suggest(new BNGCommandContext(sender, args)); + return this.cmd.suggest(new BNGCommandContext(this.blacklist, sender, args)); } } diff --git a/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java index 0225fa6..e5dd1d7 100644 --- a/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java +++ b/src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java @@ -120,7 +120,8 @@ public final class OriginBlacklistVelocity implements IOriginBlacklistPlugin { @Subscribe(order = PostOrder.FIRST) public final void onJavaLogin(final PreLoginEvent event) { final OPlayer player = new OPlayer(null, event.getUsername(), event.getUniqueId(), - event.getConnection().getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, event.getConnection().getProtocolVersion().getProtocol()); + event.getConnection().getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, + event.getConnection().getProtocolVersion().getProtocol()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, player)); } @@ -128,7 +129,8 @@ public final class OriginBlacklistVelocity implements IOriginBlacklistPlugin { public final void onJavaHandshake(final PlayerClientBrandEvent event) { final Player aPlayer = (Player) event.getPlayer(); final OPlayer bPlayer = new OPlayer(null, aPlayer.getUsername(), aPlayer.getUniqueId(), - aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), event.getPlayer().getProtocolVersion().getProtocol()); + aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), + event.getPlayer().getProtocolVersion().getProtocol()); this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, bPlayer)); } @@ -225,6 +227,13 @@ public final class OriginBlacklistVelocity implements IOriginBlacklistPlugin { .schedule(); } + @Override + public final void runAsync(final Runnable task) { + this.proxy.getScheduler() + .buildTask(this, task) + .schedule(); + } + @Override public final void shutdown() { this.metrics.shutdown(); diff --git a/src/main/java/xyz/webmc/originblacklist/velocity/command/OriginBlacklistCommandVelocity.java b/src/main/java/xyz/webmc/originblacklist/velocity/command/OriginBlacklistCommandVelocity.java index 409bb2c..0db23c4 100644 --- a/src/main/java/xyz/webmc/originblacklist/velocity/command/OriginBlacklistCommandVelocity.java +++ b/src/main/java/xyz/webmc/originblacklist/velocity/command/OriginBlacklistCommandVelocity.java @@ -8,17 +8,20 @@ import java.util.List; import com.velocitypowered.api.command.SimpleCommand; public class OriginBlacklistCommandVelocity extends OriginBlacklistCommand implements SimpleCommand { + private final OriginBlacklist plugin; + public OriginBlacklistCommandVelocity(OriginBlacklist plugin) { super(plugin); + this.plugin = plugin; } @Override public void execute(final Invocation invocation) { - super.execute(new VCommandContext(invocation)); + super.execute(new VCommandContext(this.plugin, invocation)); } @Override public List suggest(final Invocation invocation) { - return super.suggest(new VCommandContext(invocation)); + return super.suggest(new VCommandContext(this.plugin, invocation)); } } diff --git a/src/main/java/xyz/webmc/originblacklist/velocity/command/VCommandContext.java b/src/main/java/xyz/webmc/originblacklist/velocity/command/VCommandContext.java index 6f741b3..e3c991e 100644 --- a/src/main/java/xyz/webmc/originblacklist/velocity/command/VCommandContext.java +++ b/src/main/java/xyz/webmc/originblacklist/velocity/command/VCommandContext.java @@ -1,17 +1,25 @@ package xyz.webmc.originblacklist.velocity.command; +import xyz.webmc.originblacklist.base.OriginBlacklist; import xyz.webmc.originblacklist.base.command.CommandContext; import com.velocitypowered.api.command.SimpleCommand.Invocation; import net.kyori.adventure.text.minimessage.MiniMessage; public class VCommandContext implements CommandContext { + private final OriginBlacklist plugin; private final Invocation invocation; - public VCommandContext(final Invocation invocation) { + public VCommandContext(final OriginBlacklist plugin, final Invocation invocation) { + this.plugin = plugin; this.invocation = invocation; } + @Override + public OriginBlacklist getPlugin() { + return this.plugin; + } + @Override public String getPlayerName() { return this.invocation.source().toString();