bedrock-development
Version:
APIs for creating and editing files related to Minecraft Bedrock development.
52 lines (47 loc) • 2.03 kB
text/typescript
import { MOJANG, MinecraftWorld } from "../../types/index.js";
import { Argument, Option, OptionValues } from "commander";
import { Directories } from "../../file_manager.js";
import { CommandMap } from "../command_map.js";
export interface WorldNewOptions {
test: boolean;
flat: boolean;
mode?: 0|1|2|3;
local: boolean;
bpack?: string;
rpack?: string;
}
CommandMap.addCommand("root.world.new", {
parent: CommandMap.getCommandEntry("root.world")?.command,
commandOptions(command) {
command
.name("new")
.description("create new world")
.addArgument(new Argument("<name>", "the world name"))
.addOption(new Option("-t, --test", "create a test world with pre-configured gamerules"))
.addOption(new Option("-f, --flat", "create a flat world"))
.addOption(new Option("-m, --mode <gamemode>", "gamemode").choices(["0", "1", "2", "3"]).argParser(parseInt))
.addOption(new Option("-l, --local", "use the local packs in this workspace"))
.addOption(new Option("-b, --bpack <folder name>", "the name of the behavior pack to add"))
.addOption(new Option("-r, --rpack <folder name>", "the name of the resource pack to add"));
},
commandAction: triggerWorldsNew,
});
async function triggerWorldsNew(name: string, options: WorldNewOptions) {
let behavior_pack_manifest_path: string|undefined = options.bpack;
let resource_pack_manifest_path: string|undefined = options.rpack;
if (options.local) {
behavior_pack_manifest_path = Directories.BEHAVIOR_PATH + 'manifest.json';
resource_pack_manifest_path = Directories.RESOURCE_PATH + 'manifest.json';
} else {
behavior_pack_manifest_path = MOJANG + '/development_behavior_packs/' + behavior_pack_manifest_path + '/manifest.json';
resource_pack_manifest_path = MOJANG + '/development_resource_packs/' + resource_pack_manifest_path + '/manifest.json';
}
MinecraftWorld.create(name, {
behavior_pack_manifest_path,
resource_pack_manifest_path,
gamemode: options.mode,
flatworld: options.flat,
testworld: options.test,
}
);
}