From 1702b7fd2b78b563a13a1a437cb98cbe1344a1f5 Mon Sep 17 00:00:00 2001 From: Jonas Faber <72028327+Jonohas@users.noreply.github.com> Date: Sun, 26 Jul 2026 15:18:59 +0200 Subject: [PATCH] feat!: port proxy plugin to Velocity 4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Velocity 4.x artifacts are published for JVM 25, so the proxy module now compiles with release 25 (repo toolchain bumped to 25). Drop VPacketEvents support: its adapter needs velocity-proxy internals (JoinGamePacket/ServerDataPacket) that PaperMC no longer publishes for 4.x, and VPacketEvents itself has no Velocity 4 release. PacketEvents remains as the only packet adapter. CI builds only the proxy module; backend modules are unchanged from upstream — use upstream 1.4.1 release jars on backend servers. Refs upstream PR #263 --- .github/workflows/gradle.yml | 24 ++++++------- build.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- velocity/build.gradle.kts | 7 ++-- .../velocity/SignedVelocity.java | 1 - .../velocity/packet/PacketAdapter.java | 7 ++-- .../velocity/packet/VPacketEventsAdapter.java | 35 ------------------- 7 files changed, 23 insertions(+), 55 deletions(-) delete mode 100644 velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/VPacketEventsAdapter.java diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index e392bc49..2adf337d 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,6 +1,6 @@ name: Gradle Build -on: [push, pull_request] +on: [push, pull_request, workflow_dispatch] jobs: build: @@ -10,22 +10,22 @@ jobs: - name: Checkout Repository uses: actions/checkout@v7 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v5 with: - java-version: 21 + java-version: 25 distribution: 'temurin' cache: 'gradle' - - name: Build with Gradle - uses: nick-invision/retry@v4 - with: - timeout_minutes: 5 - max_attempts: 2 - command: ./gradlew clean build + # Velocity 4 port: only the proxy module is maintained in this fork. + # The backend modules (paper/fabric/sponge/minestom) are unchanged from + # upstream — use the upstream 1.4.1 release jars for backend servers. + - name: Build proxy plugin + run: ./gradlew :signedvelocity-proxy:build -x test --no-daemon + - name: Upload build artifact uses: actions/upload-artifact@v7 with: - name: SignedVelocity - path: build/SignedVelocity-*.jar - \ No newline at end of file + name: SignedVelocity-Proxy + path: build/SignedVelocity-Proxy-*.jar + if-no-files-found: error diff --git a/build.gradle.kts b/build.gradle.kts index 22c3755b..021dcd88 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ allprojects { } java { toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) + languageVersion.set(JavaLanguageVersion.of(25)) vendor.set(JvmVendorSpec.AZUL) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 355ba090..b9d94007 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ metadata.format.version = "1.1" [versions] # CompileOnly dependencies -velocity = "3.4.0-SNAPSHOT" +velocity = "4.1.0-SNAPSHOT" paper = "26.1.2.build.65-stable" minestom-server = "2025.10.05-1.21.8" minecraft = "1.21.9-rc1" diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index 987683bc..20ca0c35 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -7,16 +7,19 @@ plugins { dependencies { compileOnly(libs.velocity.api) - compileOnly(libs.velocity.proxy) annotationProcessor(libs.velocity.api) implementation(libs.bstats) compileOnly(libs.packetevents.velocity) - compileOnly(libs.vpacketevents) implementation(projects.signedvelocityShared) } tasks { + // Velocity 4.x artifacts are published for JVM 25 — this module must match, + // overriding the repo-wide release 21 set in the root build script. + withType { + options.release.set(25) + } build { dependsOn(shadowJar) } diff --git a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/SignedVelocity.java b/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/SignedVelocity.java index fcb0bc93..cbefc658 100644 --- a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/SignedVelocity.java +++ b/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/SignedVelocity.java @@ -26,7 +26,6 @@ version = Constants.VERSION, description = "Allows you to cancel or modify messages or commands from Velocity without synchronization problems", dependencies = { - @Dependency(id = "vpacketevents", optional = true), @Dependency(id = "packetevents", optional = true) } ) diff --git a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/PacketAdapter.java b/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/PacketAdapter.java index 153cc8aa..33b0af7b 100644 --- a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/PacketAdapter.java +++ b/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/PacketAdapter.java @@ -5,13 +5,14 @@ import java.util.Map; -public sealed interface PacketAdapter permits PacketEventsAdapter, VPacketEventsAdapter { +public sealed interface PacketAdapter permits PacketEventsAdapter { void register(); static void register(final Injector injector, final PluginManager pluginManager) { + // VPacketEvents support was dropped in the Velocity 4 port: its adapter + // required velocity-proxy internals that PaperMC no longer publishes for 4.x. final Map> adapters = Map.of( - "packetevents", PacketEventsAdapter.class, - "vpacketevents", VPacketEventsAdapter.class + "packetevents", PacketEventsAdapter.class // Probable support of protocolize? ); for (final var adapter : adapters.entrySet()) { diff --git a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/VPacketEventsAdapter.java b/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/VPacketEventsAdapter.java deleted file mode 100644 index 4c4061b2..00000000 --- a/velocity/src/main/java/io/github/_4drian3d/signedvelocity/velocity/packet/VPacketEventsAdapter.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.github._4drian3d.signedvelocity.velocity.packet; - -import com.google.inject.Inject; -import com.velocitypowered.api.event.AwaitingEventExecutor; -import com.velocitypowered.api.event.EventManager; -import com.velocitypowered.api.event.EventTask; -import com.velocitypowered.proxy.protocol.packet.JoinGamePacket; -import com.velocitypowered.proxy.protocol.packet.ServerDataPacket; -import io.github._4drian3d.signedvelocity.velocity.SignedVelocity; -import io.github._4drian3d.vpacketevents.api.event.PacketSendEvent; - -final class VPacketEventsAdapter implements PacketAdapter, AwaitingEventExecutor { - - @Inject - private EventManager eventManager; - @Inject - private SignedVelocity plugin; - - @Override - public void register() { - eventManager.register(plugin, PacketSendEvent.class, this); - } - - @Override - public EventTask executeAsync(final PacketSendEvent event) { - return EventTask.async(() -> { - if (event.getPacket() instanceof final ServerDataPacket serverData) { - serverData.setSecureChatEnforced(true); - } - if (event.getPacket() instanceof final JoinGamePacket joinPacket) { - joinPacket.setEnforcesSecureChat(true); - } - }); - } -}