Minecraft Bedrock level provider for loading and storing worlds on disk
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 }) // Create a DB class
await db.open() // Open the database
const world = new WorldProvider(db, { dimension: 0 })
world.save(x, z, cc) // Store this chunk in world
await db.close() // Close it
// 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 a version, which if not specified will default to the latest version. When you access APIs like getBlock or setBlock, this is the version which will be assumed.
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.