29 releases
| 0.1.72 | Jul 20, 2025 |
|---|---|
| 0.1.71 | Jul 20, 2025 |
| 0.1.48 | Jun 21, 2025 |
| 0.1.17 | May 27, 2025 |
#663 in Parser implementations
2,532 downloads per month
14MB
44K
SLoC
Contains (rust library, 4.5MB) release-artifacts/libnucleation.rlib, (ELF lib, 1MB) libnucleation-linux-arm64.so, (ELF lib, 1MB) libnucleation-linux-x64.so, (Mach-o library, 1MB) libnucleation-macos-arm64.dylib, (Mach-o library, 1MB) libnucleation-macos-x64.dylib, (ELF lib, 19KB) release-artifacts/libnucleation.so
🧬 Nucleation
Nucleation is a high-performance Minecraft schematic engine written in Rust — with full support for Rust, WebAssembly/JavaScript, Python, and FFI-based integrations like PHP and C.
Built for performance, portability, and parity across ecosystems.
✨ Features
- ✅ Multi-format support:
.schematic,.litematic,.nbt, etc. - 🧠 Memory-safe Rust core with zero-copy deserialization
- 🌐 WASM module for browser + Node.js
- 🐍 Native Python bindings (
pip install nucleation) - ⚙️ C-compatible FFI for PHP, C, Go, etc.
- 🔄 Feature parity across all interfaces
- 📦 Binary builds for Linux, macOS, Windows (x86_64 + ARM64)
- 🧱 Seamless integration with Cubane
📦 Installation
🔧 Rust
cargo add nucleation
🌐 JavaScript / TypeScript (WASM)
npm install nucleation
🐍 Python
pip install nucleation
🧩 C / PHP / FFI
Download prebuilt .so / .dylib / .dll from Releases
or build locally using:
./build-ffi.sh
🚀 Quick Examples
Rust
use nucleation::UniversalSchematic;
let bytes = std::fs::read("example.litematic")?;
let mut schematic = UniversalSchematic::new("my_schematic");
schematic.load_from_data(&bytes)?;
println!("{:?}", schematic.get_info());
JavaScript (WASM)
import { SchematicParser } from "nucleation";
const bytes = await fetch("example.litematic").then(r => r.arrayBuffer());
const parser = new SchematicParser();
await parser.fromData(new Uint8Array(bytes));
console.log(parser.getDimensions());
Python
from nucleation import Schematic
with open("example.litematic", "rb") as f:
data = f.read()
schem = Schematic("my_schematic")
schem.load_from_bytes(data)
print(schem.get_info())
📖 → More in examples/python.md
FFI (PHP/C)
#include "nucleation.h"
SchematicHandle* handle = schematic_new("MySchem");
schematic_load_data(handle, data_ptr, data_len);
CSchematicInfo info;
schematic_get_info(handle, &info);
printf("Size: %dx%dx%d\n", info.width, info.height, info.depth);
schematic_free(handle);
🔧 Development
# Build the Rust core
cargo build --release
# Build WASM module
./build-wasm.sh
# Build Python bindings locally
maturin develop --features python
# Build FFI libs
./build-ffi.sh
📚 Submodules & Bindings
Rust
JavaScript/TypeScript
Python
FFI (C/PHP)
⚖️ License
Licensed under the GNU AGPL-3.0-only.
See LICENSE for full terms.
Made by @Nano112 with ❤️
Dependencies
~12–37MB
~479K SLoC