diff --git a/build-number.txt b/build-number.txt index 3c719f27..c5a7f682 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -2096 \ No newline at end of file +2098 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/evalFunctions/GetLatestChatMessageFunction.java b/src/main/java/me/chayapak1/chomens_bot/evalFunctions/GetLatestChatMessageFunction.java index 37feecaa..b2ad5a46 100644 --- a/src/main/java/me/chayapak1/chomens_bot/evalFunctions/GetLatestChatMessageFunction.java +++ b/src/main/java/me/chayapak1/chomens_bot/evalFunctions/GetLatestChatMessageFunction.java @@ -6,24 +6,20 @@ import me.chayapak1.chomens_bot.plugins.ChatPlugin; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -public class GetLatestChatMessageFunction extends EvalFunction { +public class GetLatestChatMessageFunction extends EvalFunction implements ChatPlugin.Listener { private String latestMessage = ""; public GetLatestChatMessageFunction (Bot bot) { super("getLatestChatMessage", bot); - bot.chat.addListener(new ChatPlugin.Listener() { - @Override - public boolean systemMessageReceived(Component component, String string, String ansi) { - messageReceived(component); - - return true; - } - }); + bot.chat.addListener(this); } - private void messageReceived (Component component) { + @Override + public boolean systemMessageReceived (Component component, String string, String ansi) { latestMessage = GsonComponentSerializer.gson().serialize(component); + + return true; } @Override diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java index 7da6d000..2a56a51c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java @@ -22,7 +22,7 @@ import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; import java.util.concurrent.TimeUnit; -public class AuthPlugin extends PlayersPlugin.Listener { +public class AuthPlugin implements PlayersPlugin.Listener, ChatPlugin.Listener { private static final String ID = "chomens_bot_verify"; private static PrivateKey PRIVATE_KEY; @@ -106,13 +106,7 @@ public class AuthPlugin extends PlayersPlugin.Listener { } }); - bot.chat.addListener(new ChatPlugin.Listener() { - @Override - public boolean systemMessageReceived (Component component, String string, String ansi) { - return AuthPlugin.this.systemMessageReceived(component); - } - }); - + bot.chat.addListener(this); bot.players.addListener(this); } @@ -155,7 +149,8 @@ public class AuthPlugin extends PlayersPlugin.Listener { isAuthenticating = true; } - private boolean systemMessageReceived (Component component) { + @Override + public boolean systemMessageReceived (Component component, String string, String ansi) { if (!bot.config.ownerAuthentication.enabled) return true; if (!(component instanceof TextComponent textComponent)) return true; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/BossbarManagerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/BossbarManagerPlugin.java index 6ed3196e..3d9ed7ee 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/BossbarManagerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/BossbarManagerPlugin.java @@ -18,7 +18,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; // yes this has been rewritten to be not spammy -public class BossbarManagerPlugin extends Bot.Listener { +public class BossbarManagerPlugin extends Bot.Listener implements PlayersPlugin.Listener { private final Bot bot; public final Map serverBossBars = new HashMap<>(); @@ -35,13 +35,7 @@ public class BossbarManagerPlugin extends Bot.Listener { bot.addListener(this); - bot.players.addListener(new PlayersPlugin.Listener() { - @Override - public void playerJoined(PlayerEntry target) { - BossbarManagerPlugin.this.playerJoined(); - } - }); - + bot.players.addListener(this); bot.executor.scheduleAtFixedRate(this::check, 0, 600, TimeUnit.MILLISECONDS); } @@ -170,7 +164,8 @@ public class BossbarManagerPlugin extends Bot.Listener { serverBossBars.clear(); } - private void playerJoined () { + @Override + public void playerJoined (PlayerEntry target) { if (!enabled || actionBar || !bot.options.useCore) return; for (Map.Entry _bossBar : bossBars.entrySet()) { diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/BruhifyPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/BruhifyPlugin.java index cfaf7f94..300c591b 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/BruhifyPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/BruhifyPlugin.java @@ -5,7 +5,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.util.HSVLike; -public class BruhifyPlugin extends TickPlugin.Listener { +public class BruhifyPlugin implements TickPlugin.Listener { private final Bot bot; public String bruhifyText = ""; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatCommandHandlerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatCommandHandlerPlugin.java index 4aacca4b..a9f14d1a 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatCommandHandlerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatCommandHandlerPlugin.java @@ -10,7 +10,7 @@ import net.kyori.adventure.text.Component; import java.util.List; -public class ChatCommandHandlerPlugin extends ChatPlugin.Listener { +public class ChatCommandHandlerPlugin implements ChatPlugin.Listener, CommandSpyPlugin.Listener { public final Bot bot; public final List prefixes; @@ -23,13 +23,7 @@ public class ChatCommandHandlerPlugin extends ChatPlugin.Listener { this.commandSpyPrefixes = bot.config.commandSpyPrefixes; bot.chat.addListener(this); - - bot.commandSpy.addListener(new CommandSpyPlugin.Listener() { - @Override - public void commandReceived(PlayerEntry sender, String command) { - ChatCommandHandlerPlugin.this.commandSpyMessageReceived(sender, command); - } - }); + bot.commandSpy.addListener(this); } @Override @@ -49,7 +43,8 @@ public class ChatCommandHandlerPlugin extends ChatPlugin.Listener { return true; } - public void commandSpyMessageReceived (PlayerEntry sender, String command) { + @Override + public void commandReceived (PlayerEntry sender, String command) { if ( sender.profile != null && bot.profile != null && diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java index af19b21e..e6236fca 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ChatPlugin.java @@ -367,8 +367,8 @@ public class ChatPlugin extends Bot.Listener { public void addListener (Listener listener) { listeners.add(listener); } - public static class Listener { - public boolean playerMessageReceived (PlayerMessage message) { return true; } - public boolean systemMessageReceived (Component component, String string, String ansi) { return true; } + public interface Listener { + default boolean playerMessageReceived (PlayerMessage message) { return true; } + default boolean systemMessageReceived (Component component, String string, String ansi) { return true; } } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ClearChatNameAnnouncerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ClearChatNameAnnouncerPlugin.java index 1e9a59d6..7e51ced1 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ClearChatNameAnnouncerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ClearChatNameAnnouncerPlugin.java @@ -5,7 +5,7 @@ import me.chayapak1.chomens_bot.data.player.PlayerEntry; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; -public class ClearChatNameAnnouncerPlugin extends CommandSpyPlugin.Listener { +public class ClearChatNameAnnouncerPlugin implements CommandSpyPlugin.Listener { private final Bot bot; public ClearChatNameAnnouncerPlugin (Bot bot) { diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSpyPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSpyPlugin.java index 3de2dc4b..1e23f3d8 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSpyPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSpyPlugin.java @@ -10,7 +10,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import java.util.ArrayList; import java.util.List; -public class CommandSpyPlugin extends ChatPlugin.Listener { +public class CommandSpyPlugin implements ChatPlugin.Listener { private final Bot bot; private final List listeners = new ArrayList<>(); @@ -56,7 +56,7 @@ public class CommandSpyPlugin extends ChatPlugin.Listener { public void addListener (Listener listener) { listeners.add(listener); } - public static class Listener { - public void commandReceived (PlayerEntry sender, String command) {} + public interface Listener { + default void commandReceived (PlayerEntry sender, String command) {} } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSuggestionPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSuggestionPlugin.java index 670fa02b..745816e1 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSuggestionPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CommandSuggestionPlugin.java @@ -9,7 +9,7 @@ import net.kyori.adventure.text.TextComponent; import java.util.ArrayList; import java.util.List; -public class CommandSuggestionPlugin extends ChatPlugin.Listener { +public class CommandSuggestionPlugin implements ChatPlugin.Listener { private final Bot bot; public final String id = "chomens_bot_request_command_suggestion"; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java index beef0921..98510f64 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/CorePlugin.java @@ -27,13 +27,19 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemOnPacket; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class CorePlugin extends PositionPlugin.Listener { +public class CorePlugin + extends Bot.Listener + implements PositionPlugin.Listener, WorldPlugin.Listener, TickPlugin.Listener +{ public static final int COMMAND_BLOCK_ID = 418; private final Bot bot; @@ -95,45 +101,29 @@ public class CorePlugin extends PositionPlugin.Listener { shouldRefill = false; }, 0, 1, TimeUnit.SECONDS); - bot.addListener(new Bot.Listener() { - @Override - public void disconnected (DisconnectedEvent event) { - ready = false; + bot.addListener(this); + bot.world.addListener(this); + bot.tick.addListener(this); + } - refillTask.cancel(false); + @Override + public void onTick () { + if (commandsPerTick > 0) commandsPerTick--; - reset(); + try { + if (placeBlockQueue.size() > 300) { + placeBlockQueue.clear(); + return; } - }); - bot.world.addListener(new WorldPlugin.Listener() { - @Override - public void worldChanged (String dimension) { - CorePlugin.this.worldChanged(); - } - }); + final String command = placeBlockQueue.poll(); - bot.tick.addListener(new TickPlugin.Listener() { - @Override - public void onTick() { - if (commandsPerTick > 0) commandsPerTick--; + if (command == null) return; - try { - if (placeBlockQueue.size() > 300) { - placeBlockQueue.clear(); - return; - } - - final String command = placeBlockQueue.poll(); - - if (command == null) return; - - forceRunPlaceBlock(command); - } catch (Exception e) { - bot.logger.error(e); - } - } - }); + forceRunPlaceBlock(command); + } catch (Exception e) { + bot.logger.error(e); + } } public boolean hasRateLimit () { @@ -441,15 +431,25 @@ public class CorePlugin extends PositionPlugin.Listener { ready = true; refillTask = bot.executor.scheduleAtFixedRate(this::refill, 0, bot.config.core.refillInterval, TimeUnit.MILLISECONDS); - for (Listener listener : listeners) listener.ready(); + for (Listener listener : listeners) listener.coreReady(); } } - public void worldChanged () { + @Override + public void worldChanged (String dimension) { reset(); refill(); } + @Override + public void disconnected (DisconnectedEvent event) { + ready = false; + + refillTask.cancel(false); + + reset(); + } + public void recalculateRelativePositions() { final int botChunkPosX = (int) Math.floor(bot.position.position.getX() / 16); final int botChunkPosZ = (int) Math.floor(bot.position.position.getZ() / 16); @@ -515,13 +515,13 @@ public class CorePlugin extends PositionPlugin.Listener { } if (refilledMap.containsValue(true)) { - for (Listener listener : listeners) listener.refilled(); + for (Listener listener : listeners) listener.coreRefilled(); } } - public static class Listener { - public void ready () {} - public void refilled () {} + public interface Listener { + default void coreReady () {} + default void coreRefilled () {} } public void addListener (Listener listener) { listeners.add(listener); } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java index bd0ae3ce..c323145e 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java @@ -31,13 +31,13 @@ import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent; import org.jetbrains.annotations.NotNull; import java.awt.*; -import java.util.List; import java.util.*; +import java.util.List; import java.util.concurrent.TimeUnit; // please ignore my ohio code // also this is one of the classes which has >100 lines or actually >400 LMAO -public class DiscordPlugin { +public class DiscordPlugin extends ListenerAdapter { public JDA jda; public final Map servers; @@ -79,6 +79,8 @@ public class DiscordPlugin { jda.getPresence().setPresence(Activity.playing(config.discord.statusMessage), false); + jda.addEventListener(this); + for (Bot bot : Main.bots) { final String channelId = servers.get(bot.getServerString(true)); @@ -152,66 +154,63 @@ public class DiscordPlugin { "Disconnected: \n" + "```ansi\n" + reason.replace("`", "\\`") + - "\n```" - , channelId + "\n```", + channelId ); } }); - jda.addEventListener(new ListenerAdapter() { - @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { - if ( - !event.getChannel().getId().equals(channelId) || - event.getAuthor().getId().equals(jda.getSelfUser().getId()) || - !bot.loggedIn - ) return; - - final Message messageEvent = event.getMessage(); - final String message = messageEvent.getContentDisplay(); - - if (message.startsWith(prefix)) { - final DiscordCommandContext context = new DiscordCommandContext(bot, prefix, event); - - final Component output = bot.commandHandler.executeCommand(message.substring(prefix.length()), context, event); - - if (output != null) { - context.sendOutput(output); - } - - return; - } - - Component output = Component.empty(); - - final Message reference = event.getMessage().getReferencedMessage(); - - if (reference != null) { - output = output - .append( - Component.empty() - .append(Component.text("Replying to ").color(NamedTextColor.GRAY)) - .append(getMessageComponent(bot, reference)) - .decorate(TextDecoration.ITALIC) - ) - .append(Component.newline()); - } - - output = output.append(getMessageComponent(bot, event.getMessage())); - - bot.chat.tellraw(output); - } - - @Override - public void onShutdown(@NotNull ShutdownEvent event) { - shuttedDown = true; - } - }); - bot.discord = this; } } + @Override + public void onMessageReceived (@NotNull MessageReceivedEvent event) { + for (Bot bot : Main.bots) { + final String channelId = servers.get(bot.getServerString(true)); + + if ( + !bot.loggedIn || + !event.getChannel().getId().equals(channelId) || + event.getAuthor().getId().equals(jda.getSelfUser().getId()) + ) continue; + + final Message messageEvent = event.getMessage(); + final String message = messageEvent.getContentDisplay(); + + if (message.startsWith(prefix)) { + final DiscordCommandContext context = new DiscordCommandContext(bot, prefix, event); + + final Component output = bot.commandHandler.executeCommand(message.substring(prefix.length()), context, event); + + if (output != null) { + context.sendOutput(output); + } + + return; + } + + Component output = Component.empty(); + + final Message reference = event.getMessage().getReferencedMessage(); + + if (reference != null) { + output = output + .append( + Component.empty() + .append(Component.text("Replying to ").color(NamedTextColor.GRAY)) + .append(getMessageComponent(bot, reference)) + .decorate(TextDecoration.ITALIC) + ) + .append(Component.newline()); + } + + output = output.append(getMessageComponent(bot, event.getMessage())); + + bot.chat.tellraw(output); + } + } + private Component getMessageComponent (Bot bot, Message message) { // TODO: IMPROVE this code @@ -496,4 +495,9 @@ public class DiscordPlugin { sendMessageInstantly("```ansi\n" + message + "\n```", channelId); } } + + @Override + public void onShutdown (@NotNull ShutdownEvent event) { + shuttedDown = true; + } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ExtrasMessengerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ExtrasMessengerPlugin.java index ac432432..605f467f 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ExtrasMessengerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ExtrasMessengerPlugin.java @@ -197,7 +197,7 @@ public class ExtrasMessengerPlugin extends Bot.Listener { public void addListener (Listener listener) { listeners.add(listener); } - public static class Listener { - public void onMessage (UUID sender, byte[] message) {} + public interface Listener { + default void onMessage (UUID sender, byte[] message) {} } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java index d5f1ff95..d5e7c534 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterManagerPlugin.java @@ -1,8 +1,8 @@ package me.chayapak1.chomens_bot.plugins; import me.chayapak1.chomens_bot.Bot; -import me.chayapak1.chomens_bot.data.player.PlayerEntry; import me.chayapak1.chomens_bot.data.chat.PlayerMessage; +import me.chayapak1.chomens_bot.data.player.PlayerEntry; import me.chayapak1.chomens_bot.util.ComponentUtilities; import me.chayapak1.chomens_bot.util.UUIDUtilities; import net.kyori.adventure.text.Component; @@ -15,7 +15,10 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.TimeUnit; -public class FilterManagerPlugin extends PlayersPlugin.Listener { +public class FilterManagerPlugin + extends Bot.Listener + implements PlayersPlugin.Listener, ChatPlugin.Listener, CommandSpyPlugin.Listener +{ private final Bot bot; public final Map list = Collections.synchronizedMap(new HashMap<>()); @@ -26,31 +29,11 @@ public class FilterManagerPlugin extends PlayersPlugin.Listener { bot.players.addListener(this); bot.executor.scheduleAtFixedRate(this::removeLeftPlayers, 0, 1, TimeUnit.SECONDS); - - bot.addListener(new Bot.Listener() { - @Override - public void disconnected(DisconnectedEvent event) { - list.clear(); - } - }); - - bot.chat.addListener(new ChatPlugin.Listener() { - @Override - public boolean playerMessageReceived(PlayerMessage message) { - FilterManagerPlugin.this.playerMessageReceived(message); - - return true; - } - }); - - bot.commandSpy.addListener(new CommandSpyPlugin.Listener() { - @Override - public void commandReceived(PlayerEntry sender, String command) { - FilterManagerPlugin.this.commandSpyMessageReceived(sender, command); - } - }); - bot.executor.scheduleAtFixedRate(this::kick, 0, 10, TimeUnit.SECONDS); + + bot.addListener(this); + bot.chat.addListener(this); + bot.commandSpy.addListener(this); } private void removeLeftPlayers () { @@ -71,35 +54,44 @@ public class FilterManagerPlugin extends PlayersPlugin.Listener { if (stringifiedDisplayName.startsWith("[OP] ")) deOp(target); } - public void commandSpyMessageReceived (PlayerEntry entry, String command) { - final Pair player = getFilteredFromName(entry.profile.getName()); + @Override + public void commandReceived (PlayerEntry sender, String command) { + final Pair player = getFilteredFromName(sender.profile.getName()); if (player == null) return; if ( command.startsWith("/mute") || - command.startsWith("/emute") || - command.startsWith("/silence") || - command.startsWith("/esilence") || - command.startsWith("/essentials:mute") || - command.startsWith("/essentials:emute") || - command.startsWith("/essentials:silence") || - command.startsWith("/essentials:esilence") - ) mute(entry, player.getRight()); + command.startsWith("/emute") || + command.startsWith("/silence") || + command.startsWith("/esilence") || + command.startsWith("/essentials:mute") || + command.startsWith("/essentials:emute") || + command.startsWith("/essentials:silence") || + command.startsWith("/essentials:esilence") + ) mute(sender, player.getRight()); - deOp(entry); - gameMode(entry); - bot.exploits.kick(entry.profile.getId()); + deOp(sender); + gameMode(sender); + bot.exploits.kick(sender.profile.getId()); } - public void playerMessageReceived (PlayerMessage message) { - if (message.sender.profile.getName() == null) return; + @Override + public boolean playerMessageReceived (PlayerMessage message) { + if (message.sender.profile.getName() == null) return true; final Pair player = getFilteredFromName(message.sender.profile.getName()); - if (player == null || message.sender.profile.getId().equals(new UUID(0L, 0L))) return; + if (player == null || message.sender.profile.getId().equals(new UUID(0L, 0L))) return true; doAll(message.sender, player.getRight()); + + return true; + } + + @Override + public void disconnected (DisconnectedEvent event) { + list.clear(); } public void doAll (PlayerEntry entry) { doAll(entry, ""); } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/FormatCheckerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/FormatCheckerPlugin.java index 8406181a..a3c2e4b2 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/FormatCheckerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/FormatCheckerPlugin.java @@ -14,7 +14,7 @@ import net.kyori.adventure.text.format.TextDecoration; import java.nio.charset.StandardCharsets; import java.util.List; -public class FormatCheckerPlugin extends ChatPlugin.Listener { +public class FormatCheckerPlugin implements ChatPlugin.Listener, PlayersPlugin.Listener { private final Bot bot; private int totalFormat = 0; @@ -23,18 +23,7 @@ public class FormatCheckerPlugin extends ChatPlugin.Listener { this.bot = bot; bot.chat.addListener(this); - - bot.players.addListener(new PlayersPlugin.Listener() { - @Override - public void playerJoined(PlayerEntry target) { - reset(target); - } - - @Override - public void playerLeft(PlayerEntry target) { - reset(target); - } - }); + bot.players.addListener(this); } private void reset (PlayerEntry entry) { @@ -43,6 +32,16 @@ public class FormatCheckerPlugin extends ChatPlugin.Listener { totalFormat = 0; } + @Override + public void playerJoined(PlayerEntry target) { + reset(target); + } + + @Override + public void playerLeft(PlayerEntry target) { + reset(target); + } + @Override public boolean systemMessageReceived(Component component, String string, String ansi) { if (!isImposterFormat(component)) return true; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java index c2c89ecb..8ab86c83 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java @@ -12,7 +12,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.TimeUnit; -public class IPFilterPlugin extends PlayersPlugin.Listener { +public class IPFilterPlugin implements PlayersPlugin.Listener, CorePlugin.Listener { private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ipFilters (ip VARCHAR(255) PRIMARY KEY, reason VARCHAR(255));"; private static final String LIST_FILTERS = "SELECT * FROM ipFilters;"; private static final String INSERT_FILTER = "INSERT INTO ipFilters (ip, reason) VALUES (?, ?);"; @@ -43,18 +43,15 @@ public class IPFilterPlugin extends PlayersPlugin.Listener { if (Main.database == null) return; bot.players.addListener(this); - - bot.core.addListener(new CorePlugin.Listener() { - @Override - public void ready() { - IPFilterPlugin.this.coreReady(); - } - }); + bot.core.addListener(this); bot.executor.scheduleAtFixedRate(this::checkAllPlayers, 5, 15, TimeUnit.SECONDS); } - private void coreReady () { checkAllPlayers(); } + @Override + public void coreReady () { + checkAllPlayers(); + } @Override public void playerJoined (PlayerEntry target) { diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java index df48e53e..dd5f198c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java @@ -9,7 +9,7 @@ import net.kyori.adventure.text.Component; import org.geysermc.mcprotocollib.network.event.session.ConnectedEvent; import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent; -public class LoggerPlugin extends ChatPlugin.Listener { +public class LoggerPlugin implements ChatPlugin.Listener { public static void init () { for (Bot bot : Main.bots) new LoggerPlugin(bot); } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java index 52c3c788..7063ac3c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java @@ -15,7 +15,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -public class MailPlugin extends PlayersPlugin.Listener { +public class MailPlugin implements PlayersPlugin.Listener { private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS mails (sentBy VARCHAR(255), sentTo VARCHAR(255), timeSent BIGINT, server VARCHAR(255), contents TEXT);"; private static final String INSERT_MAIL = "INSERT INTO mails (sentBy, sentTo, timeSent, server, contents) VALUES (?, ?, ?, ?, ?);"; private static final String LIST_MAILS = "SELECT * FROM mails;"; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java index 4cf5c324..185fce47 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/MusicPlayerPlugin.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.concurrent.TimeUnit; // Author: _ChipMC_ & chayapak <3 -public class MusicPlayerPlugin extends Bot.Listener { +public class MusicPlayerPlugin extends Bot.Listener implements CorePlugin.Listener { public static final String SELECTOR = "@a[tag=!nomusic,tag=!chomens_bot_nomusic,tag=!custompitch]"; public static final String CUSTOM_PITCH_SELECTOR = "@a[tag=!nomusic,tag=!chomens_bot_nomusic,tag=custompitch]"; public static final String BOTH_SELECTOR = "@a[tag=!nomusic,tag=!chomens_bot_nomusic]"; @@ -74,12 +74,7 @@ public class MusicPlayerPlugin extends Bot.Listener { bot.addListener(this); - bot.core.addListener(new CorePlugin.Listener() { - @Override - public void ready() { - onCoreReady(); - } - }); + bot.core.addListener(this); bot.executor.scheduleAtFixedRate(this::onTick, 0, 50, TimeUnit.MILLISECONDS); bot.executor.scheduleAtFixedRate(() -> urlLimit = 0, 0, bot.config.music.urlRatelimit.seconds, TimeUnit.SECONDS); @@ -131,7 +126,8 @@ public class MusicPlayerPlugin extends Bot.Listener { this.loaderThread.start(); } - private void onCoreReady () { + @Override + public void coreReady () { if (currentSong != null) currentSong.play(); } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayerFilterPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayerFilterPlugin.java index 70e1ad1b..21c6b41b 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayerFilterPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayerFilterPlugin.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; -public class PlayerFilterPlugin extends PlayersPlugin.Listener { +public class PlayerFilterPlugin implements PlayersPlugin.Listener { private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS filters (name VARCHAR(255) PRIMARY KEY, reason VARCHAR(255), regex BOOLEAN, ignoreCase BOOLEAN);"; private static final String LIST_FILTERS = "SELECT * FROM filters;"; private static final String INSERT_FILTER = "INSERT INTO filters (name, reason, regex, ignoreCase) VALUES (?, ?, ?, ?);"; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java index cf06d39c..2a6f42fa 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java @@ -18,7 +18,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.CompletableFuture; -public class PlayersDatabasePlugin extends PlayersPlugin.Listener { +public class PlayersDatabasePlugin implements PlayersPlugin.Listener { private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS players (username VARCHAR(255) PRIMARY KEY, data LONGTEXT);"; private static final String INSERT_PLAYER = "INSERT IGNORE INTO players (username, data) VALUES (?, ?);"; private static final String UPDATE_PLAYER = "UPDATE players SET data = JSON_SET(data, ?, JSON_MERGE_PATCH(JSON_EXTRACT(data, ?), ?)) WHERE username = ?;"; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java index 5d94b4e5..26b5ba23 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java @@ -329,14 +329,14 @@ public class PlayersPlugin extends Bot.Listener { public void addListener (Listener listener) { listeners.add(listener); } @SuppressWarnings("unused") - public static class Listener { - public void playerJoined (PlayerEntry target) {} - public void playerUnVanished (PlayerEntry target) {} - public void playerGameModeUpdated (PlayerEntry target, GameMode gameMode) {} - public void playerLatencyUpdated (PlayerEntry target, int ping) {} - public void playerDisplayNameUpdated (PlayerEntry target, Component displayName) {} - public void playerLeft (PlayerEntry target) {} - public void playerVanished (PlayerEntry target) {} - public void playerChangedUsername (PlayerEntry target) {} + public interface Listener { + default void playerJoined (PlayerEntry target) {} + default void playerUnVanished (PlayerEntry target) {} + default void playerGameModeUpdated (PlayerEntry target, GameMode gameMode) {} + default void playerLatencyUpdated (PlayerEntry target, int ping) {} + default void playerDisplayNameUpdated (PlayerEntry target, Component displayName) {} + default void playerLeft (PlayerEntry target) {} + default void playerVanished (PlayerEntry target) {} + default void playerChangedUsername (PlayerEntry target) {} } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java index c1406e1a..eb3eb443 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java @@ -21,7 +21,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; // some part of the code used to be in a test plugin but i thought it would be useful in the future so i moved it here -public class PositionPlugin extends Bot.Listener { +public class PositionPlugin extends Bot.Listener implements TickPlugin.Listener { private final Bot bot; private final List listeners = new ArrayList<>(); @@ -37,8 +37,6 @@ public class PositionPlugin extends Bot.Listener { public PositionPlugin (Bot bot) { this.bot = bot; - bot.addListener(this); - // notchian clients also does this, sends the position packet every second bot.executor.scheduleAtFixedRate(() -> { if (!bot.loggedIn || isGoingDownFromHeightLimit) return; @@ -52,12 +50,13 @@ public class PositionPlugin extends Bot.Listener { )); }, 0, 1, TimeUnit.SECONDS); - bot.tick.addListener(new TickPlugin.Listener() { - @Override - public void onTick() { - handleHeightLimit(); - } - }); + bot.addListener(this); + bot.tick.addListener(this); + } + + @Override + public void onTick() { + handleHeightLimit(); } @Override @@ -267,8 +266,8 @@ public class PositionPlugin extends Bot.Listener { public void addListener (Listener listener) { listeners.add(listener); } @SuppressWarnings("unused") - public static class Listener { - public void positionChange (Vector3d position) {} - public void playerMoved (PlayerEntry player, Vector3d position, Rotation rotation) {} + public interface Listener { + default void positionChange (Vector3d position) {} + default void playerMoved (PlayerEntry player, Vector3d position, Rotation rotation) {} } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/QueryPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/QueryPlugin.java index 3514ba72..219cff9c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/QueryPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/QueryPlugin.java @@ -13,7 +13,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; -public class QueryPlugin extends Bot.Listener { +public class QueryPlugin extends Bot.Listener implements ChatPlugin.Listener { private final Bot bot; public long nextTransactionId = 0; @@ -24,16 +24,11 @@ public class QueryPlugin extends Bot.Listener { this.bot = bot; bot.addListener(this); - - bot.chat.addListener(new ChatPlugin.Listener() { - @Override - public boolean systemMessageReceived(Component component, String string, String ansi) { - return QueryPlugin.this.systemMessageReceived(component); - } - }); + bot.chat.addListener(this); } - private boolean systemMessageReceived (Component component) { + @Override + public boolean systemMessageReceived (Component component, String string, String ansi) { if (!(component instanceof TextComponent textComponent)) return true; try { diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/SelfCarePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/SelfCarePlugin.java index f4ba01dc..8664ebb9 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/SelfCarePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/SelfCarePlugin.java @@ -26,7 +26,7 @@ import java.util.Arrays; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class SelfCarePlugin extends Bot.Listener { +public class SelfCarePlugin extends Bot.Listener implements ChatPlugin.Listener, PositionPlugin.Listener { private final Bot bot; private ScheduledFuture checkTask; @@ -51,53 +51,46 @@ public class SelfCarePlugin extends Bot.Listener { public SelfCarePlugin (Bot bot) { this.bot = bot; - bot.addListener(this); - bot.executor.scheduleAtFixedRate(() -> positionPacketsPerSecond = 0, 0, 1, TimeUnit.SECONDS); - bot.chat.addListener(new ChatPlugin.Listener() { - @Override - public boolean systemMessageReceived(Component component, String string, String ansi) { - if (string.equals("Successfully enabled CommandSpy")) cspy = true; - else if (string.equals("Successfully disabled CommandSpy")) cspy = false; + bot.addListener(this); + bot.chat.addListener(this); + bot.position.addListener(this); + } - else if (string.equals(String.format(bot.options.essentialsMessages.vanishEnable1, bot.username))) vanish = true; - else if (string.equals(bot.options.essentialsMessages.vanishEnable2)) vanish = true; - else if (string.equals(String.format(bot.options.essentialsMessages.vanishDisable, bot.username))) vanish = false; + @Override + public boolean systemMessageReceived(Component component, String string, String ansi) { + if (string.equals("Successfully enabled CommandSpy")) cspy = true; + else if (string.equals("Successfully disabled CommandSpy")) cspy = false; - else if (string.equals(bot.options.essentialsMessages.nickNameRemove)) nickname = true; - else if (string.startsWith(bot.options.essentialsMessages.nickNameSet)) nickname = false; + else if (string.equals(String.format(bot.options.essentialsMessages.vanishEnable1, bot.username))) vanish = true; + else if (string.equals(bot.options.essentialsMessages.vanishEnable2)) vanish = true; + else if (string.equals(String.format(bot.options.essentialsMessages.vanishDisable, bot.username))) vanish = false; - else if (string.equals(bot.options.essentialsMessages.socialSpyEnable)) socialspy = true; - else if (string.equals(bot.options.essentialsMessages.socialSpyDisable)) socialspy = false; + else if (string.equals(bot.options.essentialsMessages.nickNameRemove)) nickname = true; + else if (string.startsWith(bot.options.essentialsMessages.nickNameSet)) nickname = false; - else if (string.startsWith(bot.options.essentialsMessages.muted)) muted = true; - else if (string.equals(bot.options.essentialsMessages.unmuted)) muted = false; + else if (string.equals(bot.options.essentialsMessages.socialSpyEnable)) socialspy = true; + else if (string.equals(bot.options.essentialsMessages.socialSpyDisable)) socialspy = false; - else if (string.equals("You now have the tag: " + bot.config.selfCare.prefix.prefix)) prefix = true; - else if (string.startsWith("You no longer have a tag")) prefix = false; - else if (string.startsWith("You now have the tag: ")) prefix = false; - // prefix = true as a workaround to prevent spamming - else if (string.equals("Something went wrong while saving the prefix. Please check console.")) prefix = true; // Parker2991 + else if (string.startsWith(bot.options.essentialsMessages.muted)) muted = true; + else if (string.equals(bot.options.essentialsMessages.unmuted)) muted = false; - else if (string.equals("Successfully set your username to \"" + bot.username + "\"")) username = true; - else if (string.startsWith("Successfully set your username to \"")) { - username = false; - usernameStartTime = System.currentTimeMillis(); - } - else if (string.startsWith("You already have the username \"" + bot.username + "\"")) username = true; - else if (string.startsWith("You already have the username \"")) username = false; + else if (string.equals("You now have the tag: " + bot.config.selfCare.prefix.prefix)) prefix = true; + else if (string.startsWith("You no longer have a tag")) prefix = false; + else if (string.startsWith("You now have the tag: ")) prefix = false; + // prefix = true as a workaround to prevent spamming + else if (string.equals("Something went wrong while saving the prefix. Please check console.")) prefix = true; // Parker2991 - return true; - } - }); + else if (string.equals("Successfully set your username to \"" + bot.username + "\"")) username = true; + else if (string.startsWith("Successfully set your username to \"")) { + username = false; + usernameStartTime = System.currentTimeMillis(); + } + else if (string.startsWith("You already have the username \"" + bot.username + "\"")) username = true; + else if (string.startsWith("You already have the username \"")) username = false; - bot.position.addListener(new PositionPlugin.Listener() { - @Override - public void positionChange(Vector3d position) { - SelfCarePlugin.this.positionChange(); - } - }); + return true; } public void check () { @@ -214,7 +207,7 @@ public class SelfCarePlugin extends Bot.Listener { ) return; // automatically unmount when mounting - // eg. player `/ride`s you + // e.g. player `/ride`s you // the server will automatically dismount for you, // so that's why we don't have to send PlayerState.STOP_SNEAKING bot.session.send( @@ -225,7 +218,8 @@ public class SelfCarePlugin extends Bot.Listener { ); } - public void positionChange () { + @Override + public void positionChange(Vector3d position) { positionPacketsPerSecond++; } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/TPSPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/TPSPlugin.java index 49ff69b0..c97486b2 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/TPSPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/TPSPlugin.java @@ -16,7 +16,7 @@ import java.text.DecimalFormat; import java.util.Arrays; // totallynotskidded™ from meteor client (https://github.com/MeteorDevelopment/meteor-client/blob/master/src/main/java/meteordevelopment/meteorclient/utils/world/TickRate.java) -public class TPSPlugin extends Bot.Listener { +public class TPSPlugin extends Bot.Listener implements TickPlugin.Listener { private final Bot bot; private boolean enabled = false; @@ -32,19 +32,7 @@ public class TPSPlugin extends Bot.Listener { this.bot = bot; bot.addListener(this); - - bot.core.addListener(new CorePlugin.Listener() { - @Override - public void ready() { - bot.tick.addListener(new TickPlugin.Listener() { - @Override - public void onTick() { - updateTPSBar(); - } - }); - } - } - ); + bot.tick.addListener(this); } public void on () { @@ -76,6 +64,11 @@ public class TPSPlugin extends Bot.Listener { bot.bossbar.remove(bossbarName); } + @Override + public void onTick () { + updateTPSBar(); + } + private void updateTPSBar () { if (!enabled) return; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/TickPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/TickPlugin.java index 7754ce5d..79555051 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/TickPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/TickPlugin.java @@ -43,8 +43,8 @@ public class TickPlugin { listeners.add(listener); } - public static class Listener { - public void onTick () {} - public void onAlwaysTick () {} + public interface Listener { + default void onTick () {} + default void onAlwaysTick () {} } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/TrustedPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/TrustedPlugin.java index a5687811..5a939a34 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/TrustedPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/TrustedPlugin.java @@ -13,7 +13,7 @@ import java.time.format.DateTimeFormatter; import java.util.List; import java.util.UUID; -public class TrustedPlugin extends PlayersPlugin.Listener { +public class TrustedPlugin implements PlayersPlugin.Listener { private final Bot bot; public final List list; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/WhitelistPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/WhitelistPlugin.java index 2fb20378..6e76910e 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/WhitelistPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/WhitelistPlugin.java @@ -6,7 +6,7 @@ import me.chayapak1.chomens_bot.data.player.PlayerEntry; import java.util.ArrayList; import java.util.List; -public class WhitelistPlugin extends PlayersPlugin.Listener { +public class WhitelistPlugin implements PlayersPlugin.Listener { private final Bot bot; public final List list = new ArrayList<>(); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java index cc5efd20..25745bd2 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/WorldPlugin.java @@ -137,7 +137,7 @@ public class WorldPlugin extends Bot.Listener { public void addListener (Listener listener) { listeners.add(listener); } - public static class Listener { - public void worldChanged (String dimension) {} + public interface Listener { + default void worldChanged (String dimension) {} } }