In-progress Minecraft world editor, inspired by Amulet Editor. (Will likely end up very different, as perfectly matching Amulet is not a goal, and code here isn't copied from Amulet.)
Correctness and thoroughness is a priority.
- Crate names have
prismarine-anchor-prefixes, but their folders elide that prefix. - The crates in
crates/editorare (or will be) related to the final application. - The crates in
crates/foundationdo not rely on anything else in the Prismarine Anchor project, and may be useful for other people/projects. - The crates in
crates/bedrockare specific to Bedrock Edition. - The crates the crates in
crates/cross-platformare not specific to any version of Minecraft. - The crates in the
crates/unstablefolder can be more or less ignored.
See examples/crawl-worlds for a binary that can crawl through every MCBE world whose directory
path it is passed.
Notable dependencies, sources, and inspirations include:
- Amulet Editor, a current Minecraft world editor, which inspired this project.
quartz_nbt, whose code was copied here as the starting point of the nbt crate here.rusty-leveldb, whose MCPE example and MemEnv struct were helpful, as well as their main functionality as a LevelDB crate.- Project Lodestone, an ambitious project similar to this one, but with many contributors.
Lodestone's documentation greatly aided in the development of the
leveldb-entriescrate. Hopefully, some of the work here will also help Lodestone (whether as a dependency or copying-and-pasting and adding a notice). - minecraft.wiki and wiki.bedrock.dev provide large amounts of information, helpful for the NBT
parser,
leveldb-entries, and more. - Rufus Atticus (and his
rbedrocklibrary) and LeviLamina's header files, which have very helpful for theleveldb-entriescrate. - Past me, who has provided so many old Bedrock Edition saves, which are invaluable for understanding Bedrock Edition save formats.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
So far, this codebase has been a personal project, and I think it would be fun to continue working on this project by myself. If you're interesting in contributing to a project like this, you should consider contributing to Project Lodestone. I can be found on a variety of Discord servers (as ROBOTRON31415) if you'd like to discuss this project.
If you encounter any problem with this project, though, please open an issue here.