@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
77 lines (72 loc) • 9.55 kB
JavaScript
;
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==