From 9317d961ac78235d52c3fc69912f9fad84644c04 Mon Sep 17 00:00:00 2001 From: twme-ai <299940106+twme-ai@users.noreply.github.com> Date: Tue, 22 Sep 2026 15:10:28 +0000 Subject: [PATCH] feat: support Minecraft 26.3 Minecraft 26.3 reuses every block-data property the plugin already exposes. The only API changes are the new ShelfMushroom interface, which only extends Ageable and Directional, and the removal of the deprecated PinkPetals interface, which the plugin never referenced. Every new 26.3 block (the POPLAR wood set, SHELF_MUSHROOM, STRAW_BED, and the wool and concrete slabs and stairs) maps onto interfaces that are already handled. An audit against the 26.3 API confirms every property-bearing BlockData interface is covered; only the BlockData base interface itself is unmapped, which is intended. PacketEvents 2.13.0 cannot load on 26.3, so the plugin needs the 2.14 line. No 2.14 release exists yet, so the build and the runtime tests use the 2.14.0 development build. - paper-api 26.3.build.33-alpha - packetevents-spigot 2.14.0-SNAPSHOT - add 26.3 to the Paper and Folia runtime matrices - reassemble the installable PacketEvents JAR from the CodeMC modules in the runtime tests, because only unshaded modules are published Co-authored-by: CommandCodeBot --- .github/workflows/maven.yml | 2 + README.md | 13 +++- integration/mineflayer/run-server-e2e.sh | 18 +++-- integration/packetevents/pom.xml | 92 ++++++++++++++++++++++++ pom.xml | 6 +- 5 files changed, 119 insertions(+), 12 deletions(-) create mode 100644 integration/packetevents/pom.xml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 6be840e..8f39207 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -83,6 +83,7 @@ jobs: 26.1.1:startup 26.1.2:startup 26.2:startup + 26.3:startup - name: folia Java 17 id: folia-java17 platform: folia @@ -110,6 +111,7 @@ jobs: cases: >- 26.1.2:startup 26.2:startup + 26.3:startup name: ${{ matrix.name }} timeout-minutes: 45 diff --git a/README.md b/README.md index f9add5e..b067e86 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ integration. > DebugStickPro requires > [PacketEvents](https://github.com/retrooper/packetevents) 2.13.0 or later. +> PacketEvents has no release with Minecraft 26.3 support yet, so 26.3 servers +> need the 2.14.0 development build. > > The plugin is under active development. Test updates on a non-production server > and report reproducible problems on the issue tracker. @@ -94,9 +96,9 @@ The server owner decides which commands and modes players may use. | Component | Requirement | | --- | --- | -| Server software | Spigot, Paper, or Folia from Minecraft 1.19.4 through 26.2. Paper is the primary and recommended platform. | +| Server software | Spigot, Paper, or Folia from Minecraft 1.19.4 through 26.3. Paper is the primary and recommended platform. | | Java runtime | The plugin targets Java 17. Run the Java version required by your chosen Minecraft server release. | -| Required plugin | [PacketEvents](https://github.com/retrooper/packetevents) 2.13.0 or later. | +| Required plugin | [PacketEvents](https://github.com/retrooper/packetevents) 2.13.0 or later. Minecraft 26.3 requires the 2.14.0 development build; 2.13.0 cannot load on 26.3. | | Optional plugins | CoreProtect and PlaceholderAPI. | VirtualEntities is bundled inside DebugStickPro and does not need to be installed @@ -223,7 +225,7 @@ for custom locales, from English. Existing translations are preserved. | Symptom | Check | | --- | --- | -| DebugStickPro does not enable | Confirm PacketEvents 2.13.0 or later is installed and enabled first. Check that the server and Java versions match the support table. | +| DebugStickPro does not enable | Confirm PacketEvents 2.13.0 or later is installed and enabled first. On Minecraft 26.3, PacketEvents must be 2.14.0 or later. Check that the server and Java versions match the support table. | | The stick does nothing | Hold a plugin-issued stick in the main hand; verify `debugstickpro.use`, world lists, block filters, and region protection. | | Copy or Freeze mode is skipped | Grant `debugstickpro.mode.copy` or `debugstickpro.mode.freeze`. Grant `debugstickpro.mode` as well when the player uses the mode command. | | A property is missing | Check `BlockDataFilter`, its per-type bypass permission, and `AllowUnsafeBisectedData`. Some properties are intentionally unavailable for safety. | @@ -239,6 +241,11 @@ versions also run in-game command, item, display, locale, and mode tests. Spigot protocol checkpoints are tested separately with the official BuildTools. Paper remains the primary platform. +Because PacketEvents only publishes its unshaded modules, the runtime tests +reassemble the installable PacketEvents plugin JAR from the same artifacts the +official release is built from (`integration/packetevents`). Set +`DSP_E2E_PACKETEVENTS_VERSION` to test a different PacketEvents version. + ## Building from source Building requires JDK 25; the produced plugin JAR targets Java 17. diff --git a/integration/mineflayer/run-server-e2e.sh b/integration/mineflayer/run-server-e2e.sh index 78fa344..fd31701 100755 --- a/integration/mineflayer/run-server-e2e.sh +++ b/integration/mineflayer/run-server-e2e.sh @@ -13,9 +13,9 @@ readonly TEMP_DIR="$(mktemp -d)" readonly SERVER_DIR="${TEMP_DIR}/server" readonly CACHE_DIR="${DSP_E2E_CACHE:-${HOME}/.cache/debugstickpro-e2e}" readonly SERVER_JAR="${DSP_E2E_SERVER_JAR:-${CACHE_DIR}/${PLATFORM}-${MINECRAFT_VERSION}.jar}" -readonly PACKETEVENTS_JAR="${CACHE_DIR}/packetevents-spigot-2.13.0.jar" -readonly PACKETEVENTS_URL="https://github.com/retrooper/packetevents/releases/download/v2.13.0/packetevents-spigot-2.13.0.jar" -readonly PACKETEVENTS_SHA256="6d9ece0d87ee727a79a20b7ffbd432021609c6f52bafcb654fc2d3e9b6f064c5" +readonly PACKETEVENTS_VERSION="${DSP_E2E_PACKETEVENTS_VERSION:-2.14.0-SNAPSHOT}" +readonly PACKETEVENTS_JAR="${CACHE_DIR}/packetevents-spigot-${PACKETEVENTS_VERSION}.jar" +readonly PACKETEVENTS_FIXTURE="${PROJECT_DIR}/integration/packetevents/pom.xml" SERVER_PID="" cleanup() { @@ -58,10 +58,16 @@ else echo "${server_sha256} ${SERVER_JAR}" | sha256sum --check --status fi -if [[ ! -f "${PACKETEVENTS_JAR}" ]] || ! echo "${PACKETEVENTS_SHA256} ${PACKETEVENTS_JAR}" | sha256sum --check --status; then - curl --fail --silent --show-error --location "${PACKETEVENTS_URL}" --output "${PACKETEVENTS_JAR}" +if [[ ! -f "${PACKETEVENTS_JAR}" ]]; then + # PacketEvents only publishes its unshaded modules, so the installable plugin + # JAR is reassembled from the same artifacts the official release uses. + mvn -B -q -f "${PACKETEVENTS_FIXTURE}" \ + -Dpacketevents.version="${PACKETEVENTS_VERSION}" \ + -Doutput.jar="${TEMP_DIR}/packetevents.jar" \ + package + unzip -l "${TEMP_DIR}/packetevents.jar" plugin.yml >/dev/null + mv "${TEMP_DIR}/packetevents.jar" "${PACKETEVENTS_JAR}" fi -echo "${PACKETEVENTS_SHA256} ${PACKETEVENTS_JAR}" | sha256sum --check --status find_plugin_jars() { find "${PROJECT_DIR}/target" -maxdepth 1 -type f \ diff --git a/integration/packetevents/pom.xml b/integration/packetevents/pom.xml new file mode 100644 index 0000000..601867d --- /dev/null +++ b/integration/packetevents/pom.xml @@ -0,0 +1,92 @@ + + + 4.0.0 + + dev.twme.debugstickpro.integration + packetevents-plugin + 1.0.0 + jar + + DebugStickPro PacketEvents test fixture + + + Builds the installable PacketEvents plugin JAR used by the server + integration tests. PacketEvents only publishes its unshaded modules to + CodeMC, so the shaded JAR that a server installs is reassembled here + from the same artifacts the official release is built from. + + + + 2.14.0-SNAPSHOT + ${project.build.directory}/packetevents-plugin.jar + UTF-8 + + + + + codemc-releases + https://repo.codemc.io/repository/maven-releases/ + + + codemc-snapshots + https://repo.codemc.io/repository/maven-snapshots/ + + + + + + com.github.retrooper + packetevents-spigot + ${packetevents.version} + + + + io.netty + * + + + org.jetbrains + annotations + + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.2 + + + package + + shade + + + ${output.jar} + false + + + *:* + + META-INF/MANIFEST.MF + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + module-info.class + META-INF/versions/*/module-info.class + + + + + + + + + + diff --git a/pom.xml b/pom.xml index d98cbcb..7ebe78c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.twme DebugStickPro - 0.5.3 + 0.5.4 jar DebugStickPro @@ -14,7 +14,7 @@ 25 17 - 26.2.build.112-stable + 26.3.build.33-alpha 5.2.0 4.26.1 UTF-8 @@ -153,7 +153,7 @@ com.github.retrooper packetevents-spigot - 2.13.0 + 2.14.0-SNAPSHOT provided