This document provides a comprehensive review of the Schematica Minecraft Schematic Toolkit (AI Skill). It covers bugs encountered during usage, missing gaps, overall rating, and recommendations to elevate the toolkit to a flawless state.
-
Rich Shape Vocabulary: Includes 16 primitives (primitives like
BezierCurve,Arch,Torus, andDome), boolean operations (Union,Subtract,Intersect), and high-fidelity arbitrary transformations. -
Chunked Backend (Big-Map Support): Standard 3D dense grids scale horribly ($O(N^3)$), but the chunked-grid system successfully allowed building a
$128 \times 64 \times 128$ map cleanly and streaming the sponge schematic output with zero memory footprint issues. - Visual Previews: Seamless integration with matplotlib to render isometric, top, front, and right perspective PNGs. Excellent for agent-based validation loops!
- Location:
schematica/shapes/transforms.py(Line 239–241) - Symptom: Executing
NoiseDeformedon any shape inside an asymmetric grid (where depthszdoes not equal heightsy) crashed with:ValueError: operands could not be broadcast together with shapes (128,64,128) (128,128,64) - Root Cause: The 2D planar noise
n2generated fromperlin2d((sz, sy), ...)had shape(sz, sy). The code tried to repeat it along the X-axis:n2[None, :, :].repeat(sx, axis=0) # Yielded (sx, sz, sy) instead of (sx, sy, sz)
- Fix: Transposed
n2first to swap the rows/columns so that the dimensions match the(sx, sy, sz)target ordering perfectly:n2.T[None, :, :].repeat(sx, axis=0) # Yields (sx, sy, sz), broadcasting successfully!
- Location:
schematica/shapes/transforms.py(Line 245) - Symptom: The docstring for
NoiseDeformedstated that it "Requires scipy for best results (falls back without it)". However, the code performed a direct import ofscipy:Withoutfrom scipy import ndimage as _ndi
scipyinstalled, this raised a hardModuleNotFoundErrorand crashed the script rather than falling back cleanly. - Resolution: Installed
scipyon the system via pip (pip install scipy). A code-level correction wrapping this in atry...except ImportErrorfallback should be added so the class degrades gracefully as advertised.
While the fallback block registry includes standard block variants (dirt, stone, concrete, wool), it is missing newer decoration families:
- Other Wood Fences/Slabs/Gates: Only
minecraft:oak_fence,minecraft:oak_stairs, and basic stone variant slabs exist. The spruce wood blocks, birch wood blocks, cherry wood blocks, mangrove wood blocks, etc. do not have their corresponding fences and gates in the fallback catalog, forcing developers to substitute with oak equivalents to avoidKeyErrorblocks. - Copper Blocks: Classic industrial modern building blocks like raw copper, cut copper, and oxidized copper variants are completely absent.
The Session.enable_symmetry(axis, center) only supports mirroring along a single plane at a time. Circular structures, arenas, towers, or spawns benefit enormously from radial symmetry (e.g. 4-fold or 8-fold rotational cloning around a central column). Having to manually compute and loop these in python reduces the magic of live symmetry brushing.
The skill expects minecraft_data to be cloned manually under the repo root to enable full per-version registries. Without it, it falls back to the limited catalog. A simple bootstrapping utility to auto-download and cache version registries from PrismarineJS would provide full block support dynamically.
- Auto-Bootstrap Block Registry:
Add a utility script
python -m schematica.blocks.downloadthat fetches the JSON files directly fromgithub.com/PrismarineJS/minecraft-datafor the target version on demand and caches them locally, giving the agent full access to modern blockstates automatically. - Expand the Fallback Block List:
At a minimum, expand
registry.py's_COMMON_FALLBACK_BLOCKSto include spruce and birch decorative blocks (stairs, slabs, gates, fences) and copper blocks, as these are the core components of modern builds. - Add Radial / Quad Symmetry:
Extend
enable_symmetryto support"radial"and"quad"modes:session.enable_symmetry(mode="radial", center=(64, 64), folds=4)
- Enhanced WFC Presets:
Provide more out-of-the-box tilesets for
generate.wfcbeyondmossy_ruins(e.g., a "modern_office" or "medieval_tower" preset) to accelerate generation of high-quality interiors and facades.