From 520e143a376b18c9ff1695613093d07f40968fa1 Mon Sep 17 00:00:00 2001 From: Dereku Date: Wed, 17 May 2023 21:51:44 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20-=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C?= =?UTF-8?q?=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20=D1=81=D0=BB=D1=83?= =?UTF-8?q?=D1=88=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../net/rubeta/legacyping/LegacyPing.java | 23 +++++++++++-------- .../net/rubeta/legacyping/ServerThread.java | 5 ++-- src/main/resources/config.yml | 4 +++- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index b9c4fb3..99f945f 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ net.rubeta LegacyPing - 1.0-SNAPSHOT + 1.1 jar LegacyPing diff --git a/src/main/java/net/rubeta/legacyping/LegacyPing.java b/src/main/java/net/rubeta/legacyping/LegacyPing.java index c6dc71a..1b3b756 100644 --- a/src/main/java/net/rubeta/legacyping/LegacyPing.java +++ b/src/main/java/net/rubeta/legacyping/LegacyPing.java @@ -4,28 +4,31 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.logging.Level; public final class LegacyPing extends JavaPlugin { - private ServerThread serverThread; + private final List threads = new ArrayList<>(); @Override public void onEnable() { this.saveDefaultConfig(); final FileConfiguration config = this.getConfig(); - try { - this.serverThread = new ServerThread(this.getServer(), config.getString("host", "0.0.0.0"), config.getInt("port", 25566)); - this.serverThread.start(); - } catch (IOException e) { - this.getLogger().log(Level.WARNING, "Failed to create ServerSocket", e); - this.getPluginLoader().disablePlugin(this); + final String host = config.getString("host", "0.0.0.0"); + final List ports = config.getIntegerList("port"); + for (int port : ports) { + try { + this.threads.add(new ServerThread(this.getServer(), host, port)); + } catch (IOException e) { + this.getLogger().log(Level.WARNING, "Failed to create ServerSocket", e); + } } + this.threads.forEach(Thread::start); } @Override public void onDisable() { - if (this.serverThread != null) { - this.serverThread.shutdown(); - } + this.threads.forEach(ServerThread::shutdown); } } diff --git a/src/main/java/net/rubeta/legacyping/ServerThread.java b/src/main/java/net/rubeta/legacyping/ServerThread.java index b46531b..799adde 100644 --- a/src/main/java/net/rubeta/legacyping/ServerThread.java +++ b/src/main/java/net/rubeta/legacyping/ServerThread.java @@ -20,6 +20,7 @@ public class ServerThread extends Thread { public ServerThread(final Server server, final String host, int port) throws IOException { this.minecraftServer = server; + this.setName("LegacyPing thread listening " + host + ":" + port); final InetAddress address = InetAddress.getByName(host); this.serverSocket = new ServerSocket(port, 10, address); this.serverSocket.setSoTimeout((int) TimeUnit.SECONDS.toMillis(10L)); @@ -93,8 +94,8 @@ public class ServerThread extends Thread { } private void responseForModernPing(final OutputStream outputStream) throws IOException { - final String responseJson = MODERN_RESPONSE.replace("%max%", "" + this.minecraftServer.getMaxPlayers()) - .replace("%now%", "" + this.minecraftServer.getOnlinePlayers().length) + final String responseJson = MODERN_RESPONSE.replace("%max%", String.valueOf(this.minecraftServer.getMaxPlayers())) + .replace("%now%", String.valueOf(this.minecraftServer.getOnlinePlayers().length)) .replace("%motd%", ((CraftServer) this.minecraftServer).getServer().motd); byte[] bytes = responseJson.getBytes(); final DataOutputStream clientOutput = new DataOutputStream(outputStream); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 80fd168..803f05f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,2 +1,4 @@ host: '0.0.0.0' -port: 25566 \ No newline at end of file +port: + - 25566 + - 25567