bedrock-provider
January 22, 2023 ยท View on GitHub
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.
Install
npm i bedrock-provider
Usage
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.
API
WorldProvider
constructor(db: LevelDB, options: { dimension?: number; registry });
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.
load(x: number, z: number, full: boolean): Promise
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.
save(x: number, z: number, column: ChunkColumn): Promise
Saves a ChunkColumn into the database.