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