Minecraft Bedrock level provider for loading and storing worlds on disk. Supports Minecraft Bedrock Editions 1.16, 1.17, 1.18.0, 1.18.10, 1.18.30 and 1.19.1.
npm i bedrock-provider
Writing example:
const fs = require('fs')
const { LevelDB } = require('leveldb-zlib')
const { WorldProvider } = require('bedrock-provider')
const registry = require('prismarine-registry')('bedrock_1.17.10')
const Block = require('prismarine-block')(registry)
const ChunkColumn = require('prismarine-chunk')(registry)
async function main() {
const x = 0, z = 0
const cc = new ChunkColumn({ x, z })
cc.setBlock({ x: 0, y: 1, z: 0 }, Block.fromStateId(registry.blocksByName.dirt.defaultState))
// Create a new database and store this chunk in there
const db = new LevelDB('./sample', { createIfMissing: true })
await db.open() // Open the database
// Create a WorldProvider instance from the DB with a prismarine-registry
const world = new WorldProvider(db, { dimension: 0, registry })
// Store this chunk in world
world.save(x, z, cc)
// Close it
await db.close()
// Done! 😃
}
See tests/ for more usage examples.
The exported WorldProvider
class allows you to load a save file from a LevelDB database. The
first parameter is the db (leveldb-zlib instance), and the
second is an options object. The options argument takes a dimension ID (overworld or nether or end are 1, 2 and 3).
The options argument also takes an instance of prismarine-registry, which will be used when doing block related calls.
This returns a ChunkColumn at the specified x
and z
coordinates. full
if we should load biomes,
entities, tiles, and other related data ontop of chunks.
Saves a ChunkColumn into the database.