Skip to main content

structura-core

Reusable Minecraft Java 1.21.1 structure-processing core. It owns:

  • validated Java Structure NBT I/O;
  • legacy schematic conversion and numeric analysis;
  • NumPy/SciPy voxel geometry primitives (connected components, closing).

Structure input accepts gzip-compressed and raw NBT, including files with multiple palettes. Saving preserves all palettes, root metadata, additional block fields, block entities and entities. Repeated saves of the same data produce reproducible gzip bytes; they need not match the original file bytes.

The library targets Minecraft Java 1.21.1 by default. Version constants live in structura_core.version; callers can still pass an explicit Amulet translation target to the legacy converter.

pip install structura-core
structura-analyze path/to/structure.nbt --json

The legacy extra is needed for legacy input conversion. Structure NBT processing and Sponge v2 .schem export do not require amulet-core.

pip install 'structura-core[legacy]'
structura-convert-legacy old.schematic structure.nbt
structura-export-schematic structure.nbt structure.schem

For local development, use pip install -e '.[legacy]' from this package's directory.

Legacy conversion keeps paintings and item frames by default, which is safe for generated structures. Preview tools can call convert(..., preserve_all_entities=True) to retain mobs, armor stands and loose items as well, including their exact fractional positions and NBT payloads.

For conversion that retains selection bounds, authored air, bedrock and block connections, pass prepare_for_placement=False as well, or use:

structura-convert-legacy old.schematic preserved.nbt --preserve-layout --all-entities

The converter's historical default still prepares a structure for datapack placement: it trims bounds, replaces bedrock, repairs pane/bar connections and selects interior/door-clearance air. Preview tools use the preserving mode. Conversion retains custom entity namespaces and supplies translated block entity IDs, allowing the result to be exported as Sponge without guessing IDs.

Generated additions fill missing cells and preserve authored cells, including explicit air. Use replacements to intentionally replace a cell; replacement also removes its old block entity NBT. Coordinates and palette indices must be integers in the NBT range. Every saved block is bounds-checked, and a failed write leaves an existing destination intact.

from structura_core import Structure, save_structure
from structura_core.export_schematic import export_schematic

structure = Structure("house.nbt", palette_index=0)
save_structure(structure, "copy.nbt", structure.size)
export_schematic(structure, "house.schem")

Selecting palette_index chooses the active view without discarding the other palettes on save. An integer addition selects the corresponding variant in each palette; a string such as "minecraft:stone" adds that literal state to every palette. Shifts update entity positions and known vanilla hanging-entity coordinates, while retaining unrelated custom NBT.

Sponge v2 has a single palette and a dense block array: export uses the selected palette and fills missing cells with air. Entities and block entity payloads are included; an entity without an id raises an error. This export does not translate Minecraft versions, and the output retains the source DataVersion.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

structura_core-0.2.3.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structura_core-0.2.3-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

Details for the file structura_core-0.2.3.tar.gz.

File metadata

  • Download URL: structura_core-0.2.3.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for structura_core-0.2.3.tar.gz
Algorithm Hash digest
SHA256 58b5ed99f5437a9a44de12bb7684412b76eaa36b158b285e10b0d3650ef06a26
MD5 eea225d8bcb5fd0eaf46985ab9f3c020
BLAKE2b-256 4f26fb3bebe43bb3a09ac99885a1359570184e6c978e52b26e6600a4f3130e3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for structura_core-0.2.3.tar.gz:

Publisher: publish.yml on kirimba1024/structura-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file structura_core-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: structura_core-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 38.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for structura_core-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ba0ee8a8bdc7a218b8c81adce88ccd9511c7d5b66cb522a2382ee06ae921132c
MD5 2e99691a205990d2c355e94e17802e29
BLAKE2b-256 3eef4b2e5b065a3d18ae27a438000848b9b3126b332e896f30cb2db199c7bf38

See more details on using hashes here.

Provenance

The following attestation bundles were made for structura_core-0.2.3-py3-none-any.whl:

Publisher: publish.yml on kirimba1024/structura-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page