UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

77 lines (72 loc) 9.55 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const network_packet_WorldEventPacket = require('../packet/WorldEventPacket.cjs.cjs'); const block_BlockMappings = require('../../block/BlockMappings.cjs.cjs'); const network_Identifiers = require('../Identifiers.cjs.cjs'); const network_packet_PlayerActionPacket = require('../packet/PlayerActionPacket.cjs.cjs'); class PlayerActionHandler { static NetID = network_Identifiers.default.PlayerActionPacket; async handle(packet, server, session) { const player = session.getPlayer(); const world = player.getWorld(); const block = await world.getBlock( packet.blockPosition.getX(), packet.blockPosition.getY(), packet.blockPosition.getZ() ); switch (packet.action) { case network_packet_PlayerActionPacket.PlayerAction.START_BREAK: { const breakTime = Math.ceil(block.getBreakTime(null, server) * 20); await world.sendWorldEvent(packet.blockPosition, network_packet_WorldEventPacket.WorldEvent.BLOCK_START_BREAK, 65535 / breakTime); return; } case network_packet_PlayerActionPacket.PlayerAction.ABORT_BREAK: { await world.sendWorldEvent(packet.blockPosition, network_packet_WorldEventPacket.WorldEvent.BLOCK_STOP_BREAK, 0); return; } case network_packet_PlayerActionPacket.PlayerAction.STOP_BREAK: { return; } case network_packet_PlayerActionPacket.PlayerAction.CONTINUE_DESTROY_BLOCK: case network_packet_PlayerActionPacket.PlayerAction.CREATIVE_PLAYER_DESTROY_BLOCK: { await world.sendWorldEvent( packet.blockPosition, network_packet_WorldEventPacket.WorldEvent.PARTICLE_DESTROY_BLOCK, block_BlockMappings.BlockMappings.getRuntimeId(block.getName()) ); return; } case network_packet_PlayerActionPacket.PlayerAction.CRACK_BLOCK: { return; } case network_packet_PlayerActionPacket.PlayerAction.RESPAWN: { return; } case network_packet_PlayerActionPacket.PlayerAction.JUMP: { return; } case network_packet_PlayerActionPacket.PlayerAction.START_SPRINT: { await player.setSprinting(true); return; } case network_packet_PlayerActionPacket.PlayerAction.STOP_SPRINT: { await player.setSprinting(false); return; } case network_packet_PlayerActionPacket.PlayerAction.START_SNEAK: { await player.setSneaking(true); return; } case network_packet_PlayerActionPacket.PlayerAction.STOP_SNEAK: { await player.setSneaking(false); return; } default: { server.getLogger().verbose(`Unhandled player action: ${packet.action}`); break; } } } } exports.default = PlayerActionHandler; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyQWN0aW9uSGFuZGxlci5janMuY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9oYW5kbGVyL1BsYXllckFjdGlvbkhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ybGRFdmVudCB9IGZyb20gJy4uL3BhY2tldC9Xb3JsZEV2ZW50UGFja2V0JztcblxuaW1wb3J0IHR5cGUgeyBQbGF5ZXJTZXNzaW9uIH0gZnJvbSAnLi4vLi4vJztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi8uLi9TZXJ2ZXInO1xuaW1wb3J0IHsgQmxvY2tNYXBwaW5ncyB9IGZyb20gJy4uLy4uL2Jsb2NrL0Jsb2NrTWFwcGluZ3MnO1xuaW1wb3J0IElkZW50aWZpZXJzIGZyb20gJy4uL0lkZW50aWZpZXJzJztcbmltcG9ydCB0eXBlIFBsYXllckFjdGlvblBhY2tldCBmcm9tICcuLi9wYWNrZXQvUGxheWVyQWN0aW9uUGFja2V0JztcbmltcG9ydCB7IFBsYXllckFjdGlvbiB9IGZyb20gJy4uL3BhY2tldC9QbGF5ZXJBY3Rpb25QYWNrZXQnO1xuaW1wb3J0IHR5cGUgUGFja2V0SGFuZGxlciBmcm9tICcuL1BhY2tldEhhbmRsZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGF5ZXJBY3Rpb25IYW5kbGVyIGltcGxlbWVudHMgUGFja2V0SGFuZGxlcjxQbGF5ZXJBY3Rpb25QYWNrZXQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuUGxheWVyQWN0aW9uUGFja2V0O1xuXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZShwYWNrZXQ6IFBsYXllckFjdGlvblBhY2tldCwgc2VydmVyOiBTZXJ2ZXIsIHNlc3Npb246IFBsYXllclNlc3Npb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyID0gc2Vzc2lvbi5nZXRQbGF5ZXIoKTtcbiAgICAgICAgY29uc3Qgd29ybGQgPSBwbGF5ZXIuZ2V0V29ybGQoKTtcblxuICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHdvcmxkLmdldEJsb2NrKFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WCgpLFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WSgpLFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WigpXG4gICAgICAgICk7XG5cbiAgICAgICAgc3dpdGNoIChwYWNrZXQuYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVEFSVF9CUkVBSzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFrVGltZSA9IE1hdGguY2VpbChibG9jay5nZXRCcmVha1RpbWUobnVsbCwgc2VydmVyKSAqIDIwKTsgLy8gVE9ETzogY2FsY3VsYXRlIHdpdGggaXRlbSBpbiBoYW5kXG5cbiAgICAgICAgICAgICAgICBhd2FpdCB3b3JsZC5zZW5kV29ybGRFdmVudChwYWNrZXQuYmxvY2tQb3NpdGlvbiwgV29ybGRFdmVudC5CTE9DS19TVEFSVF9CUkVBSywgNjU1MzUgLyBicmVha1RpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQUJPUlRfQlJFQUs6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3b3JsZC5zZW5kV29ybGRFdmVudChwYWNrZXQuYmxvY2tQb3NpdGlvbiwgV29ybGRFdmVudC5CTE9DS19TVE9QX0JSRUFLLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUT1BfQlJFQUs6IHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGVkIGluIEludmVudG9yeVRyYW5zYWN0aW9uSGFuZGxlclxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQ09OVElOVUVfREVTVFJPWV9CTE9DSzpcbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkNSRUFUSVZFX1BMQVlFUl9ERVNUUk9ZX0JMT0NLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd29ybGQuc2VuZFdvcmxkRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5ibG9ja1Bvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBXb3JsZEV2ZW50LlBBUlRJQ0xFX0RFU1RST1lfQkxPQ0ssXG4gICAgICAgICAgICAgICAgICAgIEJsb2NrTWFwcGluZ3MuZ2V0UnVudGltZUlkKGJsb2NrLmdldE5hbWUoKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQ1JBQ0tfQkxPQ0s6IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgdGhpcy5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlJFU1BBV046IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkpVTVA6IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUQVJUX1NQUklOVDoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRTcHJpbnRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RPUF9TUFJJTlQ6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U3ByaW50aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUQVJUX1NORUFLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldFNuZWFraW5nKHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUT1BfU05FQUs6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U25lYWtpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHNlcnZlci5nZXRMb2dnZXIoKS52ZXJib3NlKGBVbmhhbmRsZWQgcGxheWVyIGFjdGlvbjogJHtwYWNrZXQuYWN0aW9ufWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIklkZW50aWZpZXJzIiwiUGxheWVyQWN0aW9uIiwiV29ybGRFdmVudCIsIkJsb2NrTWFwcGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLE1BQXFCLG1CQUFpRSxDQUFBO0FBQUEsRUFDbEYsT0FBYyxRQUFRQSwyQkFBWSxDQUFBLGtCQUFBO0FBQUEsRUFFbEMsTUFBYSxNQUFBLENBQU8sTUFBNEIsRUFBQSxNQUFBLEVBQWdCLE9BQXVDLEVBQUE7QUFDbkcsSUFBTSxNQUFBLE1BQUEsR0FBUyxRQUFRLFNBQVUsRUFBQTtBQUNqQyxJQUFNLE1BQUEsS0FBQSxHQUFRLE9BQU8sUUFBUyxFQUFBO0FBRTlCLElBQU0sTUFBQSxLQUFBLEdBQVEsTUFBTSxLQUFNLENBQUEsUUFBQTtBQUFBLE1BQ3RCLE1BQUEsQ0FBTyxjQUFjLElBQUssRUFBQTtBQUFBLE1BQzFCLE1BQUEsQ0FBTyxjQUFjLElBQUssRUFBQTtBQUFBLE1BQzFCLE1BQUEsQ0FBTyxjQUFjLElBQUs7QUFBQSxLQUM5QjtBQUVBLElBQUEsUUFBUSxPQUFPLE1BQVE7QUFBQSxNQUNuQixLQUFLQywrQ0FBYSxXQUFhLEVBQUE7QUFDM0IsUUFBTSxNQUFBLFNBQUEsR0FBWSxLQUFLLElBQUssQ0FBQSxLQUFBLENBQU0sYUFBYSxJQUFNLEVBQUEsTUFBTSxJQUFJLEVBQUUsQ0FBQTtBQUVqRSxRQUFBLE1BQU0sTUFBTSxjQUFlLENBQUEsTUFBQSxDQUFPLGVBQWVDLDBDQUFXLENBQUEsaUJBQUEsRUFBbUIsUUFBUSxTQUFTLENBQUE7QUFDaEcsUUFBQTtBQUFBO0FBQ0osTUFFQSxLQUFLRCwrQ0FBYSxXQUFhLEVBQUE7QUFDM0IsUUFBQSxNQUFNLE1BQU0sY0FBZSxDQUFBLE1BQUEsQ0FBTyxhQUFlLEVBQUFDLDBDQUFBLENBQVcsa0JBQWtCLENBQUMsQ0FBQTtBQUMvRSxRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUtELCtDQUFhLFVBQVksRUFBQTtBQUUxQixRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUtBLDhDQUFhLENBQUEsc0JBQUE7QUFBQSxNQUNsQixLQUFLQSwrQ0FBYSw2QkFBK0IsRUFBQTtBQUM3QyxRQUFBLE1BQU0sS0FBTSxDQUFBLGNBQUE7QUFBQSxVQUNSLE1BQU8sQ0FBQSxhQUFBO0FBQUEsVUFDUEMsMENBQVcsQ0FBQSxzQkFBQTtBQUFBLFVBQ1hDLGlDQUFjLENBQUEsWUFBQSxDQUFhLEtBQU0sQ0FBQSxPQUFBLEVBQVM7QUFBQSxTQUM5QztBQUNBLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBS0YsK0NBQWEsV0FBYSxFQUFBO0FBRTNCLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBS0EsK0NBQWEsT0FBUyxFQUFBO0FBQ3ZCLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBS0EsK0NBQWEsSUFBTSxFQUFBO0FBQ3BCLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBS0EsK0NBQWEsWUFBYyxFQUFBO0FBQzVCLFFBQU0sTUFBQSxNQUFBLENBQU8sYUFBYSxJQUFJLENBQUE7QUFDOUIsUUFBQTtBQUFBO0FBQ0osTUFDQSxLQUFLQSwrQ0FBYSxXQUFhLEVBQUE7QUFDM0IsUUFBTSxNQUFBLE1BQUEsQ0FBTyxhQUFhLEtBQUssQ0FBQTtBQUMvQixRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUtBLCtDQUFhLFdBQWEsRUFBQTtBQUMzQixRQUFNLE1BQUEsTUFBQSxDQUFPLFlBQVksSUFBSSxDQUFBO0FBQzdCLFFBQUE7QUFBQTtBQUNKLE1BQ0EsS0FBS0EsK0NBQWEsVUFBWSxFQUFBO0FBQzFCLFFBQU0sTUFBQSxNQUFBLENBQU8sWUFBWSxLQUFLLENBQUE7QUFDOUIsUUFBQTtBQUFBO0FBQ0osTUFFQSxTQUFTO0FBQ0wsUUFBQSxNQUFBLENBQU8sV0FBWSxDQUFBLE9BQUEsQ0FBUSxDQUE0Qix5QkFBQSxFQUFBLE1BQUEsQ0FBTyxNQUFNLENBQUUsQ0FBQSxDQUFBO0FBQ3RFLFFBQUE7QUFBQTtBQUNKO0FBQ0o7QUFFUjs7OzsifQ==