Converts SlimeWorld (.slime) files to Sponge Schematic v3 (.schem) format.
The output schematic can be loaded in Minecraft using WorldEdit or FastAsyncWorldEdit.
A hosted web version of this converter is available here
Use the web UI to upload a .slime file and download the resulting .schem without installing the CLI.
- Parses SlimeWorld format v12–v13 (AdvancedSlimePaper)
- Outputs Sponge Schematic v3 (
.schem) - Preserves block states with full property data (no legacy ID mapping)
- Preserves block entity data (chests, shulker boxes, campfires, decorated pots, etc.)
- Preserves entity data (item displays, interactions, mobs, etc.)
- Schematic is centered on the paste point (X/Z)
go install github.com/emmanuelvlad/slime2schem@latestOr build from source:
git clone https://github.com/emmanuelvlad/slime2schem.git
cd slime2schem
go build -o slime2schem .slime2schem <world.slime>This produces world.schem in the same directory.
You can also specify the output path:
slime2schem -input world.slime -output my_build.schempackage main
import (
"os"
"github.com/emmanuelvlad/slime2schem/converter"
"github.com/emmanuelvlad/slime2schem/slime"
)
func main() {
// Read the .slime file
worldData, err := os.ReadFile("world.slime")
if err != nil {
panic(err)
}
// Parse the SlimeWorld
slimeWorld, err := slime.ReadSlimeWorld(worldData)
if err != nil {
panic(err)
}
// Convert to schematic
converted, err := converter.Convert(slimeWorld)
if err != nil {
panic(err)
}
// Save as .schem
schemData, err := converted.Schematic.Save()
if err != nil {
panic(err)
}
// Write to file
err = os.WriteFile("world.schem", schemData, 0644)
if err != nil {
panic(err)
}
}- Place the
.schemfile in your WorldEdit schematics folder - In-game, run:
//schematic load <filename> //paste
The converter allocates a flat array covering the entire bounding box of the world. Memory usage is determined by the schematic volume, not the slime file size:
memory ≈ width × height × length × 2 bytes
Where dimensions are derived from the chunk and section bounding box:
- Width = (maxChunkX − minChunkX + 1) × 16
- Length = (maxChunkZ − minChunkZ + 1) × 16
- Height = (maxSectionY − minSectionY + 1) × 16
For example, a 2.4 MB slime world spanning 39×48 chunks with sections 0–23 produces a 624×384×768 schematic (184M blocks), requiring ~350 MB of peak memory.
A compact world (e.g. 10×10 chunks, 4 sections tall) would use only ~20 MB regardless of slime file size.
Caution
Worlds with sparse vertical content (e.g. a few blocks at Y=0 and Y=368) will force a large height span and high memory usage. Consider trimming extreme sections before conversion if memory is constrained.
- Parse — Reads the
.slimebinary format (zstd-compressed chunk data, sections, block palettes, tile entities, entities) - Convert — Maps all chunks into a single schematic volume, translating block states, block entities, and entities to schematic-relative coordinates
- Write — Encodes the result as gzipped NBT in Sponge Schematic v3 format with varint-compressed block data
MIT