Skip to content

Rewrite for Paper 26 with display entities and Gradle#1

Merged
TypeThe0ry merged 2 commits into
masterfrom
codex/paper-26-display-performance
Jul 12, 2026
Merged

Rewrite for Paper 26 with display entities and Gradle#1
TypeThe0ry merged 2 commits into
masterfrom
codex/paper-26-display-performance

Conversation

@TypeThe0ry

Copy link
Copy Markdown
Member

What changed

  • Target Paper 26.1.2 on Java 25 and compile-check the same source set against Paper 26.2.
  • Replace the Maven multi-module build with Gradle 9.6.1, Shadow, a pinned wrapper checksum, reproducible archives, and architecture guards.
  • Delete the legacy per-version NMS/CraftBukkit modules and runtime version-dispatch layer.
  • Replace packet-backed Armor Stands with native Paper ItemDisplay and TextDisplay entities.
  • Add revision-coalesced display synchronization, per-viewer showEntity/hideEntity visibility, chunk/entity lifecycle recovery, and reload reconciliation.
  • Rework dropped-item labels around spawn/load/unload events and native nearby-entity queries instead of recurring world/player Cartesian scans.
  • Replace the old configuration library with Sparrow YAML 1.0.7 and immutable flattened snapshots for O(1) hot-path reads.
  • Remove obsolete async entity access and polling, use a bounded executor for I/O/database work, and share allocation-light per-tick player chunk snapshots.
  • Migrate user-facing text to Adventure and modern Paper APIs.

Only sparrow-yaml is included. The metadata, reflection, NBT, heart, and Redis broker modules either duplicate Paper 26 APIs, reintroduce NMS/version coupling, or are unrelated to this single-server render path.

Why

The previous architecture depended on dozens of version-specific NMS implementations, raw entity metadata packets, synthetic entities, and high-frequency polling. That made upgrades fragile and caused work to scale with entity/player combinations. This rewrite uses Paper-owned entities and event/revision-driven state so stable displays do no recurring packet work.

Impact

This is intentionally a breaking platform reset:

  • Supported: Paper 26.1.2 and 26.2
  • Required: Java 25
  • Unsupported: older Minecraft versions, Spigot, and Folia
  • Existing commands, preferences, and the main configuration layout are retained.

Validation

  • gradlew.bat clean check shadowJar --warning-mode all
  • Forced compilation against Paper 26.1.2 and Paper 26.2
  • 7 JUnit regression tests
  • Static rejection of NMS, CraftBukkit, Armor Stand, legacy scheduler/YAML, and async timer patterns
  • Shadow JAR inspection confirms Sparrow relocation and no legacy NMS/packet dependencies
  • Runtime dependency graph contains only net.momirealms:sparrow-yaml:1.0.7

Review notes

No live Paper server visual pass was run in this environment. Before merging, please verify item transforms, text billboard offsets, and interaction animations in game. Paper 26.2 is currently compile-checked against its alpha API coordinate.

@TypeThe0ry
TypeThe0ry marked this pull request as ready for review July 12, 2026 08:27
@TypeThe0ry
TypeThe0ry merged commit 392a52d into master Jul 12, 2026
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.

2 participants