From b4487a8a8a9d6ab1c689354490a5845ba7356f38 Mon Sep 17 00:00:00 2001 From: SmilerRyan Date: Sat, 20 Dec 2025 17:57:51 +0000 Subject: [PATCH] Add support for sending custom players --- .../viaproxy/ViaProxyConfig.java | 12 ++++++++++++ .../packethandler/StatusPacketHandler.java | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/main/java/net/raphimc/viaproxy/protocoltranslator/viaproxy/ViaProxyConfig.java b/src/main/java/net/raphimc/viaproxy/protocoltranslator/viaproxy/ViaProxyConfig.java index ba228577..15f01401 100644 --- a/src/main/java/net/raphimc/viaproxy/protocoltranslator/viaproxy/ViaProxyConfig.java +++ b/src/main/java/net/raphimc/viaproxy/protocoltranslator/viaproxy/ViaProxyConfig.java @@ -173,6 +173,14 @@ public class ViaProxyConfig { @Description("Custom MOTD to send when clients ping the proxy. Leave empty to use the target server's MOTD.") private String customMotd = ""; + @Option("custom-players") + @Description({ + "Custom Players to send when clients ping the proxy. Leave empty to use the target server's players.", + "For 1 player on a 8 player server with no sample players: 1/8", + "For 2 players on a 10 player server with 2 sample players: 2/10/player1/player2" + }) + private String customPlayers = ""; + @Option("custom-favicon-path") @Description("Relative file path to a custom favicon to send when clients ping the proxy. Leave empty to use the target server's favicon.") private String customFaviconPath = ""; @@ -504,6 +512,10 @@ public void setCustomMotd(final String customMotd) { this.save(); } + public String getCustomPlayers() { + return this.customPlayers; + } + public String getCustomFaviconPath() { return this.customFaviconPath; } diff --git a/src/main/java/net/raphimc/viaproxy/proxy/packethandler/StatusPacketHandler.java b/src/main/java/net/raphimc/viaproxy/proxy/packethandler/StatusPacketHandler.java index 71e47925..1f79229f 100644 --- a/src/main/java/net/raphimc/viaproxy/proxy/packethandler/StatusPacketHandler.java +++ b/src/main/java/net/raphimc/viaproxy/proxy/packethandler/StatusPacketHandler.java @@ -64,6 +64,24 @@ public boolean handleP2S(Packet packet, List listeners) { obj.addProperty("favicon", FAVICON_BASE_64); } } + String customPlayers = ViaProxy.getConfig().getCustomPlayers(); + if (!customPlayers.isBlank()) { + String[] parts = customPlayers.split("/"); + JsonObject players = new JsonObject(); + players.addProperty("online", Integer.parseInt(parts[0])); + players.addProperty("max", Integer.parseInt(parts[1])); + if (parts.length > 2) { + var sampleArray = new com.google.gson.JsonArray(); + for (int i = 2; i < parts.length; i++) { + JsonObject samplePlayer = new JsonObject(); + samplePlayer.addProperty("name", parts[i]); + samplePlayer.addProperty("id", "00000000-0000-0000-0000-000000000000"); + sampleArray.add(samplePlayer); + } + players.add("sample", sampleArray); + } + obj.add("players", players); + } statusResponsePacket.statusJson = obj.toString(); } catch (Throwable ignored) { }