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