UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

50 lines (49 loc) 7.47 kB
import { BlockMappings } from "../../block/BlockMappings.es.js"; import Identifiers from "../Identifiers.es.js"; import { PlayerAction } from "../packet/PlayerActionPacket.es.js"; import { WorldEvent } from "../packet/WorldEventPacket.es.js"; //#region src/network/handler/PlayerActionHandler.ts var PlayerActionHandler = class { 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; } } }; //#endregion export { PlayerActionHandler as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyQWN0aW9uSGFuZGxlci5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9oYW5kbGVyL1BsYXllckFjdGlvbkhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ybGRFdmVudCB9IGZyb20gJy4uL3BhY2tldC9Xb3JsZEV2ZW50UGFja2V0JztcblxuaW1wb3J0IHR5cGUgeyBQbGF5ZXJTZXNzaW9uIH0gZnJvbSAnLi4vLi4vJztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi8uLi9TZXJ2ZXInO1xuaW1wb3J0IHsgQmxvY2tNYXBwaW5ncyB9IGZyb20gJy4uLy4uL2Jsb2NrL0Jsb2NrTWFwcGluZ3MnO1xuaW1wb3J0IElkZW50aWZpZXJzIGZyb20gJy4uL0lkZW50aWZpZXJzJztcbmltcG9ydCB0eXBlIFBsYXllckFjdGlvblBhY2tldCBmcm9tICcuLi9wYWNrZXQvUGxheWVyQWN0aW9uUGFja2V0JztcbmltcG9ydCB7IFBsYXllckFjdGlvbiB9IGZyb20gJy4uL3BhY2tldC9QbGF5ZXJBY3Rpb25QYWNrZXQnO1xuaW1wb3J0IHR5cGUgUGFja2V0SGFuZGxlciBmcm9tICcuL1BhY2tldEhhbmRsZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGF5ZXJBY3Rpb25IYW5kbGVyIGltcGxlbWVudHMgUGFja2V0SGFuZGxlcjxQbGF5ZXJBY3Rpb25QYWNrZXQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuUGxheWVyQWN0aW9uUGFja2V0O1xuXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZShwYWNrZXQ6IFBsYXllckFjdGlvblBhY2tldCwgc2VydmVyOiBTZXJ2ZXIsIHNlc3Npb246IFBsYXllclNlc3Npb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyID0gc2Vzc2lvbi5nZXRQbGF5ZXIoKTtcbiAgICAgICAgY29uc3Qgd29ybGQgPSBwbGF5ZXIuZ2V0V29ybGQoKTtcblxuICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHdvcmxkLmdldEJsb2NrKFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WCgpLFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WSgpLFxuICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24uZ2V0WigpXG4gICAgICAgICk7XG5cbiAgICAgICAgc3dpdGNoIChwYWNrZXQuYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVEFSVF9CUkVBSzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFrVGltZSA9IE1hdGguY2VpbChibG9jay5nZXRCcmVha1RpbWUobnVsbCwgc2VydmVyKSAqIDIwKTsgLy8gVE9ETzogY2FsY3VsYXRlIHdpdGggaXRlbSBpbiBoYW5kXG5cbiAgICAgICAgICAgICAgICBhd2FpdCB3b3JsZC5zZW5kV29ybGRFdmVudChwYWNrZXQuYmxvY2tQb3NpdGlvbiwgV29ybGRFdmVudC5CTE9DS19TVEFSVF9CUkVBSywgNjU1MzUgLyBicmVha1RpbWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQUJPUlRfQlJFQUs6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3b3JsZC5zZW5kV29ybGRFdmVudChwYWNrZXQuYmxvY2tQb3NpdGlvbiwgV29ybGRFdmVudC5CTE9DS19TVE9QX0JSRUFLLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUT1BfQlJFQUs6IHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGVkIGluIEludmVudG9yeVRyYW5zYWN0aW9uSGFuZGxlclxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQ09OVElOVUVfREVTVFJPWV9CTE9DSzpcbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkNSRUFUSVZFX1BMQVlFUl9ERVNUUk9ZX0JMT0NLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd29ybGQuc2VuZFdvcmxkRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5ibG9ja1Bvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBXb3JsZEV2ZW50LlBBUlRJQ0xFX0RFU1RST1lfQkxPQ0ssXG4gICAgICAgICAgICAgICAgICAgIEJsb2NrTWFwcGluZ3MuZ2V0UnVudGltZUlkKGJsb2NrLmdldE5hbWUoKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQ1JBQ0tfQkxPQ0s6IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgdGhpcy5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlJFU1BBV046IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLkpVTVA6IHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUQVJUX1NQUklOVDoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRTcHJpbnRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RPUF9TUFJJTlQ6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U3ByaW50aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUQVJUX1NORUFLOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldFNuZWFraW5nKHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUT1BfU05FQUs6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U25lYWtpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHNlcnZlci5nZXRMb2dnZXIoKS52ZXJib3NlKGBVbmhhbmRsZWQgcGxheWVyIGFjdGlvbjogJHtwYWNrZXQuYWN0aW9ufWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVVBLElBQXFCLHNCQUFyQixNQUFzRjtDQUNsRixPQUFjLFFBQVEsWUFBWTtDQUVsQyxNQUFhLE9BQU8sUUFBNEIsUUFBZ0IsU0FBdUM7RUFDbkcsTUFBTSxTQUFTLFFBQVEsVUFBVTtFQUNqQyxNQUFNLFFBQVEsT0FBTyxTQUFTO0VBRTlCLE1BQU0sUUFBUSxNQUFNLE1BQU0sU0FDdEIsT0FBTyxjQUFjLEtBQUssR0FDMUIsT0FBTyxjQUFjLEtBQUssR0FDMUIsT0FBTyxjQUFjLEtBQUssQ0FDOUI7RUFFQSxRQUFRLE9BQU8sUUFBZjtHQUNJLEtBQUssYUFBYSxhQUFhO0lBQzNCLE1BQU0sWUFBWSxLQUFLLEtBQUssTUFBTSxhQUFhLE1BQU0sTUFBTSxJQUFJLEVBQUU7SUFFakUsTUFBTSxNQUFNLGVBQWUsT0FBTyxlQUFlLFdBQVcsbUJBQW1CLFFBQVEsU0FBUztJQUNoRztHQUNKO0dBRUEsS0FBSyxhQUFhO0lBQ2QsTUFBTSxNQUFNLGVBQWUsT0FBTyxlQUFlLFdBQVcsa0JBQWtCLENBQUM7SUFDL0U7R0FHSixLQUFLLGFBQWEsWUFFZDtHQUdKLEtBQUssYUFBYTtHQUNsQixLQUFLLGFBQWE7SUFDZCxNQUFNLE1BQU0sZUFDUixPQUFPLGVBQ1AsV0FBVyx3QkFDWCxjQUFjLGFBQWEsTUFBTSxRQUFRLENBQUMsQ0FDOUM7SUFDQTtHQUdKLEtBQUssYUFBYSxhQUVkO0dBR0osS0FBSyxhQUFhLFNBQ2Q7R0FHSixLQUFLLGFBQWEsTUFDZDtHQUdKLEtBQUssYUFBYTtJQUNkLE1BQU0sT0FBTyxhQUFhLElBQUk7SUFDOUI7R0FFSixLQUFLLGFBQWE7SUFDZCxNQUFNLE9BQU8sYUFBYSxLQUFLO0lBQy9CO0dBR0osS0FBSyxhQUFhO0lBQ2QsTUFBTSxPQUFPLFlBQVksSUFBSTtJQUM3QjtHQUVKLEtBQUssYUFBYTtJQUNkLE1BQU0sT0FBTyxZQUFZLEtBQUs7SUFDOUI7R0FHSjtJQUNJLE9BQU8sVUFBVSxFQUFFLFFBQVEsNEJBQTRCLE9BQU8sUUFBUTtJQUN0RTtFQUVSO0NBQ0o7QUFDSiJ9