@@ -31,18 +31,32 @@ This crate focuses on complete parsing behavior. The
3131 ` db/CURRENT ` worlds as LevelDB, marks early ` StorageVersion <= 4 ` worlds as
3232 ` WorldFormat::LevelDbLegacyTerrain ` , and opens pre-LevelDB ` chunks.dat ` worlds
3333 as ` WorldFormat::PocketChunksDat ` .
34+ - ` OpenOptions::default() ` is read-only. Any world-record write must reopen the
35+ world with ` OpenOptions { read_only: false, ..OpenOptions::default() } ` .
36+ Read-only worlds return ` BedrockWorldErrorKind::ReadOnly ` from high-level
37+ writes before touching storage.
3438- Use category APIs for UI and tools:
3539 ` classify_keys_blocking ` , ` list_players_blocking ` ,
3640 ` list_chunk_positions_blocking ` , ` parse_chunk_blocking ` ,
3741 ` parse_subchunk_blocking ` , ` scan_entities_blocking ` ,
3842 ` scan_block_entities_blocking ` , ` scan_items_blocking ` , ` scan_maps_blocking ` ,
3943 ` scan_villages_blocking ` , and ` scan_globals_blocking ` .
40- - Use typed v0.2 edit APIs for BedrockLevelFormat records:
41- ` read_map_record_blocking ` , ` scan_map_records_blocking ` ,
42- ` write_map_record_blocking ` , ` read_global_record_blocking ` ,
43- ` scan_global_records_blocking ` , ` put_hsa_for_chunk_blocking ` ,
44- ` block_entities_in_chunk_blocking ` , ` edit_block_entity_at_blocking ` ,
45- ` actors_in_chunk_blocking ` , and ` put_actor_blocking ` .
44+ - Use typed v0.2 BedrockLevelFormat write APIs on a writable world:
45+ ` write_map_record_blocking ` , ` delete_map_record_blocking ` ,
46+ ` write_global_record_blocking ` , ` delete_global_record_blocking ` ,
47+ ` put_heightmap_blocking ` , ` put_biome_storage_blocking ` ,
48+ ` put_hsa_for_chunk_blocking ` , ` delete_hsa_for_chunk_blocking ` ,
49+ ` put_block_entities_blocking ` , ` edit_block_entity_at_blocking ` ,
50+ ` delete_block_entity_at_blocking ` , ` put_actor_blocking ` ,
51+ ` delete_actor_blocking ` , and ` move_actor_blocking ` . Matching async wrappers
52+ are available behind the default ` async ` feature.
53+ - High-level writes serialize and parse records back before commit. Actor writes
54+ update ` digp -> actorprefix ` records in one transaction. Block-entity writes
55+ validate coordinates against the target chunk. ` PocketChunksDatStorage `
56+ remains read-only.
57+ - ` bedrock-world ` stops at Bedrock key/value semantics. Post-write refresh,
58+ invalidation, and presentation policy belong to downstream applications or
59+ adapter crates.
4660- Async wrappers use ` tokio::task::spawn_blocking ` , so disk and decode work does
4761 not block the foreground async runtime.
4862- ` WorldScanOptions ` controls threading, cancellation, and progress callbacks.
@@ -275,6 +289,22 @@ Latest local Criterion and large-fixture results are tracked in
275289is intentionally separate from Criterion because multi-million-entry scans
276290should not be repeated inside microbenchmarks.
277291
292+ ## Features And docs.rs
293+
294+ docs.rs builds with all features enabled, so the hosted API reference includes
295+ async wrappers and the optional ` bedrock-leveldb ` backend.
296+
297+ | Feature | Default | Meaning |
298+ | --- | --- | --- |
299+ | ` async ` | yes | Adds async wrappers that delegate blocking filesystem, LevelDB, and NBT work to ` tokio::task::spawn_blocking ` |
300+ | ` backend-bedrock-leveldb ` | yes | Enables opening native Bedrock LevelDB worlds through ` bedrock-leveldb ` |
301+ | ` leveldb-mmap ` | no | Enables the backend and forwards the ` bedrock-leveldb/mmap ` feature |
302+
303+ Disable default features when a tool only needs pure parsing, in-memory storage,
304+ ` level.dat ` , or NBT helpers. The crates.io package includes the English and
305+ Chinese READMEs, guide documents under ` docs/ ` , the changelog, licenses,
306+ source, tests, fixture documentation, and benchmarks.
307+
278308## Completeness
279309
280310| Area | Status |
0 commit comments