From 79f9d4d1469ffed01cb150b58743b713c3107796 Mon Sep 17 00:00:00 2001 From: Florian Date: Tue, 16 Dec 2025 17:05:19 +0100 Subject: [PATCH 01/11] Update log4j2 and jline versions in pom.xml (#368) * Update log4j2 and jline versions in pom.xml * fix build --- pom.xml | 16 ++++++++++++---- .../dev/waterdog/waterdogpe/logger/Color.java | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index be45f451..f493ca1f 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ 17 1.0.0.CR3-SNAPSHOT 3.0.0.Beta11-SNAPSHOT - 2.17.1 - 3.23.0 + 2.25.2 + 3.30.6 4.1.101.Final @@ -112,9 +112,9 @@ 3.4.4 - jline + org.jline jline - 2.14.6 + ${jline.version} compile @@ -246,6 +246,14 @@ + + + org.jline:jline + + org/jline/terminal/impl/ffm/** + + + org.bstats diff --git a/src/main/java/dev/waterdog/waterdogpe/logger/Color.java b/src/main/java/dev/waterdog/waterdogpe/logger/Color.java index 1f2ff670..96471126 100644 --- a/src/main/java/dev/waterdog/waterdogpe/logger/Color.java +++ b/src/main/java/dev/waterdog/waterdogpe/logger/Color.java @@ -15,7 +15,7 @@ package dev.waterdog.waterdogpe.logger; -import org.fusesource.jansi.Ansi; +import org.jline.jansi.Ansi; import java.util.regex.Pattern; From e4c4eca0fa51320aed363e131b553ecb70fa9ddd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:56:50 +0000 Subject: [PATCH 02/11] Bump org.apache.logging.log4j:log4j-core from 2.25.2 to 2.25.3 Bumps org.apache.logging.log4j:log4j-core from 2.25.2 to 2.25.3. --- updated-dependencies: - dependency-name: org.apache.logging.log4j:log4j-core dependency-version: 2.25.3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f493ca1f..69b79825 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ 17 1.0.0.CR3-SNAPSHOT 3.0.0.Beta11-SNAPSHOT - 2.25.2 + 2.25.3 3.30.6 4.1.101.Final From c36576daff51db5b568a048ace02812302d603c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Dec 2025 07:25:44 +0000 Subject: [PATCH 03/11] Bump com.nimbusds:nimbus-jose-jwt from 9.37.2 to 9.37.4 Bumps [com.nimbusds:nimbus-jose-jwt](https://bitbucket.org/connect2id/nimbus-jose-jwt) from 9.37.2 to 9.37.4. - [Changelog](https://bitbucket.org/connect2id/nimbus-jose-jwt/src/master/CHANGELOG.txt) - [Commits](https://bitbucket.org/connect2id/nimbus-jose-jwt/branches/compare/9.37.4..9.37.2) --- updated-dependencies: - dependency-name: com.nimbusds:nimbus-jose-jwt dependency-version: 9.37.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 69b79825..184d30d6 100644 --- a/pom.xml +++ b/pom.xml @@ -196,7 +196,7 @@ com.nimbusds nimbus-jose-jwt - 9.37.2 + 9.37.4 From 84a210e1597eb21f5d9c7620ce49f9a49867cd9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Dec 2025 07:30:02 +0000 Subject: [PATCH 04/11] Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0 Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-lang3 dependency-version: 3.18.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 184d30d6..98a78010 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ org.apache.commons commons-lang3 - 3.12.0 + 3.18.0 compile From e21791b651b4c565aa2b0978f285e1259a1f0be1 Mon Sep 17 00:00:00 2001 From: Owen Howard Date: Mon, 5 Jan 2026 13:22:56 +0000 Subject: [PATCH 05/11] Don't eagerly resolve hostnames (#376) --- .../utils/config/serializer/InetSocketAddressConverter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java index 1e2737ea..dd6ea9d4 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java @@ -46,7 +46,7 @@ public Object fromConfig(Class type, Object object, ParameterizedType paramet String string = (String) object; String address = string.substring(0, string.lastIndexOf(":")); int port = Integer.parseInt(string.substring(string.lastIndexOf(":") + 1)); - return new InetSocketAddress(address, port); + return InetSocketAddress.createUnresolved(address, port); } @Override From 466214d7c18ca62545a7561cd9a767f249c26ee8 Mon Sep 17 00:00:00 2001 From: Owen Howard Date: Mon, 5 Jan 2026 13:51:44 +0000 Subject: [PATCH 06/11] Don't use getAddress() on InetSocketAddress Fixes issues from the previous PR where unresolved InetSocketAddresses return `getAddress()` as null, so `getHostString()` should be used to support both. --- src/main/java/dev/waterdog/waterdogpe/ProxyServer.java | 2 +- .../java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java | 2 +- .../utils/config/serializer/InetSocketAddressConverter.java | 2 +- .../utils/config/serializer/ServerEntryConverter.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java index fdf64af6..b538db06 100644 --- a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java +++ b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java @@ -237,7 +237,7 @@ private void boot() { this.bindChannels(bindAddress); for (Integer port : this.getConfiguration().getAdditionalPorts()) { - InetSocketAddress additionalBind = new InetSocketAddress(bindAddress.getAddress(), port); + InetSocketAddress additionalBind = new InetSocketAddress(bindAddress.getHostString(), port); this.bindChannels(additionalBind); } diff --git a/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java b/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java index 07b3e0d7..d7c8c713 100644 --- a/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java +++ b/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java @@ -655,7 +655,7 @@ public void sendToastMessage(String title, String content) { public void redirectServer(ServerInfo serverInfo) { Preconditions.checkNotNull(serverInfo, "Server info can not be null!"); TransferPacket packet = new TransferPacket(); - packet.setAddress(serverInfo.getPublicAddress().getAddress().getHostAddress()); + packet.setAddress(serverInfo.getPublicAddress().getHostString()); packet.setPort(serverInfo.getPublicAddress().getPort()); this.sendPacket(packet); } diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java index dd6ea9d4..a0fa64e1 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java @@ -35,7 +35,7 @@ public Object toConfig(Class type, Object object, ParameterizedType parameter return null; } InetSocketAddress address = (InetSocketAddress) object; - return address.getHostName() + ":" + address.getPort(); + return address.getHostString() + ":" + address.getPort(); } @Override diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java index 9a01b0d7..2a581fec 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java @@ -38,9 +38,9 @@ public ServerEntryConverter(InternalConverter internalConverter) { public Object toConfig(Class type, Object object, ParameterizedType parameterizedType) { Map map = new HashMap<>(); ServerEntry serverEntry = (ServerEntry) object; - map.put("address", serverEntry.getAddress().getAddress().getHostAddress() + ":" + serverEntry.getAddress().getPort()); + map.put("address", serverEntry.getAddress().getHostString() + ":" + serverEntry.getAddress().getPort()); if (serverEntry.getPublicAddress() != null && serverEntry.getPublicAddress() != serverEntry.getAddress()) { - map.put("public_address", serverEntry.getAddress().getAddress().getHostAddress() + ":" + serverEntry.getAddress().getPort()); + map.put("public_address", serverEntry.getAddress().getHostString() + ":" + serverEntry.getAddress().getPort()); } if (serverEntry.getServerType() != null) { map.put("server_type", serverEntry.getServerType().toString()); From 53a895815056adfeaddfdcf7449d94a2bf76211c Mon Sep 17 00:00:00 2001 From: Owen Howard Date: Wed, 7 Jan 2026 22:42:04 +0000 Subject: [PATCH 07/11] Force resolve bind socket addresses (#379) Netty doesn't resolve socket addresses during bind, so make sure they are (if they can be) Fixes #378 --- src/main/java/dev/waterdog/waterdogpe/ProxyServer.java | 1 + .../utils/config/serializer/ServerEntryConverter.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java index b538db06..a3de7000 100644 --- a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java +++ b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java @@ -229,6 +229,7 @@ private void boot() { } InetSocketAddress bindAddress = this.getConfiguration().getBindAddress(); + bindAddress = new InetSocketAddress(bindAddress.getHostString(), bindAddress.getPort()); this.logger.info("Binding to {}", bindAddress); if (this.getConfiguration().enableQuery()) { diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java index 2a581fec..ed0ac06b 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java @@ -40,7 +40,7 @@ public Object toConfig(Class type, Object object, ParameterizedType parameter ServerEntry serverEntry = (ServerEntry) object; map.put("address", serverEntry.getAddress().getHostString() + ":" + serverEntry.getAddress().getPort()); if (serverEntry.getPublicAddress() != null && serverEntry.getPublicAddress() != serverEntry.getAddress()) { - map.put("public_address", serverEntry.getAddress().getHostString() + ":" + serverEntry.getAddress().getPort()); + map.put("public_address", serverEntry.getPublicAddress().getHostString() + ":" + serverEntry.getPublicAddress().getPort()); } if (serverEntry.getServerType() != null) { map.put("server_type", serverEntry.getServerType().toString()); From be0bacad07b8e0bf17846ff80b830bf536021736 Mon Sep 17 00:00:00 2001 From: Metehan Gezer Date: Thu, 8 Jan 2026 01:58:37 +0300 Subject: [PATCH 08/11] Don't release latest to prerelease (#380) --- .github/workflows/maven-build.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index bcec1509..196ad5ba 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -12,6 +12,7 @@ jobs: build: env: DOCKER_DEPLOY: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/waterdog-2' }} + SHOULD_CREATE_LATEST: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest permissions: packages: write @@ -20,6 +21,15 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - name: Delete old latest release + if: ${{ env.SHOULD_CREATE_LATEST == 'true' }} + continue-on-error: true + run: | + gh release delete latest --yes + git push --delete origin latest || true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build uses: ./.github/actions/build with: @@ -28,7 +38,7 @@ jobs: deploy_repository: "waterdog-snapshots" deploy_username: ${{ secrets.DEPLOY_USERNAME }} deploy_password: ${{ secrets.DEPLOY_PASSWORD }} - create_prerelease: ${{ github.ref == 'refs/heads/master' }} + create_prerelease: false prerelease_name: "latest" - name: Docker Login From d02dcc396f6216dc55c62ed92b6f65195d8efb17 Mon Sep 17 00:00:00 2001 From: Metehan Gezer Date: Thu, 8 Jan 2026 02:08:59 +0300 Subject: [PATCH 09/11] Use a simpler approach for non-pre-release snapshot builds (#381) --- .github/actions/build/action.yml | 2 +- .github/workflows/maven-build.yml | 12 +----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index caa6a860..b6435a7a 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -67,7 +67,7 @@ runs: with: repo_token: "${{ inputs.repo_token }}" automatic_release_tag: "${{ inputs.prerelease_name }}" - prerelease: true + prerelease: false title: "Snapshot Build" files: | target/Waterdog.jar diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 196ad5ba..bcec1509 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -12,7 +12,6 @@ jobs: build: env: DOCKER_DEPLOY: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/waterdog-2' }} - SHOULD_CREATE_LATEST: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest permissions: packages: write @@ -21,15 +20,6 @@ jobs: - name: Checkout uses: actions/checkout@v2 - - name: Delete old latest release - if: ${{ env.SHOULD_CREATE_LATEST == 'true' }} - continue-on-error: true - run: | - gh release delete latest --yes - git push --delete origin latest || true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Build uses: ./.github/actions/build with: @@ -38,7 +28,7 @@ jobs: deploy_repository: "waterdog-snapshots" deploy_username: ${{ secrets.DEPLOY_USERNAME }} deploy_password: ${{ secrets.DEPLOY_PASSWORD }} - create_prerelease: false + create_prerelease: ${{ github.ref == 'refs/heads/master' }} prerelease_name: "latest" - name: Docker Login From 6dc7992dbbf9700e5e2c9cf8865d9f6fe057fafc Mon Sep 17 00:00:00 2001 From: Metehan Gezer Date: Thu, 8 Jan 2026 02:13:29 +0300 Subject: [PATCH 10/11] Update dependency version in README (#382) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad8db93c..301f9e2a 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ To compile WaterdogPE please visit our [COMPILING.md](COMPILING.md) guide. dev.waterdog.waterdogpe waterdog - 2.0.0-SNAPSHOT + 2.0.4-SNAPSHOT provided From a868254c628afdca859f572aa7a6d6cf8b691398 Mon Sep 17 00:00:00 2001 From: Buddelbubi <44944269+Buddelbubi@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:41:40 +0100 Subject: [PATCH 11/11] Undid breaking changes Why were those made?? They broke cloudnet --- src/main/java/dev/waterdog/waterdogpe/ProxyServer.java | 3 +-- .../java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java | 2 +- .../utils/config/serializer/InetSocketAddressConverter.java | 4 ++-- .../utils/config/serializer/ServerEntryConverter.java | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java index bf30762c..46be83a7 100644 --- a/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java +++ b/src/main/java/dev/waterdog/waterdogpe/ProxyServer.java @@ -244,7 +244,6 @@ private void boot() { } InetSocketAddress bindAddress = this.getConfiguration().getBindAddress(); - bindAddress = new InetSocketAddress(bindAddress.getHostString(), bindAddress.getPort()); this.logger.info("Binding to {}", bindAddress); if (this.getConfiguration().enableQuery()) { @@ -253,7 +252,7 @@ private void boot() { this.bindChannels(bindAddress); for (Integer port : this.getConfiguration().getAdditionalPorts()) { - InetSocketAddress additionalBind = new InetSocketAddress(bindAddress.getHostString(), port); + InetSocketAddress additionalBind = new InetSocketAddress(bindAddress.getAddress(), port); this.bindChannels(additionalBind); } diff --git a/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java b/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java index ca03c990..a5d49b4f 100644 --- a/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java +++ b/src/main/java/dev/waterdog/waterdogpe/player/ProxiedPlayer.java @@ -674,7 +674,7 @@ public void sendToastMessage(String title, String content) { public void redirectServer(ServerInfo serverInfo) { Preconditions.checkNotNull(serverInfo, "Server info can not be null!"); TransferPacket packet = new TransferPacket(); - packet.setAddress(serverInfo.getPublicAddress().getHostString()); + packet.setAddress(serverInfo.getPublicAddress().getAddress().getHostAddress()); packet.setPort(serverInfo.getPublicAddress().getPort()); this.sendPacket(packet); } diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java index 30d82d58..460c6eff 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/InetSocketAddressConverter.java @@ -35,7 +35,7 @@ public Object toConfig(Class type, Object object, ParameterizedType parameter return null; } InetSocketAddress address = (InetSocketAddress) object; - return address.getHostString() + ":" + address.getPort(); + return address.getHostName() + ":" + address.getPort(); } @Override @@ -46,7 +46,7 @@ public Object fromConfig(Class type, Object object, ParameterizedType paramet String string = (String) object; String address = string.substring(0, string.lastIndexOf(":")); int port = Integer.parseInt(string.substring(string.lastIndexOf(":") + 1)); - return InetSocketAddress.createUnresolved(address, port); + return new InetSocketAddress(address, port); } @Override diff --git a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java index ca85eaeb..b34899a1 100644 --- a/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java +++ b/src/main/java/dev/waterdog/waterdogpe/utils/config/serializer/ServerEntryConverter.java @@ -38,9 +38,9 @@ public ServerEntryConverter(InternalConverter internalConverter) { public Object toConfig(Class type, Object object, ParameterizedType parameterizedType) { Map map = new HashMap<>(); ServerEntry serverEntry = (ServerEntry) object; - map.put("address", serverEntry.getAddress().getHostString() + ":" + serverEntry.getAddress().getPort()); + map.put("address", serverEntry.getAddress().getAddress().getHostAddress() + ":" + serverEntry.getAddress().getPort()); if (serverEntry.getPublicAddress() != null && serverEntry.getPublicAddress() != serverEntry.getAddress()) { - map.put("public_address", serverEntry.getPublicAddress().getHostString() + ":" + serverEntry.getPublicAddress().getPort()); + map.put("public_address", serverEntry.getAddress().getAddress().getHostAddress() + ":" + serverEntry.getAddress().getPort()); } if (serverEntry.getServerType() != null) { map.put("server_type", serverEntry.getServerType());