Skip to content

feat: support Minecraft 26.3 - #105

Open
twme-ai wants to merge 1 commit into
TWME-TW:mainfrom
twme-ai:feat/minecraft-26.3
Open

twme-ai wants to merge 1 commit into
TWME-TW:mainfrom
twme-ai:feat/minecraft-26.3

Conversation

@twme-ai

@twme-ai twme-ai commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds Minecraft 26.3 support.

Minecraft 26.3 needs no new block-data handling. Diffing paper-api 26.2 against 26.3, the only changes are:

  • org.bukkit.block.data.type.ShelfMushroom added. It only extends Ageable and Directional and declares no methods of its own, so the existing handlers already cover it.
  • The deprecated org.bukkit.block.data.type.PinkPetals interface removed. The plugin never referenced it (it already goes through FlowerBed).

Every block added in 26.3 maps onto interfaces the plugin already exposes:

Block BlockData Handled by
SHELF_MUSHROOM ShelfMushroom AgeableData, DirectionalData
POPLAR_* (log, wood, planks, slab, stairs, fence, gate, door, trapdoor, button, pressure plate, sign, hanging sign, sapling) existing interfaces existing handlers
*_POPLAR_LEAVES Leaves LeavesDistanceData, LeavesPersistentData
STRAW_BED Bed BedData, DirectionalData
*_WOOL_SLAB / *_CONCRETE_SLAB Slab SlabData
*_WOOL_STAIRS / *_CONCRETE_STAIRS Stairs StairsData

The cushions are the new Cushion entity, not blocks, so they carry no block data.

An audit of all 123 org.bukkit.block.data interfaces confirms every property-bearing interface is referenced by BlockDataSeparater. Only the BlockData base interface is unmapped, which is intended.

PacketEvents

packetevents-spigot 2.13.0 cannot load on Minecraft 26.3 — its NMS reflection comes back null and DebugStickPro fails to enable. PacketEvents merged 26.3 support on 2026-09-19 but has not released it, so this targets the 2.14.0-SNAPSHOT development build.

Since PacketEvents only publishes its unshaded modules to CodeMC, integration/packetevents reassembles the installable plugin JAR from the same artifacts the official release is built from (with Netty and JetBrains annotations excluded, matching the release). Once 2.14.0 is released, that fixture can be dropped and the version bumped back to a release.

Changes

  • paper-api → 26.3.build.33-alpha
  • packetevents-spigot → 2.14.0-SNAPSHOT
  • 26.3 added to the Paper and Folia Java 25 runtime matrices
  • README support range and PacketEvents requirement
  • version 0.5.3 → 0.5.4

Testing

Real servers, DebugStickPro 0.5.4 with PacketEvents 2.14.0-SNAPSHOT:

Server Result
Paper 26.3 (build 33) enables cleanly, no errors
Spigot 26.3 (official BuildTools) enables cleanly, no errors

Server-side block-data probe on Paper 26.3, driving BlockDataSeparater directly:

  • all 36 new 26.3 blocks with properties expose the expected property set, for example SHELF_MUSHROOM → Ageable + Directional, POPLAR_SHELF → Directional + Powerable + Waterlogged + SideChaining, STRAW_BED → Bed + Directional
  • full sweep of every block material: 1286 blocks, 876 editable, 410 with no properties, 0 failures

Regression with the new PacketEvents: Paper 1.19.4 and Folia 1.19.4 (Java 17, in-game tests), Paper 1.20.6, Paper 1.21.11 and Paper 26.2 all pass.

26.3 uses startup mode like the other 26.x rows because mineflayer has no 26.3 protocol data yet.

Pre-existing Spigot-only failures (not introduced here)

Testing on Spigot surfaced that some properties fail there, because the Spigot API diverges from the Paper API at the same Minecraft version. On Spigot 26.3 the Leaves, FlowerBed, Levelled and PointedDripstone lookups throw during separation: Spigot has no Leaves.getMaximumDistance(), Levelled.getMinimumLevel() or FlowerBed.getMinimumFlowerAmount(), and getThickness() returns PointedDripstone.Thickness rather than Speleothem.Thickness.

This is pre-existing and unrelated to 26.3 — the current main build (paper-api 26.2) shows the identical failures on Spigot 26.2, and the Spigot 26.2 and 26.3 APIs are the same for those classes. I left it out to keep this PR focused, but it deserves a follow-up if Spigot is meant to be fully supported, since the runtime matrix only runs Paper and Folia today.

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 <noreply@commandcode.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant