- Java 98%
- Shell 2%
|
Some checks failed
release.yml / folia.14: back to Axiom protocol 10 for client 6.0.0 (5.0.4-folia.14+26.2) (push) Failing after 0s
plugbench/bench plugbench gate failure
plugbench / bench (push) Failing after 5m40s
Build / build (push) Successful in 7m19s
release.yml / folia.14: back to Axiom protocol 10 for client 6.0.0 (5.0.4-folia.14+26.2) (release) Failing after 0s
Axiom client 6.0.0 (MC 26.2) speaks apiVersion 10 = upstream master's July 2026 protocol rework. Revert the folia.13 protocol-9 pin (which matched the old 5.5.0 client) and restore the folia.12 protocol-10 tree. Also drop upstream's leftover 'Got tunnel buffer' debug println. Verified by decompiling the 6.0.0 client jar: AxiomServerboundHello writes varint api=10, varint dataVersion, varint mcProtocolVersion, long handshakeId; enable/ServerConfig, tunnel framing (flags+zstd), set_buffer, set_block, request_chunk_data all byte-identical to upstream master e713010. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| gradle | ||
| libs | ||
| src/main | ||
| test-harness | ||
| .gitignore | ||
| .plugbench.toml | ||
| build.gradle.kts | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Axiom Paper Plugin — Folia port
Serverside component for Axiom, ported to Folia for Minecraft 26.1.2 (Paper API 26.1.2.build.53-stable, Folia API merged into paper-api as of 26.x).
This is a community fork of Moulberry/AxiomPaperPlugin (MIT license — see LICENSE). The original plugin runs on Paper but not on Folia; this fork makes the necessary scheduler and threading changes so the plugin loads and runs on a Folia (or Folia-derived, e.g. Luminol) server.
Compatibility
| Paper | Folia | Luminol 26.1.2 | |
|---|---|---|---|
Upstream Moulberry/AxiomPaperPlugin |
✅ | ❌ (refuses to load) | ❌ |
This fork (axiom-paper-folia) |
✅ (drop-in) | ✅ | ✅ (primary target) |
folia-supported: true is set in plugin.yml. The plugin still works on regular Paper.
What changed for Folia
Bukkit.getScheduler()→Bukkit.getGlobalRegionScheduler().runAtFixedRate(...)for the per-tick task inAxiomPaper.MinecraftServer#execute(...)from packet handlers →Bukkit.getGlobalRegionScheduler().execute(...).player.teleport(...)→player.teleportAsync(...)(TeleportPacketListener).- Per-entity ops (gamemode change, manipulate, delete) dispatch to the entity's
getScheduler(). - Spawn-entity dispatch goes to
Bukkit.getRegionScheduler()keyed on the destination chunk. - Blueprint upload file I/O moved to
Bukkit.getAsyncScheduler(). - POI updates inside
SetBlockBufferOperationare skipped (PoiManager is per-region; POI gets refreshed naturally during chunk ticks). - BlockEntity ops in the operation queue have
WrongThreadException/TickThreadfallbacks that mutate the chunk'sblockEntitiesmap directly. playerPermissions,lastPlotBoundsForPlayers,noPhysicalTriggerPlayers,WorldExtension.extensionsswitched toConcurrentHashMapbecause the per-tick task and packet handlers can now run on different region threads.tick()no longer iteratesBukkit.getOnlinePlayers(); it only walks the active/failed Axiom-player UUID sets.
Building
export JAVA_HOME=/path/to/jdk-25
./gradlew build
# output: build/libs/AxiomPaper-5.0.4-folia+26.1.2-all.jar
JDK 25 + Gradle 9.4.1 + paperweight-userdev with paper devBundle 26.1.2.build.53-stable. The build is offline-friendly: libs/CoreProtect-23.1.jar is fetched at CI time (CoreProtect's maven.playpro.com is Cloudflare-protected and rejects automated requests).
Repos
- Canonical:
forgejo.ekaii.fr/exo/axiom-paper-folia - Mirror:
github.com/uncaney/axiom-paper-folia
License
MIT — same as upstream. See LICENSE.
Original FAQ
Axiom works in singleplayer but not when I connect to a multiplayer server running the Axiom Paper Plugin. What gives?
First, the player must be an op on the server. If the player does not have op permissions, run /op <playername>. This player must then disconnect from the server and reconnect.
If you're using an alternative solution for permission management, you must give players the axiom.default permission.
If players continue to have issues, they can run the /whynoaxiom command for more information.