UNPKG

flying-squid

Version:
45 lines (37 loc) 1.35 kB
const Vec3 = require('vec3').Vec3 function randomInt (low, high) { return Math.floor(Math.random() * (high - low) + low) } module.exports.server = function (serv, settings) { const { registry } = serv serv.gameMode = settings.gameMode serv.difficulty = settings.difficulty const waterBlocks = new Set([registry.blocksByName.water.id]) if (registry.blocksByName.flowing_water !== undefined) { waterBlocks.add(registry.blocksByName.flowing_water.id) } async function findSpawnZone (world, initialPoint) { let point = initialPoint while ((await (world.getBlockType(point))) === 0) { point = point.offset(0, -1, 0) } while (true) { const p = await world.getBlockType(point) if (!waterBlocks.has(p)) { break } point = point.offset(1, 0, 0) } while ((await world.getBlockType(point)) !== 0) { point = point.offset(0, 1, 0) } return point } serv.getSpawnPoint = async (world) => { return findSpawnZone(world, new Vec3(randomInt(0, 30), 81, randomInt(0, 30))) } } module.exports.player = async function (player, serv) { player.prevGameMode = 255 player.gameMode = serv.gameMode player.findSpawnPoint = async () => { player.spawnPoint = await serv.getSpawnPoint(player.world) } player._client.on('settings', ({ viewDistance }) => { player.view = viewDistance }) }