UNPKG

@boem312/minecraft-server

Version:

A pure JS library to create Minecraft Java 1.16.3 servers

58 lines (46 loc) 1.82 kB
const { onGround } = require('../../properties/public/dynamic/onGround.js'); const { position } = require('../../properties/public/dynamic/position.js'); const { chunkSize } = require('../../../../../functions/loader/data.js'); module.exports = { emitMove(info) { if (!this.p.positionSet) return; const oldPosition = this.p._position.raw; let oldChunk = { x: Math.floor(this.position.x / (chunkSize.x.max - chunkSize.x.min)), z: Math.floor(this.position.z / (chunkSize.z.max - chunkSize.z.min)) } let oldY = parseInt(this.position.y); let changed = false; for (const val of [ 'x', 'y', 'z', 'pitch', 'yaw' ]) if (info[val] !== undefined && this.p._position[val] !== info[val]) { changed = true; this.p._position.setRaw(val, info[val]); } onGround.set.call(this, info.onGround); let newChunk = { x: Math.floor(this.position.x / (chunkSize.x.max - chunkSize.x.min)), z: Math.floor(this.position.z / (chunkSize.z.max - chunkSize.z.min)) } let newY = parseInt(this.position.y); let viewPositionUpdate = false; if (newChunk.x !== oldChunk.x) viewPositionUpdate = true; if (newChunk.z !== oldChunk.z) viewPositionUpdate = true; if (oldY !== newY) viewPositionUpdate = true; if (viewPositionUpdate) this.p.sendPacket('update_view_position', { chunkX: newChunk.x, chunkZ: newChunk.z }) if (changed) { position.update.call(this, this.p._position.raw); this.p.emitChange('position', oldPosition); } } }