UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

50 lines (47 loc) 7.14 kB
import { literal, argument, string, integer } from '@jsprismarine/brigadier'; import { Command } from '../Command.es.js'; class TimeCommand extends Command { constructor() { super({ id: "minecraft:time", description: "Get, set and add to the current time.", permission: "minecraft.command.time" }); } async register(dispatcher) { dispatcher.register( literal("time").then( argument("action", string()).then( argument("value", integer()).executes(async (context) => { const source = context.getSource(); const world = source.getWorld(); const value = context.getArgument("value"); if (value < 0) throw new Error("value can not be less than 0"); switch (context.getArgument("action").toLowerCase()) { case "set": world.setTicks(value); break; case "add": world.setTicks(world.getTicks() + value); break; case "sub": world.setTicks(world.getTicks() - value); break; default: throw new Error(`Invalid argument "${context.getArgument("action")}"`); } await world.sendTime(); await source.sendMessage(`Set time to: ${world.getTicks()}`); return `Set time to: ${world.getTicks()}`; }) ) ).executes(async (context) => { const source = context.getSource(); const world = source.getWorld(); await source.sendMessage(`The current time is ${world.getTicks()}`); }) ); } } export { TimeCommand as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUNvbW1hbmQuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kL3ZhbmlsbGEvVGltZUNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kRGlzcGF0Y2hlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcbmltcG9ydCB7IGFyZ3VtZW50LCBpbnRlZ2VyLCBsaXRlcmFsLCBzdHJpbmcgfSBmcm9tICdAanNwcmlzbWFyaW5lL2JyaWdhZGllcic7XG5cbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi8uLi9QbGF5ZXInO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJy4uL0NvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgaWQ6ICdtaW5lY3JhZnQ6dGltZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0dldCwgc2V0IGFuZCBhZGQgdG8gdGhlIGN1cnJlbnQgdGltZS4nLFxuICAgICAgICAgICAgcGVybWlzc2lvbjogJ21pbmVjcmFmdC5jb21tYW5kLnRpbWUnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWdpc3RlcihkaXNwYXRjaGVyOiBDb21tYW5kRGlzcGF0Y2hlcjxhbnk+KSB7XG4gICAgICAgIGRpc3BhdGNoZXIucmVnaXN0ZXIoXG4gICAgICAgICAgICBsaXRlcmFsKCd0aW1lJylcbiAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ2FjdGlvbicsIHN0cmluZygpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQoJ3ZhbHVlJywgaW50ZWdlcigpKS5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHQuZ2V0U291cmNlKCkgYXMgUGxheWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmxkID0gc291cmNlLmdldFdvcmxkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRleHQuZ2V0QXJndW1lbnQoJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkgdGhyb3cgbmV3IEVycm9yKCd2YWx1ZSBjYW4gbm90IGJlIGxlc3MgdGhhbiAwJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRleHQuZ2V0QXJndW1lbnQoJ2FjdGlvbicpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2V0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkLnNldFRpY2tzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGQuc2V0VGlja3Mod29ybGQuZ2V0VGlja3MoKSArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdWInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGQuc2V0VGlja3Mod29ybGQuZ2V0VGlja3MoKSAtIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50IFwiJHtjb250ZXh0LmdldEFyZ3VtZW50KCdhY3Rpb24nKX1cImApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdvcmxkLnNlbmRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLnNlbmRNZXNzYWdlKGBTZXQgdGltZSB0bzogJHt3b3JsZC5nZXRUaWNrcygpfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgU2V0IHRpbWUgdG86ICR7d29ybGQuZ2V0VGlja3MoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZXMoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmxkID0gc291cmNlLmdldFdvcmxkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc291cmNlLnNlbmRNZXNzYWdlKGBUaGUgY3VycmVudCB0aW1lIGlzICR7d29ybGQuZ2V0VGlja3MoKX1gKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFxQixvQkFBb0IsT0FBUSxDQUFBO0FBQUEsRUFDdEMsV0FBYyxHQUFBO0FBQ2pCLElBQU0sS0FBQSxDQUFBO0FBQUEsTUFDRixFQUFJLEVBQUEsZ0JBQUE7QUFBQSxNQUNKLFdBQWEsRUFBQSx1Q0FBQTtBQUFBLE1BQ2IsVUFBWSxFQUFBO0FBQUEsS0FDZixDQUFBO0FBQUE7QUFDTCxFQUVBLE1BQWEsU0FBUyxVQUFvQyxFQUFBO0FBQ3RELElBQVcsVUFBQSxDQUFBLFFBQUE7QUFBQSxNQUNQLE9BQUEsQ0FBUSxNQUFNLENBQ1QsQ0FBQSxJQUFBO0FBQUEsUUFDRyxRQUFTLENBQUEsUUFBQSxFQUFVLE1BQU8sRUFBQyxDQUFFLENBQUEsSUFBQTtBQUFBLFVBQ3pCLFNBQVMsT0FBUyxFQUFBLE9BQUEsRUFBUyxDQUFFLENBQUEsUUFBQSxDQUFTLE9BQU8sT0FBWSxLQUFBO0FBQ3JELFlBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsWUFBTSxNQUFBLEtBQUEsR0FBUSxPQUFPLFFBQVMsRUFBQTtBQUU5QixZQUFNLE1BQUEsS0FBQSxHQUFRLE9BQVEsQ0FBQSxXQUFBLENBQVksT0FBTyxDQUFBO0FBQ3pDLFlBQUEsSUFBSSxLQUFRLEdBQUEsQ0FBQSxFQUFTLE1BQUEsSUFBSSxNQUFNLDhCQUE4QixDQUFBO0FBRTdELFlBQUEsUUFBUSxPQUFRLENBQUEsV0FBQSxDQUFZLFFBQVEsQ0FBQSxDQUFFLGFBQWU7QUFBQSxjQUNqRCxLQUFLLEtBQUE7QUFDRCxnQkFBQSxLQUFBLENBQU0sU0FBUyxLQUFLLENBQUE7QUFDcEIsZ0JBQUE7QUFBQSxjQUNKLEtBQUssS0FBQTtBQUNELGdCQUFBLEtBQUEsQ0FBTSxRQUFTLENBQUEsS0FBQSxDQUFNLFFBQVMsRUFBQSxHQUFJLEtBQUssQ0FBQTtBQUN2QyxnQkFBQTtBQUFBLGNBQ0osS0FBSyxLQUFBO0FBQ0QsZ0JBQUEsS0FBQSxDQUFNLFFBQVMsQ0FBQSxLQUFBLENBQU0sUUFBUyxFQUFBLEdBQUksS0FBSyxDQUFBO0FBQ3ZDLGdCQUFBO0FBQUEsY0FDSjtBQUNJLGdCQUFBLE1BQU0sSUFBSSxLQUFNLENBQUEsQ0FBQSxrQkFBQSxFQUFxQixRQUFRLFdBQVksQ0FBQSxRQUFRLENBQUMsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUFBO0FBRzdFLFlBQUEsTUFBTSxNQUFNLFFBQVMsRUFBQTtBQUNyQixZQUFBLE1BQU0sT0FBTyxXQUFZLENBQUEsQ0FBQSxhQUFBLEVBQWdCLEtBQU0sQ0FBQSxRQUFBLEVBQVUsQ0FBRSxDQUFBLENBQUE7QUFDM0QsWUFBTyxPQUFBLENBQUEsYUFBQSxFQUFnQixLQUFNLENBQUEsUUFBQSxFQUFVLENBQUEsQ0FBQTtBQUFBLFdBQzFDO0FBQUE7QUFDTCxPQUNKLENBQ0MsUUFBUyxDQUFBLE9BQU8sT0FBWSxLQUFBO0FBQ3pCLFFBQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxTQUFVLEVBQUE7QUFDakMsUUFBTSxNQUFBLEtBQUEsR0FBUSxPQUFPLFFBQVMsRUFBQTtBQUU5QixRQUFBLE1BQU0sT0FBTyxXQUFZLENBQUEsQ0FBQSxvQkFBQSxFQUF1QixLQUFNLENBQUEsUUFBQSxFQUFVLENBQUUsQ0FBQSxDQUFBO0FBQUEsT0FDckU7QUFBQSxLQUNUO0FBQUE7QUFFUjs7OzsifQ==