AxiomPaperPlugin Folia port for MC 26.1.2 — fork of Moulberry/AxiomPaperPlugin (MIT)
  • Java 97.9%
  • Shell 2.1%
Find a file
admin_ekaii d3119c2022
Some checks failed
plugbench/bench plugbench gate success
plugbench / bench (push) Successful in 16m57s
Build / build (push) Failing after 3h1m56s
config: per-repo plugbench bench parameters
2026-05-06 09:39:49 +00:00
.forgejo/workflows ci: install plugbench-ekaii regression gate 2026-05-06 09:39:47 +00:00
.github/workflows Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
gradle Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
libs Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
src/main v0.1.6: do Chunk->LevelChunk conversion inside whenComplete callback 2026-05-03 23:20:33 +02:00
test-harness test-harness: add smoke-test harness for Folia plugin load validation 2026-05-01 20:26:23 +02:00
.gitignore Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
.plugbench.toml config: per-repo plugbench bench parameters 2026-05-06 06:21:07 +00:00
build.gradle.kts v0.1.6: do Chunk->LevelChunk conversion inside whenComplete callback 2026-05-03 23:20:33 +02:00
gradlew Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
gradlew.bat Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
LICENSE Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00
README.md Folia: dispatch annotation/blueprint upload + flesh out README 2026-05-01 20:23:44 +02:00
settings.gradle.kts Initial fork of Moulberry/AxiomPaperPlugin for Folia 26.1.2 port 2026-05-01 20:20:58 +02:00

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 in AxiomPaper.
  • 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 SetBlockBufferOperation are skipped (PoiManager is per-region; POI gets refreshed naturally during chunk ticks).
  • BlockEntity ops in the operation queue have WrongThreadException / TickThread fallbacks that mutate the chunk's blockEntities map directly.
  • playerPermissions, lastPlotBoundsForPlayers, noPhysicalTriggerPlayers, WorldExtension.extensions switched to ConcurrentHashMap because the per-tick task and packet handlers can now run on different region threads.
  • tick() no longer iterates Bukkit.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

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.