bedrock-protocol/examples/serverChunks.js
extremeheat 3369fc2790 update server example, use protocol updates
Server example with bedrock-provider
Use 64-bit varints for entity runtime ids
2021-03-26 04:48:23 -04:00

48 lines
1.3 KiB
JavaScript

// CHUNKS
const { WorldProvider } = require('bedrock-provider')
const { LevelDB } = require('leveldb-zlib')
const { join } = require('path')
async function loadWorld (version) {
const path = join(__dirname, `../tools/bds-${version}/worlds/Bedrock level/db`)
console.log('Loading world at path', path) // Load world from testing server
const db = new LevelDB(path, { createIfMissing: false })
await db.open()
const wp = new WorldProvider(db, { dimension: 0 })
async function requestChunks (x, z, radius) {
const chunks = []
const cxStart = (x >> 4) - radius
const cxEnd = (x >> 4) + radius
const czStart = (z >> 4) - radius
const czEnd = (z >> 4) + radius
for (let cx = cxStart; cx < cxEnd; cx++) {
for (let cz = czStart; cz < czEnd; cz++) {
// console.log('reading chunk at ', cx, cz)
const cc = await wp.load(cx, cz, true)
if (!cc) {
// console.log('no chunk')
continue
}
const cbuf = await cc.networkEncodeNoCache()
chunks.push({
x: cx,
z: cz,
sub_chunk_count: cc.sectionsLen,
cache_enabled: false,
blobs: [],
payload: cbuf
})
// console.log('Ht',cc.sectionsLen,cc.sections)
}
}
return chunks
}
return { requestChunks }
}
module.exports = { loadWorld }