Skip to content

Upgrade to Adventure 5.x and deprecate legacy Spigot (pre-native-Adventure) support #161

Description

@Travja

Background

Dependabot has opened PRs bumping net.kyori:adventure-api (#144) and net.kyori:adventure-text-minimessage (#155) to 5.2.0. Both fail CI at test time:

  • NoClassDefFoundError: net.kyori.adventure.util.Buildable$Builder — removed in Adventure 5.0 (Kyori's own 5.2.0 changelog calls this out as a binary-compat break for code compiled against 4.x running against 5.x, which 5.2.0 only partially restores).
  • IncompatibleClassChangeError: class org.bukkit.inventory.meta.BookMeta cannot extend sealed interface net.kyori.adventure.inventory.Book
  • NoSuchMethodError: net.kyori.adventure.util.Services.service(...) — signature changed in 5.x.

All three trace back to MockBukkit bundling Adventure 4.x internally, colliding with the project's own Adventure 5.x classes at test time.

Why this isn't a quick bump

codex-plugin depends on net.kyori:adventure-platform-bukkit:4.4.1 to bridge the shaded/relocated Adventure component model down to plain Bukkit/Spigot (pre-native-Adventure) servers — this is required to support the older NMS modules (codex-nms-v1_16_5 through the pre-Paper-native line).

adventure-platform-bukkit (and the Bukkit/Spigot/BungeeCord/Sponge-API-7 platform bridges generally) are no longer maintained. The KyoriPowered/adventure-platform repo was archived and handed to PaperMC; there is no 5.x-compatible release and none is coming — Kyori's docs explicitly say the team no longer supports these platform bridges. Paper's own plugin API now exposes Adventure natively, which is presumably why the standalone bridge was retired.

Net effect: adventure-api/adventure-text-minimessage cannot move to 5.x while codex still supports servers that predate Paper's native Adventure exposure, because there's no compatible platform bridge to pair with 5.x on those servers.

What needs to happen

  1. Decide how far back codex needs to keep supporting plain/legacy Spigot and pre-native-Adventure Paper builds. If we can drop that support, the shaded adventure-platform-bukkit bridge goes away entirely and we consume Adventure directly via the platform's native Component API.
  2. If we keep some legacy support, evaluate what it'd take to maintain a private fork/shim of the Bukkit platform bridge against Adventure 5.x — an ongoing maintenance cost, not a one-time fix.
  3. Once the support matrix is settled, upgrade adventure-api, adventure-platform-bukkit (or its replacement/removal), and adventure-text-minimessage together in one pass, and confirm MockBukkit's test harness is compatible with whatever Adventure version we land on.
  4. Add a Dependabot ignore rule for major-version bumps on net.kyori:adventure-* in the meantime, so Dependabot stops proposing upgrades that are structurally blocked until this is resolved.

Related PRs

Both should stay closed/on hold until the support-matrix decision above is made.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions