@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
55 lines (54 loc) • 8.52 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_block_BlockMappings = require("../../block/BlockMappings.cjs.cjs");
const require_network_Identifiers = require("../Identifiers.cjs.cjs");
const require_network_packet_PlayerActionPacket = require("../packet/PlayerActionPacket.cjs.cjs");
const require_network_packet_WorldEventPacket = require("../packet/WorldEventPacket.cjs.cjs");
//#region src/network/handler/PlayerActionHandler.ts
var PlayerActionHandler = class {
static NetID = require_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 require_network_packet_PlayerActionPacket.PlayerAction.START_BREAK: {
const breakTime = Math.ceil(block.getBreakTime(null, server) * 20);
await world.sendWorldEvent(packet.blockPosition, require_network_packet_WorldEventPacket.WorldEvent.BLOCK_START_BREAK, 65535 / breakTime);
return;
}
case require_network_packet_PlayerActionPacket.PlayerAction.ABORT_BREAK:
await world.sendWorldEvent(packet.blockPosition, require_network_packet_WorldEventPacket.WorldEvent.BLOCK_STOP_BREAK, 0);
return;
case require_network_packet_PlayerActionPacket.PlayerAction.STOP_BREAK: return;
case require_network_packet_PlayerActionPacket.PlayerAction.CONTINUE_DESTROY_BLOCK:
case require_network_packet_PlayerActionPacket.PlayerAction.CREATIVE_PLAYER_DESTROY_BLOCK:
await world.sendWorldEvent(packet.blockPosition, require_network_packet_WorldEventPacket.WorldEvent.PARTICLE_DESTROY_BLOCK, require_block_BlockMappings.BlockMappings.getRuntimeId(block.getName()));
return;
case require_network_packet_PlayerActionPacket.PlayerAction.CRACK_BLOCK: return;
case require_network_packet_PlayerActionPacket.PlayerAction.RESPAWN: return;
case require_network_packet_PlayerActionPacket.PlayerAction.JUMP: return;
case require_network_packet_PlayerActionPacket.PlayerAction.START_SPRINT:
await player.setSprinting(true);
return;
case require_network_packet_PlayerActionPacket.PlayerAction.STOP_SPRINT:
await player.setSprinting(false);
return;
case require_network_packet_PlayerActionPacket.PlayerAction.START_SNEAK:
await player.setSneaking(true);
return;
case require_network_packet_PlayerActionPacket.PlayerAction.STOP_SNEAK:
await player.setSneaking(false);
return;
default:
server.getLogger().verbose(`Unhandled player action: ${packet.action}`);
break;
}
}
};
//#endregion
exports.default = PlayerActionHandler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyQWN0aW9uSGFuZGxlci5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXR3b3JrL2hhbmRsZXIvUGxheWVyQWN0aW9uSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXb3JsZEV2ZW50IH0gZnJvbSAnLi4vcGFja2V0L1dvcmxkRXZlbnRQYWNrZXQnO1xuXG5pbXBvcnQgdHlwZSB7IFBsYXllclNlc3Npb24gfSBmcm9tICcuLi8uLi8nO1xuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uLy4uL1NlcnZlcic7XG5pbXBvcnQgeyBCbG9ja01hcHBpbmdzIH0gZnJvbSAnLi4vLi4vYmxvY2svQmxvY2tNYXBwaW5ncyc7XG5pbXBvcnQgSWRlbnRpZmllcnMgZnJvbSAnLi4vSWRlbnRpZmllcnMnO1xuaW1wb3J0IHR5cGUgUGxheWVyQWN0aW9uUGFja2V0IGZyb20gJy4uL3BhY2tldC9QbGF5ZXJBY3Rpb25QYWNrZXQnO1xuaW1wb3J0IHsgUGxheWVyQWN0aW9uIH0gZnJvbSAnLi4vcGFja2V0L1BsYXllckFjdGlvblBhY2tldCc7XG5pbXBvcnQgdHlwZSBQYWNrZXRIYW5kbGVyIGZyb20gJy4vUGFja2V0SGFuZGxlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYXllckFjdGlvbkhhbmRsZXIgaW1wbGVtZW50cyBQYWNrZXRIYW5kbGVyPFBsYXllckFjdGlvblBhY2tldD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgTmV0SUQgPSBJZGVudGlmaWVycy5QbGF5ZXJBY3Rpb25QYWNrZXQ7XG5cbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlKHBhY2tldDogUGxheWVyQWN0aW9uUGFja2V0LCBzZXJ2ZXI6IFNlcnZlciwgc2Vzc2lvbjogUGxheWVyU2Vzc2lvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwbGF5ZXIgPSBzZXNzaW9uLmdldFBsYXllcigpO1xuICAgICAgICBjb25zdCB3b3JsZCA9IHBsYXllci5nZXRXb3JsZCgpO1xuXG4gICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgd29ybGQuZ2V0QmxvY2soXG4gICAgICAgICAgICBwYWNrZXQuYmxvY2tQb3NpdGlvbi5nZXRYKCksXG4gICAgICAgICAgICBwYWNrZXQuYmxvY2tQb3NpdGlvbi5nZXRZKCksXG4gICAgICAgICAgICBwYWNrZXQuYmxvY2tQb3NpdGlvbi5nZXRaKClcbiAgICAgICAgKTtcblxuICAgICAgICBzd2l0Y2ggKHBhY2tldC5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUGxheWVyQWN0aW9uLlNUQVJUX0JSRUFLOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJlYWtUaW1lID0gTWF0aC5jZWlsKGJsb2NrLmdldEJyZWFrVGltZShudWxsLCBzZXJ2ZXIpICogMjApOyAvLyBUT0RPOiBjYWxjdWxhdGUgd2l0aCBpdGVtIGluIGhhbmRcblxuICAgICAgICAgICAgICAgIGF3YWl0IHdvcmxkLnNlbmRXb3JsZEV2ZW50KHBhY2tldC5ibG9ja1Bvc2l0aW9uLCBXb3JsZEV2ZW50LkJMT0NLX1NUQVJUX0JSRUFLLCA2NTUzNSAvIGJyZWFrVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5BQk9SVF9CUkVBSzoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdvcmxkLnNlbmRXb3JsZEV2ZW50KHBhY2tldC5ibG9ja1Bvc2l0aW9uLCBXb3JsZEV2ZW50LkJMT0NLX1NUT1BfQlJFQUssIDApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RPUF9CUkVBSzoge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZWQgaW4gSW52ZW50b3J5VHJhbnNhY3Rpb25IYW5kbGVyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5DT05USU5VRV9ERVNUUk9ZX0JMT0NLOlxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uQ1JFQVRJVkVfUExBWUVSX0RFU1RST1lfQkxPQ0s6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3b3JsZC5zZW5kV29ybGRFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LmJsb2NrUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgIFdvcmxkRXZlbnQuUEFSVElDTEVfREVTVFJPWV9CTE9DSyxcbiAgICAgICAgICAgICAgICAgICAgQmxvY2tNYXBwaW5ncy5nZXRSdW50aW1lSWQoYmxvY2suZ2V0TmFtZSgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5DUkFDS19CTE9DSzoge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSB0aGlzLlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uUkVTUEFXTjoge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uSlVNUDoge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RBUlRfU1BSSU5UOiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldFNwcmludGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFBsYXllckFjdGlvbi5TVE9QX1NQUklOVDoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRTcHJpbnRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RBUlRfU05FQUs6IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0U25lYWtpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBQbGF5ZXJBY3Rpb24uU1RPUF9TTkVBSzoge1xuICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRTbmVha2luZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgc2VydmVyLmdldExvZ2dlcigpLnZlcmJvc2UoYFVuaGFuZGxlZCBwbGF5ZXIgYWN0aW9uOiAke3BhY2tldC5hY3Rpb259YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFVQSxJQUFxQixzQkFBckIsTUFBc0Y7Q0FDbEYsT0FBYyxRQUFRLDRCQUFBLFFBQVk7Q0FFbEMsTUFBYSxPQUFPLFFBQTRCLFFBQWdCLFNBQXVDO0VBQ25HLE1BQU0sU0FBUyxRQUFRLFVBQVU7RUFDakMsTUFBTSxRQUFRLE9BQU8sU0FBUztFQUU5QixNQUFNLFFBQVEsTUFBTSxNQUFNLFNBQ3RCLE9BQU8sY0FBYyxLQUFLLEdBQzFCLE9BQU8sY0FBYyxLQUFLLEdBQzFCLE9BQU8sY0FBYyxLQUFLLENBQzlCO0VBRUEsUUFBUSxPQUFPLFFBQWY7R0FDSSxLQUFLLDBDQUFBLGFBQWEsYUFBYTtJQUMzQixNQUFNLFlBQVksS0FBSyxLQUFLLE1BQU0sYUFBYSxNQUFNLE1BQU0sSUFBSSxFQUFFO0lBRWpFLE1BQU0sTUFBTSxlQUFlLE9BQU8sZUFBZSx3Q0FBQSxXQUFXLG1CQUFtQixRQUFRLFNBQVM7SUFDaEc7R0FDSjtHQUVBLEtBQUssMENBQUEsYUFBYTtJQUNkLE1BQU0sTUFBTSxlQUFlLE9BQU8sZUFBZSx3Q0FBQSxXQUFXLGtCQUFrQixDQUFDO0lBQy9FO0dBR0osS0FBSywwQ0FBQSxhQUFhLFlBRWQ7R0FHSixLQUFLLDBDQUFBLGFBQWE7R0FDbEIsS0FBSywwQ0FBQSxhQUFhO0lBQ2QsTUFBTSxNQUFNLGVBQ1IsT0FBTyxlQUNQLHdDQUFBLFdBQVcsd0JBQ1gsNEJBQUEsY0FBYyxhQUFhLE1BQU0sUUFBUSxDQUFDLENBQzlDO0lBQ0E7R0FHSixLQUFLLDBDQUFBLGFBQWEsYUFFZDtHQUdKLEtBQUssMENBQUEsYUFBYSxTQUNkO0dBR0osS0FBSywwQ0FBQSxhQUFhLE1BQ2Q7R0FHSixLQUFLLDBDQUFBLGFBQWE7SUFDZCxNQUFNLE9BQU8sYUFBYSxJQUFJO0lBQzlCO0dBRUosS0FBSywwQ0FBQSxhQUFhO0lBQ2QsTUFBTSxPQUFPLGFBQWEsS0FBSztJQUMvQjtHQUdKLEtBQUssMENBQUEsYUFBYTtJQUNkLE1BQU0sT0FBTyxZQUFZLElBQUk7SUFDN0I7R0FFSixLQUFLLDBDQUFBLGFBQWE7SUFDZCxNQUFNLE9BQU8sWUFBWSxLQUFLO0lBQzlCO0dBR0o7SUFDSSxPQUFPLFVBQVUsRUFBRSxRQUFRLDRCQUE0QixPQUFPLFFBQVE7SUFDdEU7RUFFUjtDQUNKO0FBQ0oifQ==