• v0.6.0+26.2 4031c04318

    admin_ekaii released this 2026-08-09 18:25:49 +00:00 | 1 commits to main since this release

    CoreProtect support, contributed by @UPSOKen (PR #2, first external contribution, thanks!). Paste block changes are recorded under the initiating player (#litematica for console), WorldEdit-style removal then placement so /co rollback works; unchanged blocks are skipped. Fail-open by design: no CoreProtect, an API older than v10, or a mid-paste failure all degrade to a clean no-op without touching the paste. New logging.coreprotect toggle (default true; a 4.19M-block paste goes from 5.4s to 7.1s with logging on). Note for 26.2 servers: stock CoreProtect CE 24.0 refuses MC 26.2 and disables itself, so a dev or patched build is needed for records; the hook stays dormant otherwise (verified). Also bumped to the Paper 26.2 stable dev bundle (build 111). Validated on Paper 26.2 + Folia 26.2: unit suite, boot/paste/save smokes with and without CoreProtect, DB-level attribution and replacement checks, stress paste with logging active on region threads, zero errors.

    sha256(LitematicaFolia-0.6.0+26.2-all.jar) = 63b838754daeb39e9390fb2192ea5b514867fa43517b37019de7e1a948c4008d

    Downloads
  • v0.5.1+26.2 30c320bb9a

    admin_ekaii released this 2026-07-18 18:17:17 +00:00 | 9 commits to main since this release

    Fixes server-side paste hanging forever on Leaves-derived bases (Lophine): the base protocol core claimed servux:litematics/servux:structures at the packet-decode layer even with litematics-enabled=false, silently dropping every C2S payload before the Bukkit Messenger. LeavesChannelReclaim now evicts the base codecs at bridge enable (verified decode->null). Inbound C2S logging is configurable (protocol.logInbound / logInboundHex). Validated end-to-end with ProtocolBot against the Lophine 26.2 jar (paste complete, 64 blocks, 0 err).

    sha256(LitematicaFolia-0.5.1+26.2-all.jar) = 176a744de733e81ee16416abb386d4d7a07f039de3a7e614b7c037571ed35b6a

    Downloads
  • v0.5.0+26.2 d1691c21c3

    v0.5.0+26.2: Minecraft 26.2 port
    All checks were successful
    Build / build (push) Successful in 1m37s
    Stable

    admin_ekaii released this 2026-07-18 11:05:16 +00:00 | 10 commits to main since this release

    Minecraft 26.2 port + save origin-normalization

    Port

    • Dev bundle 26.2.build.62-beta (no stable channel yet), api-version 26.2, JDK 25.
    • Single NMS drift fixed: EntityType.loadEntityRecursive via TagValueInput wrap.
    • NmsBridge26_2 + candidate-list bridge factory.
    • PacketEvents 2.7.0 → 2.13.0 (2.7 cannot parse 26.2 version strings → Easy Place V3 was silently dead). Shades kyori adventure-nbt + examination-* (Paper does not expose them).
    • Servux wire format re-verified vs upstream 26.2-0.11.1: litematics PROTOCOL_VERSION=1, structures =2: unchanged. Protocol-bot on 776.

    The v0.3.0 "0 blocks after paste" bug was a misdiagnosis

    No chunk staleness ever existed: the fixture bakes region Position=(0,64,0) and paste follows world = origin + region Position: the repro saved the wrong box. Paste now logs each region's effective world placement, and /litematica save writes origin-normalized regions (Position=(0,0,0)) so save→paste round-trips land where commanded.

    Validation

    • 62 unit tests green (2 stale word-aligned PackedLongArray tests corrected; they had been red since the compact codec landed).
    • Source-built Folia ver/26.2.x: load / paste / save round-trip / Servux Direct Paste end-to-end (protocol 776): all PASS.
    • Lophine 26.2-917b2cf: load / paste / save PASS. ⚠️ Servux bridge CANNOT work on Leaves-lineage servers (Lophine included): their core natively implements Servux and consumes servux:* payloads before Bukkit plugins see them, even config-disabled. Commands/paste/save unaffected.

    For 26.1.x servers use the v0.4.x releases.

    Downloads
  • v0.4.2+26.1.2 4b8701495a

    v0.4.2+26.1.2
    Some checks failed
    Build / build (push) Has been cancelled
    Stable

    admin_ekaii released this 2026-07-02 00:41:32 +00:00 | 12 commits to main since this release

    Fixed: PasteOperation semaphore deadlock (Folia region self-deadlock)

    Completes the v0.4.1 fix, which only hopped the pass-1 dispatch loop off the region tick thread.

    Root cause. The pass-2 loop (pass1All.thenCompose(...)) and the deferred-physics sweep loop (pass2All.thenCompose(...)) used a plain (non-async) thenCompose. That runs its body on the thread that completed the upstream future; completed by done.complete(null) inside FoliaCompat.runOnRegion, i.e. a Folia region tick thread. Those loops then called the blocking acquireSlot() on that region thread. When the same region still had more pending chunk tasks than free CHUNK_THROTTLE permits, the region parked in Semaphore.acquire() waiting for permits only it could release → self-deadlock. Watchdog logged Tick region … has not responded indefinitely without crashing; cumulative across Overworld + Nether. On creaclone a region was stuck ~116 h before a manual restart (issue #1); stacks at PasteOperation.java:293 (pass 2) and :345 (sweep).

    Fix.

    1. Both continuation loops now run via thenComposeAsync(..., offRegionExecutor) (Folia async pool / Paper async worker) → every acquireSlot() runs off-region; a blocked dispatch thread can no longer park a region.
    2. acquireSlot() now uses tryAcquire(60 s) and reports whether a permit was taken; a timeout dispatches the chunk unthrottled + logs instead of blocking forever. The releasedOnce guard is seeded so an untaken permit is never over-released.

    No config/schema change vs 0.4.1; in-place drop-in. Normal-load behaviour (32 in-flight chunk-task throttle) unchanged.

    Fixes #1.

    Downloads
  • v0.4.1+26.1.2 aa976eb1b1

    v0.4.1+26.1.2
    All checks were successful
    Build / build (push) Successful in 30s
    Stable

    admin_ekaii released this 2026-05-28 13:38:11 +00:00 | 13 commits to main since this release

    Fix region tick-thread deadlock in Direct Paste (creaclone crash 2026-05-28). Hops dispatch loop to async scheduler; adds per-player concurrent-paste gate. See CHANGELOG.md.

    Downloads
  • v0.3.0 598f213f37

    v0.3.0: save-v2 + BulkRequest + Easy Place V3 (gated)
    All checks were successful
    Build / build (push) Successful in 42s
    Stable

    admin_ekaii released this 2026-05-24 17:41:34 +00:00 | 22 commits to main since this release

    See HANDOFF.md + release notes in commit message

    Downloads
  • v0.3.0+26.1.2 598f213f37

    v0.3.0: save-v2 + BulkRequest + Easy Place V3 (gated)
    All checks were successful
    Build / build (push) Successful in 42s
    Stable

    admin_ekaii released this 2026-05-24 17:40:10 +00:00 | 22 commits to main since this release

    v0.3.0+26.1.2

    What landed (3 parallel agents)

    • save-v2 NMS impl: extractTileEntityNbt / extractEntityNbt / extractPendingBlockTicks / extractPendingFluidTicks. /litematica save now collects TE + entities + pending ticks. Known bug: block iteration via World#getBlockAt returns 0 blocks after a successful paste; chunk snapshot staleness across region threads; fix TODO.
    • P12 Servux BulkRequest fulfillment: BlockEntityRequestHandler, EntityRequestHandler, BulkNbtRequestHandler + RateLimiter. Servux types 3/4/7 → 5/6/10+11 via PacketSplitter.
    • P13 Easy Place V3 via PacketEvents: EasyPlaceListener + Decoder. Gated by protocol.enableEasyPlace=false default. PE 2.7.0 fails to parse Luminol-local SNAPSHOT version strings; should work on real Luminol releases. Gracefully disabled on load failure.
    • Async paste parse: /litematica paste reads + parses off the command thread via FoliaCompat.runAsync. Fixes Folia Watchdog ERROR on 3.5+ MiB schematics.

    Verified

    • Build green; 62 tests pass (was 46)
    • Direct Paste end-to-end via Java protocol bot; paste complete: 64 blocks, 0 err in 219ms
    • Plugin enable/disable clean
    • Jar 3.1 MiB (shaded with PacketEvents 2.7.0)

    Not yet verified (real-client smoke)

    • Direct Paste from a vanilla Litematica + Servux client (the wire format is byte-aligned with upstream Servux 26.1.2-0.10.2, but only the Java bot has run it end-to-end)
    • Easy Place V3 with X-fractional encoding (no real-client test)
    • BulkRequest flow with a live client requesting bulk NBT
    • Save round-trip (KNOWN BUG: 0 blocks captured)

    Compatibility

    • Paper/Folia 26.1.2+, JDK 25
    • Litematica Fabric 0.27.6 maruohon (verified: has full Servux client integration)

    Assets

    • LitematicaFolia-0.3.0+26.1.2-all.jar (3.1 MiB)
    Downloads
  • v0.2.0+26.1.2 3d3760aee6

    v0.2.0: Servux Direct Paste validated
    All checks were successful
    Build / build (push) Successful in 27s
    Stable

    admin_ekaii released this 2026-05-24 14:39:29 +00:00 | 24 commits to main since this release

    v0.2.0+26.1.2: Servux Direct Paste validated

    What landed

    • P11a; wire format byte-for-byte aligned with upstream Servux 26.1.2-0.10.2. 7 discrepancies fixed (metadata over-specification, ChunkPos packed-long, DirectPasteHandler rewrite, PacketSplitter, Easy Place misconception, channel aliases). Full spec at SERVUX_WIRE_FORMAT.md.
    • P11b; autonomous end-to-end smoke. Headless Java protocol bot (test-harness/protocol-bot/ProtocolBot.java) drives MC 26.1.2 (proto 775) login → config → play → Servux Direct Paste. Reproducible PASS: paste complete: 64 blocks, 0 TE, 0 entities, 0 err in 219ms.
    • P11c; local Fabric client harness. test-harness/fabric-client/ installs Fabric Loader 0.19.2 + MC 1.21.11 + Litematica 0.26.8 + MaLiLib + Fabric API for visual smoke. Servux is server-only; no client-side mod required.
    • 10 new ServuxByteCompatibilityTest cases. Byte equality with hand-computed reference sequences. Total tests now 46.

    Compatibility

    • Paper/Folia 26.1.2+
    • JDK 25
    • Works with any vanilla Litematica client (the Direct Paste happens via Servux protocol, which Litematica speaks natively when paired with a Servux server)

    Activation

    Default is still opt-in. To expose Direct Paste on a server:

    1. enableServuxBridge: true in plugins/LitematicaFolia/config.yml
    2. /litematica reload
    3. Restart not required.

    Assets

    • LitematicaFolia-0.2.0+26.1.2-all.jar (129 KiB); drop in plugins/
    Downloads
  • v0.1.0+26.1.2 3820f2d813

    v0.1.0: first release
    All checks were successful
    Build / build (push) Successful in 22s
    Stable

    admin_ekaii released this 2026-05-24 03:16:55 +00:00 | 32 commits to main since this release

    LitematicaFolia 0.1.0 for Minecraft 26.1.2: first public release.

    Highlights

    • Read .litematic v6/v7 (gzip NBT); palette, packed block states, tile entities, entities, pending ticks
    • /litematica Brigadier command tree: paste, save (blocks only v1), materials, list, info, cancel, reload
    • Folia-safe paste via per-chunk RegionScheduler dispatch (the axiom-paper-folia recipe), two-pass observersLast, deferred physics sweep
    • Cooperative /litematica cancel [ticket]: flips an AtomicBoolean checked between writes
    • Paper 26.1.2 NMS bridge: loadTileEntityNbt, spawnEntityFromNbt, scheduled block/fluid ticks, DataFixerUpper, no-op fallback
    • Servux-compatible network bridge (off by default); wire-level compatible with vanilla Litematica EasyPlace V3
    • Smoke + paste-smoke harness PASS on Luminol 26.1.2
    • 256x64x256 (≈4.2M cells) stress fixture + harness

    Status

    • Smoke harness: PASS
    • Paste smoke (real .litematic paste via RCON): PASS
    • Stress smoke: see CHANGELOG.md
    • Build: LitematicaFolia-0.1.0+26.1.2-all.jar (~128 KiB)

    Limits / open work

    • /litematica save is blocks-only; TE/entities/pending-ticks not yet serialised
    • FAWE adapter (Phase 3) on hold; mvn.intellectualsites.com NXDOMAIN
    • Servux bridge wire-tested but not validated against a real Litematica client
    • See CHANGELOG.md for full changelog and DISK_USAGE.md for sizing guidance
    Downloads