From 427cb69a14307d2c110170ac5ad743f5345f3320 Mon Sep 17 00:00:00 2001 From: toinouH Date: Thu, 30 Jul 2020 22:09:40 +0200 Subject: [PATCH] clone-remote-port option Updated (#1061) * Added clone remote port option for bukkit, bungee and velocity * Added clone remote port option for sponge * Changed clone-remote-port description in config.yml * Update config.yml Updated config.yml to include a better description of the clone-remote-port option * Updated GeyserSpongePlugin An incorrect port was being edited before (remote instead of bedrock) * Update config.yml Co-authored-by: TeaNoDonuts --- .../org/geysermc/platform/bungeecord/GeyserBungeePlugin.java | 4 ++++ .../org/geysermc/platform/spigot/GeyserSpigotPlugin.java | 4 ++++ .../geysermc/platform/sponge/GeyserSpongeConfiguration.java | 5 +++++ .../org/geysermc/platform/sponge/GeyserSpongePlugin.java | 5 +++++ .../org/geysermc/platform/velocity/GeyserVelocityPlugin.java | 4 ++++ .../connector/configuration/GeyserConfiguration.java | 2 ++ .../connector/configuration/GeyserJacksonConfiguration.java | 2 ++ connector/src/main/resources/config.yml | 4 ++++ 8 files changed, 30 insertions(+) diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeePlugin.java b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeePlugin.java index 38d319e15..4e3ad5b90 100644 --- a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeePlugin.java +++ b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeePlugin.java @@ -87,6 +87,10 @@ public class GeyserBungeePlugin extends Plugin implements GeyserBootstrap { this.geyserConfig.getRemote().setAddress(javaAddr.getHostString()); } + if (geyserConfig.getBedrock().isCloneRemotePort()) { + geyserConfig.getBedrock().setPort(javaAddr.getPort()); + } + this.geyserConfig.getRemote().setPort(javaAddr.getPort()); } diff --git a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotPlugin.java b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotPlugin.java index 38141c520..759246df3 100644 --- a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotPlugin.java +++ b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotPlugin.java @@ -87,6 +87,10 @@ public class GeyserSpigotPlugin extends JavaPlugin implements GeyserBootstrap { geyserConfig.getRemote().setAddress(Bukkit.getIp()); } + if (geyserConfig.getBedrock().isCloneRemotePort()) { + geyserConfig.getBedrock().setPort(Bukkit.getPort()); + } + geyserConfig.getRemote().setPort(Bukkit.getPort()); this.geyserLogger = new GeyserSpigotLogger(getLogger(), geyserConfig.isDebugMode()); diff --git a/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeConfiguration.java b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeConfiguration.java index d56abe090..27c543268 100644 --- a/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeConfiguration.java +++ b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeConfiguration.java @@ -174,6 +174,11 @@ public class GeyserSpongeConfiguration implements GeyserConfiguration { return node.getNode("port").getInt(19132); } + @Override + public boolean isCloneRemotePort() { + return node.getNode("clone-remote-port").getBoolean(false); + } + @Override public String getMotd1() { return node.getNode("motd1").getString("GeyserMC"); diff --git a/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongePlugin.java b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongePlugin.java index 3151e973c..cfead6fdd 100644 --- a/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongePlugin.java +++ b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongePlugin.java @@ -111,6 +111,11 @@ public class GeyserSpongePlugin implements GeyserBootstrap { serverPort.setValue(javaAddr.getPort()); } + ConfigurationNode bedrockPort = config.getNode("bedrock").getNode("port"); + if (geyserConfig.getBedrock().isCloneRemotePort()){ + bedrockPort.setValue(serverPort.getValue()); + } + this.geyserLogger = new GeyserSpongeLogger(logger, geyserConfig.isDebugMode()); GeyserConfiguration.checkGeyserConfiguration(geyserConfig, geyserLogger); this.connector = GeyserConnector.start(PlatformType.SPONGE, this); diff --git a/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityPlugin.java b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityPlugin.java index 425aba183..974d4c4c9 100644 --- a/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityPlugin.java +++ b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityPlugin.java @@ -98,6 +98,10 @@ public class GeyserVelocityPlugin implements GeyserBootstrap { geyserConfig.getRemote().setAddress(javaAddr.getHostString()); } + if (geyserConfig.getBedrock().isCloneRemotePort()) { + geyserConfig.getBedrock().setPort(javaAddr.getPort()); + } + geyserConfig.getRemote().setPort(javaAddr.getPort()); this.geyserLogger = new GeyserVelocityLogger(logger, geyserConfig.isDebugMode()); diff --git a/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java b/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java index fd6916dcc..54a7630b7 100644 --- a/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java +++ b/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java @@ -86,6 +86,8 @@ public interface GeyserConfiguration { int getPort(); + boolean isCloneRemotePort(); + String getMotd1(); String getMotd2(); diff --git a/connector/src/main/java/org/geysermc/connector/configuration/GeyserJacksonConfiguration.java b/connector/src/main/java/org/geysermc/connector/configuration/GeyserJacksonConfiguration.java index 867de9adf..2c4a219b2 100644 --- a/connector/src/main/java/org/geysermc/connector/configuration/GeyserJacksonConfiguration.java +++ b/connector/src/main/java/org/geysermc/connector/configuration/GeyserJacksonConfiguration.java @@ -97,7 +97,9 @@ public abstract class GeyserJacksonConfiguration implements GeyserConfiguration public static class BedrockConfiguration implements IBedrockConfiguration { private String address; + @Setter private int port; + private boolean isCloneRemotePort; private String motd1; private String motd2; diff --git a/connector/src/main/resources/config.yml b/connector/src/main/resources/config.yml index 91f95e6ed..c587b21d9 100644 --- a/connector/src/main/resources/config.yml +++ b/connector/src/main/resources/config.yml @@ -13,6 +13,10 @@ bedrock: address: 0.0.0.0 # The port that will listen for connections port: 19132 + # Some hosting services change your Java port everytime you open the server, and require the same port to be used for Bedrock. + # This option makes the Bedrock port the same as the Java port every time you start the server. + # This option is for the plugin version only. + clone-remote-port: false # The MOTD that will be broadcasted to Minecraft: Bedrock Edition clients. Irrelevant if "passthrough-motd" is set to true motd1: "GeyserMC" motd2: "Another GeyserMC forced host."