Releases: chapmanjw/minecraft-java-fabric-claude-plugin
Release list
v1.1.0
Tracks the MCP server's 1.1.0 release. Two of that release's tool changes break
skills written against the old behaviour, and one documented recipe stopped working
outright, so this is a correctness pass over the skills and harness rather than new
capability.
Changed
- The event verification recipe no longer subscribes to events that do not exist.
events_subscribenow rejects the 11 event types the server declares but never
emits, and the rejection covers the whole call — one stale name takes the valid
types in the same array with it. The deliverable set isblock.break,block.use,
player.chat,player.join,player.leave, and the fiveserver.*lifecycle
events. system-redstone/reference/verification.md: the file's only worked example
subscribed toentity.deathand failed at step one. Replaced with ablock.use
example that runs. The mob-farm and sorter bullets were built entirely on rejected
types and could not be reworded — there is no entity or container event, so both now
point at sampling (entity_query,inventory_count_items), which is the only thing
that actually verifies those outcomes.exec-inspect/SKILL.md,reference/contract-checks.mdand
system-redstone/reference/java-redstone.md: same substitution. The
java-redstone bullet mattered disproportionately — it is the index an agent reads
before openingverification.md, so it seeded the bad names first.reference/terrain/palettes.md: biome examples extended with the fields the
server now returns (precipitation,waterColor, colour overrides), and a note
that a flatdownfall: 0across every biome means an older mod jar.
Fixed
tools/builder/harness.pypre-filters event types against the deliverable set.
A legacy contract row previously failed as "could not subscribe", which is
indistinguishable from a transport failure — so a stale row read as a broken
mechanism rather than a stale row.tools/itest/cases/level.pywas asserting only thatplainsappeared in the
biome listing, which passed even with no dimension filtering at all because the
scratch dimension is the overworld. It now also asserts no foreign biomes leak in,
and a new case checks the nether returns its own small set.tools/itest/cases/loot.pydescribed the old "Definition not available" bug as
current behaviour.- Tool counts in
reference/execution/engine-limits.mdandskills/setup-server
were off by one: 194 tools declared (188 server endpoint plus 6 client-side), with a
lean default surface of ~104.
v1.0.0 — two-endpoint stack + Zion build learnings
The 1.0 milestone. The plugin learns the two-endpoint stack — the world server plus
the new client inspection endpoint for eye-level verification — and folds the Zion
showcase build's hard-won lessons (sourced rail boosters, same-generator canyon
ends, adversarial inspection, the force-load and full-footprint-clear rules) into
the builder skills and the local toolkit.
Added
- Client inspection endpoint support (
minecraft-java-client). The mod now ships a second
MCP server — its client entrypoint — that runs inside a real, rendered Minecraft client and
serves read-only inspection tools (view_capturefor the player's actual first-person frame,
plussense_crosshair/sense_raycast/sense_entities/sense_screen/client_status).
The plugin learns to set it up and use it:setup-connectdocuments the world+inspection two-server model and the three patterns
(server-only, client-only, server+client combo), withclaude mcp addfor
minecraft-java-clientand aview_captureverification step.setup-servernotes the separateclient.json/ port 8766 /MCP_CLIENT_*config and the
eleventhclientcategory.exec-inspectuses the real-client frame for eye-level / in-game-rendering verification when
mcp__minecraft-java-client__*is connected (aim the player from the world server, then
view_capture), records the framesourceinrider_pov, and falls back to the synthetic
block_render_region+ a user screenshot when the endpoint is absent..mcp.json.example, the architecture diagram, the tool-surface conventions inCLAUDE.md,
andreference/execution/engine-limits.mdall reflect the second endpoint.
- Rail / wire continuity verifier (
tools/voxel/continuity.py).block_fill_batch
can silently drop a few entries from a large batch — invisible on wide terrain, fatal
on a 1-wide rail (the cart stalls dead at each gap).find_gapsdiffs the intended
cell list against a live layer scan;verify_and_patchre-places the missing cells
withblock_set_state(reliable per block).system-transitandexec-inspectcall
it after any 1-wide placement. - Canyon/valley end-closer (
tools/terrain/close.py,close_belt_end). Closes one
end of abelt_from_pathcanyon by reusing the SAME machinery as its walls — the
belt's own cross-section (corridor pinching shut), the sameadd_fbmat global grid
coordinates (so the noise phase aligns at the seam), and the same thermal/hydraulic
erosion via a callerregencallback, merged withnp.maximum. Generalises the
per-build endcap scripts that kept reading as pasted-in headwalls. - Harness force-load re-assert for self-running mechanisms. A plan may declare a
top-levelprotectblock ({corner_a, corner_b}chunk rectangles);builder.harness
re-asserts those bands withforceload addas the last op of every force-toggling
phase (run / build / freshness), so a later phase'sforceload removenever unloads a
permanently force-loaded rail loop or farm (entities freeze, redstone reverts).
Changed
- Folded the Zion showcase build learnings into the builder skills.
system-transit
gains the sourced-booster rule, square single-block-corner U-turns, the sloped-back
wall-bench profile, an auto-board station template, and ride-test hygiene;
exec-inspectdocuments zone fan-out plus an adversarial synthesis pass that
re-verifies "criticals", and eye-level / thin-slab cross-section judging;
terrain-shape,build-natural-world,design-monument/terrain-landmark,
coherence,workflow-spine, andengine-limitspick up same-generator
end-closing, low-frequency variation on gentle slopes, distinct hero-mass placement,
the force-load and full-prior-footprint-clear rules, the offline-preview sign-off
gate, and a consolidated engine-caps table.
Fixed
- Powered-rail booster guidance reversed (corrects the 0.8.0 note below). A
redstone_blockdirectly under a powered rail IS a real source: the rail recomputes
topowered=trueon every block-update re-eval, so it is player-proof and
reload-proof. A source-lesspowered=trueset viablock_set_stateholds only at 0
players and reverts the instant a player is online (player-driven chunk/light/neighbour
updates re-evaluate the rail;update_flags=2does not save it). The earlier "set
powered=trueexplicitly; aredstone_blockunderneath doesn't hold" guidance was
true only for a never-visited headless test. Corrected insystem-redstone
(setblock-redstone-limits.md,verification.md),system-transit, and
build-systems. entity_query/@eonly enumerates loaded chunks. Documented inengine-limits:
asummonreportingsuccessCount: 1followed by an empty query usually means the
chunk is unloaded (checkforceload query), not that the entity despawned — minecarts
and items in unloaded chunks are frozen, not removed.
v0.8.0 — continuous-field terrain, eye-level verification, engine limits
v0.6.0 — build+verify harness + dedicated-server support
Token-usage optimization + headless/dedicated-server support.
Build + verify harness (tools/builder/)
A stdlib harness that executes a plan.toon phase and mechanically verifies it against the live server outside the LLM context — plan steps are the code, acceptance + quality_contract are the assertions, the harness is the test runner, returning one compact digest instead of hundreds of in-context tool calls. Force-load-bracketed (auto-banded under the 256-chunk/dimension cap) and rate-limit resilient. Validated live against a dedicated server: all 9 plan ops and all 12 contract checks.
Model routing (off Opus where reasoning isn't needed)
blueprinter,philosopher, andnatural-landmarksnow fork to Sonnet (isolated context).- Orchestrator runs at
effort: high. philosopherreturns drafted memory lessons for the orchestrator to persist;natural-landmarksreturns a proposed composition for the orchestrator to confirm.
Dedicated / headless-server support
- Step 0 detects dedicated-vs-single-player by sampling
gameTimeat 0 players. - Force-loading is a first-class concern (mandatory headless, where writes silently no-op in unloaded chunks); the registry records each build's envelope.
- The "ticking freezes when unfocused" caveat is now single-player-only.
Also
researcheris WebFetch-first and pulls exact dimensions from Wikipedia/Wikidata REST (no new dependency).plannerpins theacceptance+envelopesschema;workerdrives the harness;inspectorconsumes its verdict and focuses on perceptual/world-fit judgement.
See CHANGELOG.md for the full list.
v0.5.0 — terrain toolkit + server-side terrain tools wiring
Terrain support for the builder.
terrain toolkit (tools/terrain/) — the 2.5-D counterpart of the voxel toolkit: author a HeightField (multi-octave noise, radial falloff, blob lakes, carved rivers, build pads), erode it (hydraulic + thermal), render-verify offline (hillshade / relief / cross-section profile) before placing, then materialise to fills (double-layer substrate, no-monoculture surface mix, cliffs, beaches, water columns) and place via the shared mcp_place.py. numpy + Pillow only.
Skills wired to the mod's v0.3.0 terrain tools, fallback-gated — reference/engine-limits.md gains a "Terrain helpers" section; terraforming (landforms, command-budget, weathering, palettes, SKILL) and surveyor cite block_fill_columns, level_place_feature, level_fill_biome, the block_get_top_y heightmap arg, and the block_render_region hillshade view — each "prefer if available, else current approach" so it stays safe on older mods.
Pairs with minecraft-java-fabric-mcp-server v0.3.0.
v0.4.0
Give the builder eyes, and drive bulk builds natively. Folds in the Rivian
R1S / "Gear Guard Gary" retrospective: a representational build iterated blind
fails on silhouette, and hundreds of one-at-a-time fills are infeasible. Pairs
with minecraft-java-fabric-mcp-server
v0.2.0, which adds the native tools this release leans on (block_fill_batch,
block_render_region, block_scan_summary, block_get_map_color, auto-tiling
fills). Verified end-to-end against a live 26.1.2 world.
Added
- Voxel toolkit (
tools/voxel/, Python — stdlib + numpy + Pillow). Author a
form as a parametric numpy model (ellipsoid/cylinder/line3d/box,
fractional anchors,mirror_x), render three orthogonal views to PNG
(render_views), and decompose it to a world-space fills list (write_fills_json,
greedy maximal boxes split to ≤32k). Abuildingpalette maps voxel codes to
block ids + RGB. Worked example + smoke test intools/examples/example_bean.py.
Deps documented intools/requirements.txt; usage intools/README.md. - Render-verify workflow woven into
monument-builder(+ new
reference/render-verify.md),inspector, andsurveyor: author → render →
iterate vs. references → place viablock_fill_batch→ confirm with a
scan-render (block_render_region). The "imported meshes are not authoritative"
guardrail is spelled out. reference/engine-limits.md— one canonical, cross-skill list of hard tool
limits and verified behaviour, cited by the orchestrator and block-placing skills.- Bean showcase image in the README (
docs/images/bean.png).
Changed
- Scale-pinning added to the
plannerinterview: fix the size ratio between
co-located subjects before any blocks (a 70-tall vehicle beside an 18-tall
figure forces rebuilds). - Engine-limits guidance corrected from live testing (26.1.2): fills now
auto-tile past 32,768 server-side (confirmed); datapack functions are inert
(function_run//reloaddo nothing — keep using direct block ops);
structure_file_writewrites a file but isn't loadable in-session (use
structure_save_from_world/structure_load_to_world, which work). CLAUDE.mddocuments the newtools/Python layer (deps + smoke test) and
thereference/engine-limits.mdconvention.
v0.3.0 — Aurelia Exposition retrospective lessons
Folds lessons from a large multi-agent autonomous build (the "Aurelia Exposition" overnight run) back into the builder skills and orchestrator. The build's final QA exposed several skill-level gaps: 4 of 11 zones shipped flat-absent, the blueprinter's mcb: templates were never persisted, transit was missing, and effort was wasted generating .mcfunction terrain the mod refuses to execute.
Skill-level changes only; still pairs with minecraft-java-fabric-mcp-server v0.1.0.
Changed
- Single-writer registry. The orchestrator now solely owns
mcbuilder:registry;workerandblueprinterreport results as text instead of callingdata_storage_setthemselves (parallel sub-agents were clobbering the shared document). - Datapack functions: resolving ≠ executing. Everywhere
function_run/schedule_function//reloadis recommended (engineer,planner,monument-builder, orchestrator Conduct) now requires a smoke-test that the function actually runs before planning around it — the mod can accept the call and refuse execution (/function→ "should not run",/reload→successCount 0). Never emit.mcfunctionfiles expecting/functionto run them;terraforming's heightmap method spells this out. - Loaded ≠ ticking.
engineer(+setblock-redstone-limits.md) and the orchestrator honesty contract now distinguish immediate redstone updates (resolve) from the scheduled block-tick queue (pistons, hoppers, comparator reads, lamp turn-off, crop growth), which freezes on an idle/unfocused single-player client even in a force-loaded chunk. Verify by an immediate fire, not by waiting. block_get_top_ysemantics.surveyorconfirms once per survey whether the tool returns stand-on (air) Y vs. solid Y and records the convention so floors land flush.
Added
- Large / autonomous multi-site build discipline in the
minecraft-builderagent: a completion ledger gated on per-phase inspection, mandatory blueprinter-persistence verification before consumers reference templates, a ~3 background-sub-agent parallelism ceiling on non-overlapping zones, and a rule never to report "done" until every planned element passes inspection.
Full changelog: https://github.com/chapmanjw/minecraft-java-fabric-claude-plugin/blob/main/CHANGELOG.md
v0.2.0 — Java-exclusive builder techniques
Optimizes the builder skills for techniques the minecraft-java-fabric-mcp-server Fabric mod exposes but Bedrock's MCP could not. Skill-level changes only; still pairs with the mod v0.1.0. Every technique was verified live against a running server before being documented.
Highlights
- Display entities —
text_display(3D floating text/logos),block_display(blocks at arbitrary scale/rotation/translation — sub-block detail, impossible angles, glowing forms),item_display. Newmonument-builder/reference/display-entities.md, with signage pointers in transit and city planners. - Direct block-entity NBT — signs, banners, configured spawners, lecterns, decorated pots, player-head skulls, pre-loaded containers (building-architect, player-house, engineer).
- Item components — named/enchanted/lore/dyed items for displays and storage.
- Scripted villagers — exact profession + full trade lists (complementary to emergent village mechanics).
- Loot-table chest seeding and biome-aware palettes (
level_get_biome_at). - Datapack functions for non-redstone sequencing;
block_set_stateupdate_flagscontrol. - Event-based functional verification + two new
quality_contractrow types. - New
block-nbt/set-slotplan ops (planner + worker) and exactstructure_load_to_worldenum strings.
See CHANGELOG.md for the full list.
v0.1.0 — Minecraft Java (Fabric) plugin
Initial release of the Minecraft Java Claude plugin. Pairs with the minecraft-java-fabric-mcp-server Fabric mod (v0.1.0) — the MCP server is embedded in the mod and runs inside Minecraft.
Forked from the Minecraft Bedrock Claude plugin and rewritten top to bottom for Java Edition.
Highlights
- Guided setup — four ordered skills (
setup-fabric→install-mcp-mod→setup-mcp-server→connect-claude) for standing up Minecraft Java + Fabric + the mod. Single-player localhost is the default path; a dedicated Fabric server with bearer-token auth is the advanced branch. - World builder — the
minecraft-builderagent plus 17 model-tuned skills (survey → research → plan → shape → blueprint → build → inspect → reflect), ported to the Java MCP tool surface (level_*,block_*,entity_*,structure_*,data_storage_*, …). - World-anchored state — blueprints saved as structure templates (
mcb:<project>_<element>); a registry kept in command storage (mcbuilder:registry, TOON). - No behavior pack, no Beta-APIs experiment, no separate server process.
See CHANGELOG.md for the full list.