@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
43 lines (42 loc) • 6.1 kB
JavaScript
import { Command } from "../Command.es.js";
import { argument, integer, literal, string } from "@jsprismarine/brigadier";
//#region src/command/vanilla/TimeCommand.ts
var TimeCommand = class 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()}`);
}));
}
};
//#endregion
export { TimeCommand as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUNvbW1hbmQuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmQvdmFuaWxsYS9UaW1lQ29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1hbmREaXNwYXRjaGVyIH0gZnJvbSAnQGpzcHJpc21hcmluZS9icmlnYWRpZXInO1xuaW1wb3J0IHsgYXJndW1lbnQsIGludGVnZXIsIGxpdGVyYWwsIHN0cmluZyB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvYnJpZ2FkaWVyJztcblxuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4uLy4uL1BsYXllcic7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi4vQ29tbWFuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBpZDogJ21pbmVjcmFmdDp0aW1lJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0LCBzZXQgYW5kIGFkZCB0byB0aGUgY3VycmVudCB0aW1lLicsXG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAnbWluZWNyYWZ0LmNvbW1hbmQudGltZSdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlZ2lzdGVyKGRpc3BhdGNoZXI6IENvbW1hbmREaXNwYXRjaGVyPGFueT4pIHtcbiAgICAgICAgZGlzcGF0Y2hlci5yZWdpc3RlcihcbiAgICAgICAgICAgIGxpdGVyYWwoJ3RpbWUnKVxuICAgICAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCgnYWN0aW9uJywgc3RyaW5nKCkpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCgndmFsdWUnLCBpbnRlZ2VyKCkpLmV4ZWN1dGVzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29udGV4dC5nZXRTb3VyY2UoKSBhcyBQbGF5ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ybGQgPSBzb3VyY2UuZ2V0V29ybGQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29udGV4dC5nZXRBcmd1bWVudCgndmFsdWUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlIGNhbiBub3QgYmUgbGVzcyB0aGFuIDAnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29udGV4dC5nZXRBcmd1bWVudCgnYWN0aW9uJykudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGQuc2V0VGlja3ModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZC5zZXRUaWNrcyh3b3JsZC5nZXRUaWNrcygpICsgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N1Yic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZC5zZXRUaWNrcyh3b3JsZC5nZXRUaWNrcygpIC0gdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXJndW1lbnQgXCIke2NvbnRleHQuZ2V0QXJndW1lbnQoJ2FjdGlvbicpfVwiYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgd29ybGQuc2VuZFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzb3VyY2Uuc2VuZE1lc3NhZ2UoYFNldCB0aW1lIHRvOiAke3dvcmxkLmdldFRpY2tzKCl9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBTZXQgdGltZSB0bzogJHt3b3JsZC5nZXRUaWNrcygpfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlcyhhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjb250ZXh0LmdldFNvdXJjZSgpIGFzIFBsYXllcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ybGQgPSBzb3VyY2UuZ2V0V29ybGQoKTtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBzb3VyY2Uuc2VuZE1lc3NhZ2UoYFRoZSBjdXJyZW50IHRpbWUgaXMgJHt3b3JsZC5nZXRUaWNrcygpfWApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFNQSxJQUFxQixjQUFyQixjQUF5QyxRQUFRO0NBQzdDLGNBQXFCO0VBQ2pCLE1BQU07R0FDRixJQUFJO0dBQ0osYUFBYTtHQUNiLFlBQVk7RUFDaEIsQ0FBQztDQUNMO0NBRUEsTUFBYSxTQUFTLFlBQW9DO0VBQ3RELFdBQVcsU0FDUCxRQUFRLE1BQU0sRUFDVCxLQUNHLFNBQVMsVUFBVSxPQUFPLENBQUMsRUFBRSxLQUN6QixTQUFTLFNBQVMsUUFBUSxDQUFDLEVBQUUsU0FBUyxPQUFPLFlBQVk7R0FDckQsTUFBTSxTQUFTLFFBQVEsVUFBVTtHQUNqQyxNQUFNLFFBQVEsT0FBTyxTQUFTO0dBRTlCLE1BQU0sUUFBUSxRQUFRLFlBQVksT0FBTztHQUN6QyxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksTUFBTSw4QkFBOEI7R0FFN0QsUUFBUSxRQUFRLFlBQVksUUFBUSxFQUFFLFlBQVksR0FBbEQ7SUFDSSxLQUFLO0tBQ0QsTUFBTSxTQUFTLEtBQUs7S0FDcEI7SUFDSixLQUFLO0tBQ0QsTUFBTSxTQUFTLE1BQU0sU0FBUyxJQUFJLEtBQUs7S0FDdkM7SUFDSixLQUFLO0tBQ0QsTUFBTSxTQUFTLE1BQU0sU0FBUyxJQUFJLEtBQUs7S0FDdkM7SUFDSixTQUNJLE1BQU0sSUFBSSxNQUFNLHFCQUFxQixRQUFRLFlBQVksUUFBUSxFQUFFLEVBQUU7R0FDN0U7R0FFQSxNQUFNLE1BQU0sU0FBUztHQUNyQixNQUFNLE9BQU8sWUFBWSxnQkFBZ0IsTUFBTSxTQUFTLEdBQUc7R0FDM0QsT0FBTyxnQkFBZ0IsTUFBTSxTQUFTO0VBQzFDLENBQUMsQ0FDTCxDQUNKLEVBQ0MsU0FBUyxPQUFPLFlBQVk7R0FDekIsTUFBTSxTQUFTLFFBQVEsVUFBVTtHQUNqQyxNQUFNLFFBQVEsT0FBTyxTQUFTO0dBRTlCLE1BQU0sT0FBTyxZQUFZLHVCQUF1QixNQUFNLFNBQVMsR0FBRztFQUN0RSxDQUFDLENBQ1Q7Q0FDSjtBQUNKIn0=