• v0.1.6-folia+26.1.2 bf23592a85

    AxiomPaper 5.0.4-folia.6 (MC 26.1.2)
    All checks were successful
    Build / build (push) Successful in 2m0s
    Stable

    admin_ekaii released this 2026-05-03 21:20:33 +00:00 | 54 commits to main since this release

    Folia port of AxiomPaperPlugin for MC 26.1.2.

    Fixes since v0.1.1:

    • v0.1.2: try/catch getBlockEntity on both SetBlockBuffer and RequestChunks
    • v0.1.3: updateBlockEntityTicker reflection guard
    • v0.1.4: verbose mode + netty exceptionCaught
    • v0.1.5: hop getChunkAtAsync to AsyncScheduler
    • v0.1.6: Chunk->LevelChunk conversion inside whenComplete callback
    Downloads
  • v0.1.1-folia+26.1.2 3487194cdf

    v0.1.1 — fix getCurrentWorldData NPE on Folia
    All checks were successful
    Build / build (push) Successful in 1m59s
    Stable

    admin_ekaii released this 2026-05-03 20:00:21 +00:00 | 59 commits to main since this release

    Production crash fix. Players using Axiom paste/fill on creaekaii (May 2026) were getting kicked with:

    An error occurred while processing operation:
    Cannot read field "capturedTileEntities" because the return value of
    "ServerLevel.getCurrentWorldData()" is null
    

    Root cause: SetBlockBufferOperation runs on the global region tick. Block-entity ops on chunks owned by other regions go through Paper's getCurrentWorldData(), which returns null off the owning region's tick → NPE on .capturedTileEntities. v0.1.0's isFoliaThreadException only caught WrongThreadException/TickThread, so this NPE escaped to OperationQueue.tick()'s catch-all and kicked the player.

    Fix: isFoliaThreadException now also recognises NPEs whose message mentions getCurrentWorldData or capturedTileEntities. The existing direct-chunk.blockEntities fallback path is reused. OperationQueue.tick() catch-all now logs the full stack trace before kicking, for future debugging.

    Validated: build green + smoke harness PASS over 25s + 6 rcon commands on Luminol 26.1.2.

    Drop-in upgrade. Same plugin.yml, same compat surface as v0.1.0.

    Downloads
  • v0.1.0-folia+26.1.2 acf0e57575

    v0.1.0 — initial Folia port for MC 26.1.2
    All checks were successful
    Build / build (push) Successful in 1m58s
    Stable

    admin_ekaii released this 2026-05-01 18:28:56 +00:00 | 60 commits to main since this release

    Initial Folia port of Moulberry/AxiomPaperPlugin for Minecraft 26.1.2.

    What works

    • Plugin loads on Folia with folia-supported: true
    • Per-tick task uses GlobalRegionScheduler instead of Bukkit.getScheduler
    • Block-buffer paste path goes through GlobalRegionScheduler with POI/blockEntity Folia-thread fallbacks
    • Per-entity dispatch for gamemode / manipulate / delete (entity scheduler)
    • Per-chunk dispatch for entity spawns (region scheduler)
    • teleportAsync for player teleports
    • AsyncScheduler for blueprint file I/O
    • Verified: build green + smoke harness PASS over 25 s post-load with regions ticking at 20 TPS, no WrongThreadException, no Plugin … is not Folia compatible

    Build target

    • paper-api 26.1.2.build.53-stable (Folia API merged into paper-api in 26.x)
    • JDK 25, Gradle 9.4.1

    Known limitations

    • SetBlockPacketListener (single-block click placement) is unchanged from upstream — should work for placements within the player's region; cross-region click placements may throw on Folia. Block-buffer paste (the heavy path) is properly dispatched.
    • No live Axiom-client packet test in the smoke harness (only plugin-load + tick health). Real-world testing welcome.

    Files

    • AxiomPaper-5.0.4-folia+26.1.2-all.jar — drop-in plugin jar (shadowed, ~6.3 MB)
    Downloads