From bb766652f62d9c99d44cf65a64150651d6838e59 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Wed, 5 Mar 2025 10:47:27 +0700 Subject: [PATCH] feat: hidden servers --- build-number.txt | 2 +- .../java/me/chayapak1/chomens_bot/Bot.java | 7 +++- .../chayapak1/chomens_bot/Configuration.java | 1 + .../java/me/chayapak1/chomens_bot/Main.java | 2 +- .../chomens_bot/commands/ConsoleCommand.java | 2 +- .../commands/NetMessageCommand.java | 39 +++++++++++-------- .../chomens_bot/commands/SeenCommand.java | 2 +- .../chomens_bot/plugins/AuthPlugin.java | 2 +- .../chomens_bot/plugins/ConsolePlugin.java | 2 +- .../chomens_bot/plugins/DiscordPlugin.java | 12 +++--- .../chomens_bot/plugins/GrepLogPlugin.java | 2 +- .../chomens_bot/plugins/IRCPlugin.java | 11 +++--- .../chomens_bot/plugins/LoggerPlugin.java | 12 +++--- .../plugins/PlayersDatabasePlugin.java | 6 +-- .../chomens_bot/plugins/PlayersPlugin.java | 2 +- .../chomens_bot/util/LoggerUtilities.java | 2 +- src/main/resources/default-config.yml | 2 + 17 files changed, 58 insertions(+), 50 deletions(-) diff --git a/build-number.txt b/build-number.txt index 280f44a0..bddab8e1 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1663 \ No newline at end of file +1670 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/Bot.java b/src/main/java/me/chayapak1/chomens_bot/Bot.java index b42abe8d..7ab552a5 100644 --- a/src/main/java/me/chayapak1/chomens_bot/Bot.java +++ b/src/main/java/me/chayapak1/chomens_bot/Bot.java @@ -360,8 +360,11 @@ public class Bot { session.connect(false); } - public String getServerString () { - return host + ":" + port; + public String getServerString () { return getServerString(false); } + public String getServerString (boolean bypassHidden) { + return options.hidden && !bypassHidden ? + options.serverName : + host + ":" + port; } public void stop () { diff --git a/src/main/java/me/chayapak1/chomens_bot/Configuration.java b/src/main/java/me/chayapak1/chomens_bot/Configuration.java index 3af9e5b1..f53fa9d2 100644 --- a/src/main/java/me/chayapak1/chomens_bot/Configuration.java +++ b/src/main/java/me/chayapak1/chomens_bot/Configuration.java @@ -176,6 +176,7 @@ public class Configuration { public String username; public boolean creayun = false; public String serverName; + public boolean hidden = false; public boolean useCore = true; public boolean useCorePlaceBlock = false; public boolean useChat = false; diff --git a/src/main/java/me/chayapak1/chomens_bot/Main.java b/src/main/java/me/chayapak1/chomens_bot/Main.java index 13dd45f9..0db4043e 100644 --- a/src/main/java/me/chayapak1/chomens_bot/Main.java +++ b/src/main/java/me/chayapak1/chomens_bot/Main.java @@ -197,7 +197,7 @@ public class Main { for (Bot bot : copiedList) { try { if (discordEnabled) { - final String channelId = bot.discord.servers.get(bot.getServerString()); + final String channelId = bot.discord.servers.get(bot.getServerString(true)); final MessageCreateAction messageAction = bot.discord.sendMessageInstantly(stoppingMessage, channelId, false); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/ConsoleCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/ConsoleCommand.java index a8f7972a..59892df2 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/ConsoleCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/ConsoleCommand.java @@ -39,7 +39,7 @@ public class ConsoleCommand extends Command { final List servers = new ArrayList<>(); for (Bot eachBot : bot.bots) { - servers.add(eachBot.host + ":" + eachBot.port); + servers.add(bot.getServerString(true)); } final String server = context.getString(true, true); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/NetMessageCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/NetMessageCommand.java index 0b9aea78..3de9bfbd 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/NetMessageCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/NetMessageCommand.java @@ -29,25 +29,32 @@ public class NetMessageCommand extends Command { final Bot bot = context.bot; final List bots = bot.bots; - final String originServer = bot.getServerString(); + final String originServerName = bot.getServerString(); + final String originServerAddress = bot.getServerString(false); + + Component serverNameComponent = Component + .text(originServerName) + .color(NamedTextColor.GRAY); + + if (!bot.options.hidden) serverNameComponent = serverNameComponent + .clickEvent(ClickEvent.copyToClipboard(originServerAddress)) + .hoverEvent( + HoverEvent.showText( + Component.empty() + .append(Component.text(originServerAddress).color(NamedTextColor.GRAY)) + .append(Component.newline()) + .append(Component.text("Click here to copy the server host and port to your clipboard").color(NamedTextColor.GREEN)) + ) + ); final Component component = Component.translatable( "[%s]%s%s%s› %s", - Component - .text(originServer) - .color(NamedTextColor.GRAY) - .clickEvent(ClickEvent.copyToClipboard(originServer)) - .hoverEvent( - HoverEvent.showText( - Component.empty() - .append(Component.text(originServer).color(NamedTextColor.GRAY)) - .append(Component.newline()) - .append(Component.text("Click here to copy the server host and port to your clipboard").color(NamedTextColor.GREEN)) - ) - ), - Component.text(" "), - context.sender.displayName == null ? Component.text(context.sender.profile.getName()).color(NamedTextColor.GRAY) : context.sender.displayName.color(NamedTextColor.GRAY), - Component.text(" "), + serverNameComponent, + Component.space(), + context.sender.displayName == null ? + Component.text(context.sender.profile.getName()).color(NamedTextColor.GRAY) : + context.sender.displayName.color(NamedTextColor.GRAY), + Component.space(), Component.text(context.getString(true, true)).color(NamedTextColor.GRAY) ).color(NamedTextColor.DARK_GRAY); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java index aee6d4f6..cbefcb0d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java @@ -52,7 +52,7 @@ public class SeenCommand extends Command { Component.empty() .append(Component.text(player)) .append(Component.text(" is currently online on ")) - .append(Component.text(eachBot.host + ":" + eachBot.port)) + .append(Component.text(eachBot.getServerString())) .color(NamedTextColor.RED) ); } 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 d8cea573..de37d7ce 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/AuthPlugin.java @@ -16,7 +16,7 @@ public class AuthPlugin extends PlayersPlugin.Listener { public AuthPlugin (Bot bot) { this.bot = bot; - this.ownerIpForServer = bot.config.ownerAuthentication.ips.get(bot.getServerString()); + this.ownerIpForServer = bot.config.ownerAuthentication.ips.get(bot.getServerString(true)); if (!bot.config.ownerAuthentication.enabled || ownerIpForServer == null) return; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/ConsolePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/ConsolePlugin.java index 1de58bfb..65b92d9e 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/ConsolePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/ConsolePlugin.java @@ -77,7 +77,7 @@ public class ConsolePlugin implements Completer { if (line == null) return; for (Bot bot : allBots) { - final String server = bot.getServerString(); + final String server = bot.getServerString(true); if (!server.equals(consoleServer) && !consoleServer.equals("all")) continue; 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 a414f493..0364a2a7 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DiscordPlugin.java @@ -79,7 +79,7 @@ public class DiscordPlugin { jda.getPresence().setPresence(Activity.playing(config.discord.statusMessage), false); for (Bot bot : Main.bots) { - final String channelId = servers.get(bot.getServerString()); + final String channelId = servers.get(bot.getServerString(true)); totalConnects.put(channelId, 0); // is this necessary? @@ -127,9 +127,8 @@ public class DiscordPlugin { sendMessageInstantly( String.format( - "Connecting to: `%s:%s`", - bot.host, - bot.port + "Connecting to: `%s`", + bot.getServerString() ), channelId ); @@ -141,9 +140,8 @@ public class DiscordPlugin { sendMessageInstantly( String.format( - "Successfully connected to: `%s:%s`", - bot.host, - bot.port + "Successfully connected to: `%s`", + bot.getServerString() ), channelId ); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/GrepLogPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/GrepLogPlugin.java index e2d0b50b..a505c499 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/GrepLogPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/GrepLogPlugin.java @@ -88,7 +88,7 @@ public class GrepLogPlugin { if (matches == 0) throw new CommandException(Component.text("No matches has been found")); - final String channelId = bot.discord.servers.get(bot.getServerString()); + final String channelId = bot.discord.servers.get(bot.getServerString(true)); final TextChannel logChannel = bot.discord.jda.getTextChannelById(channelId); if (logChannel == null) return; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/IRCPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/IRCPlugin.java index 1a114ae7..b780e7c5 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/IRCPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/IRCPlugin.java @@ -97,7 +97,7 @@ public class IRCPlugin extends ListenerAdapter { for (Map.Entry entry : servers.entrySet()) { if (entry.getValue().equals(event.getChannel().getName())) { serverBot = Main.bots.stream() - .filter(eachBot -> entry.getKey().equals(eachBot.host + ":" + eachBot.port)) + .filter(eachBot -> entry.getKey().equals(eachBot.getServerString(true))) .findFirst() .orElse(null); @@ -179,9 +179,8 @@ public class IRCPlugin extends ListenerAdapter { sendMessage( bot, String.format( - "Successfully connected to: %s:%s", - bot.host, - bot.port + "Successfully connected to: %s", + bot.getServerString() ) ); } @@ -209,7 +208,7 @@ public class IRCPlugin extends ListenerAdapter { } private void addMessageToQueue (Bot bot, String message) { - final String channel = servers.get(bot.getServerString()); + final String channel = servers.get(bot.getServerString(true)); addMessageToQueue(channel, message); } @@ -227,7 +226,7 @@ public class IRCPlugin extends ListenerAdapter { } public void sendMessage (Bot bot, String message) { - final String hostAndPort = bot.getServerString(); + final String hostAndPort = bot.getServerString(true); final String channel = servers.get(hostAndPort); 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 9d2a7b11..b1a90839 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/LoggerPlugin.java @@ -38,9 +38,8 @@ public class LoggerPlugin extends ChatPlugin.Listener { log( String.format( - "Connecting to: %s:%s", - bot.host, - bot.port + "Connecting to: %s", + bot.getServerString(true) ) ); } @@ -49,9 +48,8 @@ public class LoggerPlugin extends ChatPlugin.Listener { public void connected (ConnectedEvent event) { log( String.format( - "Successfully connected to: %s:%s", - bot.host, - bot.port + "Successfully connected to: %s", + bot.getServerString(true) ) ); @@ -68,7 +66,7 @@ public class LoggerPlugin extends ChatPlugin.Listener { final Component reason = event.getReason(); - final String message = "Disconnected from " + bot.getServerString() + ", reason: "; + final String message = "Disconnected from " + bot.getServerString(true) + ", reason: "; final String string = ComponentUtilities.stringify(reason); 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 970ed66a..39e91523 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java @@ -87,7 +87,7 @@ public class PlayersDatabasePlugin extends PlayersPlugin.Listener { } else { statement = bot.database.connection.prepareStatement(FIND_ALTS_SINGLE_SERVER); - statement.setString(1, bot.getServerString()); + statement.setString(1, bot.getServerString(true)); statement.setString(2, ip); } @@ -141,7 +141,7 @@ public class PlayersDatabasePlugin extends PlayersPlugin.Listener { updatePlayerStatement.setString(2, "$.ips"); final ObjectNode ipsObject = JsonNodeFactory.instance.objectNode(); - ipsObject.put(bot.getServerString(), output); + ipsObject.put(bot.getServerString(true), output); updatePlayerStatement.setString(3, objectMapper.writeValueAsString(ipsObject)); @@ -186,7 +186,7 @@ public class PlayersDatabasePlugin extends PlayersPlugin.Listener { final ObjectNode object = JsonNodeFactory.instance.objectNode(); object.put("time", Instant.now().toEpochMilli()); - object.put("server", bot.getServerString()); + object.put("server", bot.getServerString(true)); return object; } 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 eaa07ae9..7f3b758f 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPlugin.java @@ -77,7 +77,7 @@ public class PlayersPlugin extends Bot.Listener { if (ipsObject == null || ipsObject.isNull() || !ipsObject.isObject()) return null; - final JsonNode targetIP = ipsObject.get(bot.getServerString()); + final JsonNode targetIP = ipsObject.get(bot.getServerString(true)); if (targetIP == null || targetIP.isNull() || !targetIP.isTextual()) return null; diff --git a/src/main/java/me/chayapak1/chomens_bot/util/LoggerUtilities.java b/src/main/java/me/chayapak1/chomens_bot/util/LoggerUtilities.java index 612c5f3a..ddd1b18c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/util/LoggerUtilities.java +++ b/src/main/java/me/chayapak1/chomens_bot/util/LoggerUtilities.java @@ -51,7 +51,7 @@ public class LoggerUtilities { final String formattedMessage = bot == null ? "" : String.format( "[%s] %s", - bot.getServerString(), + bot.getServerString(true), message ); diff --git a/src/main/resources/default-config.yml b/src/main/resources/default-config.yml index 844fddf0..763072b0 100644 --- a/src/main/resources/default-config.yml +++ b/src/main/resources/default-config.yml @@ -145,6 +145,7 @@ bots: # username - optional, if not specified it will just use a random username # creayun - defaults to false # serverName - name it whatever you like, it will be used as server name in trusted broadcast and in console + # hidden - if enabled, the server address will not show anywhere in the bot, including discord, netmsg, etc., except console # useCore - if enabled it just sends the command using chat instead of using core. recommended to enable useChat too when this is disabled # useCorePlaceBlock - uses the place block core instead of the main core. only used if useCore is enabled # useChat - when the bot tellraws it will chat instead of using the core to run tellraw @@ -165,6 +166,7 @@ bots: # username: 'ChomeNS_Bot' # creayun: false # serverName: 'Localhost' + # hidden: false # useCore: true # useCorePlaceBlock: false # useChat: false