UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

73 lines (70 loc) 8.69 kB
import { WorldEvent } from '../packet/WorldEventPacket.es.js'; import { BlockMappings } from '../../block/BlockMappings.es.js'; import Identifiers from '../Identifiers.es.js'; import { PlayerAction } from '../packet/PlayerActionPacket.es.js'; class PlayerActionHandler { static NetID = Identifiers.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 PlayerAction.START_BREAK: { const breakTime = Math.ceil(block.getBreakTime(null, server) * 20); await world.sendWorldEvent(packet.blockPosition, WorldEvent.BLOCK_START_BREAK, 65535 / breakTime); return; } case PlayerAction.ABORT_BREAK: { await world.sendWorldEvent(packet.blockPosition, WorldEvent.BLOCK_STOP_BREAK, 0); return; } case PlayerAction.STOP_BREAK: { return; } case PlayerAction.CONTINUE_DESTROY_BLOCK: case PlayerAction.CREATIVE_PLAYER_DESTROY_BLOCK: { await world.sendWorldEvent( packet.blockPosition, WorldEvent.PARTICLE_DESTROY_BLOCK, BlockMappings.getRuntimeId(block.getName()) ); return; } case PlayerAction.CRACK_BLOCK: { return; } case PlayerAction.RESPAWN: { return; } case PlayerAction.JUMP: { return; } case PlayerAction.START_SPRINT: { await player.setSprinting(true); return; } case PlayerAction.STOP_SPRINT: { await player.setSprinting(false); return; } case PlayerAction.START_SNEAK: { await player.setSneaking(true); return; } case PlayerAction.STOP_SNEAK: { await player.setSneaking(false); return; } default: { server.getLogger().verbose(`Unhandled player action: ${packet.action}`); break; } } } } export { PlayerActionHandler as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyQWN0aW9uSGFuZGxlci5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvaGFuZGxlci9QbGF5ZXJBY3Rpb25IYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmxkRXZlbnQgfSBmcm9tICcuLi9wYWNrZXQvV29ybGRFdmVudFBhY2tldCc7XG5cbmltcG9ydCB0eXBlIHsgUGxheWVyU2Vzc2lvbiB9IGZyb20gJy4uLy4uLyc7XG5pbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vLi4vU2VydmVyJztcbmltcG9ydCB7IEJsb2NrTWFwcGluZ3MgfSBmcm9tICcuLi8uLi9ibG9jay9CbG9ja01hcHBpbmdzJztcbmltcG9ydCBJZGVudGlmaWVycyBmcm9tICcuLi9JZGVudGlmaWVycyc7XG5pbXBvcnQgdHlwZSBQbGF5ZXJBY3Rpb25QYWNrZXQgZnJvbSAnLi4vcGFja2V0L1BsYXllckFjdGlvblBhY2tldCc7XG5pbXBvcnQgeyBQbGF5ZXJBY3Rpb24gfSBmcm9tICcuLi9wYWNrZXQvUGxheWVyQWN0aW9uUGFja2V0JztcbmltcG9ydCB0eXBlIFBhY2tldEhhbmRsZXIgZnJvbSAnLi9QYWNrZXRIYW5kbGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxheWVyQWN0aW9uSGFuZGxlciBpbXBsZW1lbnRzIFBhY2tldEhhbmRsZXI8UGxheWVyQWN0aW9uUGFja2V0PiB7XG4gICAgcHVibGljIHN0YXRpYyBOZXRJRCA9IElkZW50aWZpZXJzLlBsYXllckFjdGlvblBhY2tldDtcblxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGUocGFja2V0OiBQbGF5ZXJBY3Rpb25QYWNrZXQsIHNlcnZlcjogU2VydmVyLCBzZXNzaW9uOiBQbGF5ZXJTZXNzaW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllciA9IHNlc3Npb24uZ2V0UGxheWVyKCk7XG4gICAgICAgIGNvbnN0IHdvcmxkID0gcGxheWVyLmdldFdvcmxkKCk7XG5cbiAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB3b3JsZC5nZXRCbG9jayhcbiAgICAgICAgICAgIHBhY2tldC5ibG9ja1Bvc2l0aW9uLmdldFgoKSxcbiAgICAgICAgICAgIHBhY2tldC5ibG9ja1Bvc2l0aW9uLmdldFkoKSxcbiAgICAgICAgICAgIHBhY2tldC5ibG9ja1Bvc2l0aW9uLmdldFooKVxuICAgICAgICApO1xuXG4gICAgICAgIHN3aXRjaCAocGFja2V0LmFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RBUlRfQlJFQUs6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVha1RpbWUgPSBNYXRoLmNlaWwoYmxvY2suZ2V0QnJlYWtUaW1lKG51bGwsIHNlcnZlcikgKiAyMCk7IC8vIFRPRE86IGNhbGN1bGF0ZSB3aXRoIGl0ZW0gaW4gaGFuZFxuXG4gICAgICAgICAgICAgICAgYXdhaXQgd29ybGQuc2VuZFdvcmxkRXZlbnQocGFja2V0LmJsb2NrUG9zaXRpb24sIFdvcmxkRXZlbnQuQkxPQ0tfU1RBUlRfQlJFQUssIDY1NTM1IC8gYnJlYWtUaW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkFCT1JUX0JSRUFLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd29ybGQuc2VuZFdvcmxkRXZlbnQocGFja2V0LmJsb2NrUG9zaXRpb24sIFdvcmxkRXZlbnQuQkxPQ0tfU1RPUF9CUkVBSywgMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVE9QX0JSRUFLOiB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlZCBpbiBJbnZlbnRvcnlUcmFuc2FjdGlvbkhhbmRsZXJcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkNPTlRJTlVFX0RFU1RST1lfQkxPQ0s6XG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5DUkVBVElWRV9QTEFZRVJfREVTVFJPWV9CTE9DSzoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdvcmxkLnNlbmRXb3JsZEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICBwYWNrZXQuYmxvY2tQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgV29ybGRFdmVudC5QQVJUSUNMRV9ERVNUUk9ZX0JMT0NLLFxuICAgICAgICAgICAgICAgICAgICBCbG9ja01hcHBpbmdzLmdldFJ1bnRpbWVJZChibG9jay5nZXROYW1lKCkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkNSQUNLX0JMT0NLOiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIHRoaXMuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5SRVNQQVdOOiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5KVU1QOiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVEFSVF9TUFJJTlQ6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U3ByaW50aW5nKHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUT1BfU1BSSU5UOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldFNwcmludGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVEFSVF9TTkVBSzoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRTbmVha2luZyh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVE9QX1NORUFLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldFNuZWFraW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXIuZ2V0TG9nZ2VyKCkudmVyYm9zZShgVW5oYW5kbGVkIHBsYXllciBhY3Rpb246ICR7cGFja2V0LmFjdGlvbn1gKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVVBLE1BQXFCLG1CQUFpRSxDQUFBO0FBQUEsRUFDbEYsT0FBYyxRQUFRLFdBQVksQ0FBQSxrQkFBQTtBQUFBLEVBRWxDLE1BQWEsTUFBQSxDQUFPLE1BQTRCLEVBQUEsTUFBQSxFQUFnQixPQUF1QyxFQUFBO0FBQ25HLElBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsSUFBTSxNQUFBLEtBQUEsR0FBUSxPQUFPLFFBQVMsRUFBQTtBQUU5QixJQUFNLE1BQUEsS0FBQSxHQUFRLE1BQU0sS0FBTSxDQUFBLFFBQUE7QUFBQSxNQUN0QixNQUFBLENBQU8sY0FBYyxJQUFLLEVBQUE7QUFBQSxNQUMxQixNQUFBLENBQU8sY0FBYyxJQUFLLEVBQUE7QUFBQSxNQUMxQixNQUFBLENBQU8sY0FBYyxJQUFLO0FBQUEsS0FDOUI7QUFFQSxJQUFBLFFBQVEsT0FBTyxNQUFRO0FBQUEsTUFDbkIsS0FBSyxhQUFhLFdBQWEsRUFBQTtBQUMzQixRQUFNLE1BQUEsU0FBQSxHQUFZLEtBQUssSUFBSyxDQUFBLEtBQUEsQ0FBTSxhQUFhLElBQU0sRUFBQSxNQUFNLElBQUksRUFBRSxDQUFBO0FBRWpFLFFBQUEsTUFBTSxNQUFNLGNBQWUsQ0FBQSxNQUFBLENBQU8sZUFBZSxVQUFXLENBQUEsaUJBQUEsRUFBbUIsUUFBUSxTQUFTLENBQUE7QUFDaEcsUUFBQTtBQUFBO0FBQ0osTUFFQSxLQUFLLGFBQWEsV0FBYSxFQUFBO0FBQzNCLFFBQUEsTUFBTSxNQUFNLGNBQWUsQ0FBQSxNQUFBLENBQU8sYUFBZSxFQUFBLFVBQUEsQ0FBVyxrQkFBa0IsQ0FBQyxDQUFBO0FBQy9FLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBSyxhQUFhLFVBQVksRUFBQTtBQUUxQixRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUssWUFBYSxDQUFBLHNCQUFBO0FBQUEsTUFDbEIsS0FBSyxhQUFhLDZCQUErQixFQUFBO0FBQzdDLFFBQUEsTUFBTSxLQUFNLENBQUEsY0FBQTtBQUFBLFVBQ1IsTUFBTyxDQUFBLGFBQUE7QUFBQSxVQUNQLFVBQVcsQ0FBQSxzQkFBQTtBQUFBLFVBQ1gsYUFBYyxDQUFBLFlBQUEsQ0FBYSxLQUFNLENBQUEsT0FBQSxFQUFTO0FBQUEsU0FDOUM7QUFDQSxRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUssYUFBYSxXQUFhLEVBQUE7QUFFM0IsUUFBQTtBQUFBO0FBQ0osTUFFQSxLQUFLLGFBQWEsT0FBUyxFQUFBO0FBQ3ZCLFFBQUE7QUFBQTtBQUNKLE1BRUEsS0FBSyxhQUFhLElBQU0sRUFBQTtBQUNwQixRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUssYUFBYSxZQUFjLEVBQUE7QUFDNUIsUUFBTSxNQUFBLE1BQUEsQ0FBTyxhQUFhLElBQUksQ0FBQTtBQUM5QixRQUFBO0FBQUE7QUFDSixNQUNBLEtBQUssYUFBYSxXQUFhLEVBQUE7QUFDM0IsUUFBTSxNQUFBLE1BQUEsQ0FBTyxhQUFhLEtBQUssQ0FBQTtBQUMvQixRQUFBO0FBQUE7QUFDSixNQUVBLEtBQUssYUFBYSxXQUFhLEVBQUE7QUFDM0IsUUFBTSxNQUFBLE1BQUEsQ0FBTyxZQUFZLElBQUksQ0FBQTtBQUM3QixRQUFBO0FBQUE7QUFDSixNQUNBLEtBQUssYUFBYSxVQUFZLEVBQUE7QUFDMUIsUUFBTSxNQUFBLE1BQUEsQ0FBTyxZQUFZLEtBQUssQ0FBQTtBQUM5QixRQUFBO0FBQUE7QUFDSixNQUVBLFNBQVM7QUFDTCxRQUFBLE1BQUEsQ0FBTyxXQUFZLENBQUEsT0FBQSxDQUFRLENBQTRCLHlCQUFBLEVBQUEsTUFBQSxDQUFPLE1BQU0sQ0FBRSxDQUFBLENBQUE7QUFDdEUsUUFBQTtBQUFBO0FBQ0o7QUFDSjtBQUVSOzs7OyJ9