UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

212 lines (195 loc) 9.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ItemListTableTop = exports.ItemListTop = exports.EntityDamageSourceListTop = exports.EntityListTableTop = exports.EntityListTop = exports.BlockListTableTop = exports.BlockListTop = void 0; const Log_1 = require("../core/Log"); const Utilities_1 = require("../core/Utilities"); const Database_1 = require("../minecraft/Database"); const LegacyDocumentationDefinition_1 = require("../minecraft/docs/LegacyDocumentationDefinition"); const FormMarkdownDocumentationGenerator_1 = require("./FormMarkdownDocumentationGenerator"); const MaxLinesPerTable = 200; exports.BlockListTop = `# Default Minecraft Block Listings Listed below are the available blocks for use in Minecraft: Bedrock Edition. > [!NOTE] > To learn more about how blocks function in Minecraft: Bedrock Edition, please take a look at the [Block JSON Documentation](../BlockReference/index.yml) ## List of Blocks `; exports.BlockListTableTop = `| Name | States | |:-----------|:-----------|`; exports.EntityListTop = `# Default Minecraft Entity Listings An overview of the Entities that can be used in Addons for Minecraft: Bedrock Edition. > [!NOTE] > To learn more about how Entities function in Minecraft: Bedrock Edition, please take a look at the [Entity JSON Documentation](../EntityReference/index.yml) ## Entities List Listed below are the available Entities for use in Minecraft: Bedrock Edition and their respective ID value. `; exports.EntityListTableTop = `| Identifier| Full ID| Short ID | |:-----------|:-----------|:-----------|`; exports.EntityDamageSourceListTop = `## Entity Damage Source Listed below are the available Damage Sources that can be used when working with Entity components and filters. | Damage Source| |:-----------|`; exports.ItemListTop = `# Default Minecraft Item Listings Listed below are the available Items for use in Minecraft: Bedrock Edition. > [!NOTE] > To learn more about how Items function in Minecraft: Bedrock Edition, please take a look at the [Item JSON Documentation](../ItemReference/index.yml) ## List of Items `; exports.ItemListTableTop = `| Name | ID | |:-----------|:-----------|`; class TableMarkdownDocumentationGenerator { async generateMarkdown(outputFolder) { const addonDocs = await Database_1.default.getAddonsDocs(); const blocksMetadata = await Database_1.default.getBlocksMetadata(); if (!addonDocs || !blocksMetadata) { Log_1.default.unexpectedUndefined(); return; } await this.generateBlockListTable(blocksMetadata, outputFolder); await this.generateEntityListTable(outputFolder); await this.generateEntityDamageSourcesListTable(outputFolder); await this.generateItemListTable(outputFolder); } async generateEntityListTable(outputFolder) { const entitiesNode = await LegacyDocumentationDefinition_1.default.loadNode("addons", "/Entities/", true); if (!entitiesNode) { return; } const addonEntityLines = []; addonEntityLines.push(Utilities_1.default.stringFormat(FormMarkdownDocumentationGenerator_1.MarkdownTop, "Default Minecraft Entity Listings", "A reference document detailing the entities and damage sources used in addons for Minecraft: Bedrock Edition")); addonEntityLines.push(exports.EntityListTop); addonEntityLines.push(exports.EntityListTableTop); const previewFolder = await Database_1.default.getPreviewVanillaFolder(); if (!previewFolder) { return; } const entitiesFolder = await previewFolder.getFolderFromRelativePath("/behavior_pack/entities/"); if (!entitiesFolder) { return; } await entitiesFolder.load(); let i = 0; for (const node of entitiesNode.nodes) { if (node.name && node.description && node.default) { if (i % MaxLinesPerTable === MaxLinesPerTable - 1) { addonEntityLines.push(""); addonEntityLines.push(exports.EntityListTableTop); } let line = "| "; if (entitiesFolder.files[node.name + ".json"]) { line += "[" + node.name + "](https://github.com/Mojang/bedrock-samples/blob/preview/behavior_pack/entities/" + node.name + ".json)"; } else { line += node.name; } line += " | " + node.default + " | " + node.description + " |"; addonEntityLines.push(line); i++; } } const file = await outputFolder.ensureFileFromRelativePath("/VanillaListingsReference/Entities.md"); file.setContent(addonEntityLines.join("\r\n")); await file.saveContent(); } async generateEntityDamageSourcesListTable(outputFolder) { const entitiesNode = await LegacyDocumentationDefinition_1.default.loadNode("addons", "/Entity Damage Source/", true); if (!entitiesNode) { return; } const addonEntityLines = []; addonEntityLines.push(Utilities_1.default.stringFormat(FormMarkdownDocumentationGenerator_1.MarkdownTop, "Default Minecraft Entity Damage Source Listings", "A reference document detailing the damage sources used in addons for Minecraft: Bedrock Edition")); addonEntityLines.push(exports.EntityDamageSourceListTop); for (const node of entitiesNode.nodes) { if (node.name) { let line = "| "; line += node.name + " |"; addonEntityLines.push(line); } } const file = await outputFolder.ensureFileFromRelativePath("/VanillaListingsReference/AddonEntityDamageSources.md"); file.setContent(addonEntityLines.join("\r\n")); await file.saveContent(); } async generateItemListTable(outputFolder) { const itemsNode = await LegacyDocumentationDefinition_1.default.loadNode("addons", "/Items/", true); if (!itemsNode) { return; } const addonItemLines = []; addonItemLines.push(Utilities_1.default.stringFormat(FormMarkdownDocumentationGenerator_1.MarkdownTop, "Default Minecraft Item Listings", "A reference document detailing the items and damage sources used in addons for Minecraft: Bedrock Edition")); addonItemLines.push(exports.ItemListTop); addonItemLines.push(exports.ItemListTableTop); const previewFolder = await Database_1.default.getPreviewVanillaFolder(); if (!previewFolder) { return; } const itemsFolder = await previewFolder.getFolderFromRelativePath("/behavior_pack/items/"); if (!itemsFolder) { return; } await itemsFolder.load(); let i = 0; for (const node of itemsNode.nodes) { if (node.name && node.type) { if (i % MaxLinesPerTable === MaxLinesPerTable - 1) { addonItemLines.push(""); addonItemLines.push(exports.ItemListTableTop); } let line = "| "; if (itemsFolder.files[node.name + ".json"]) { line += "[" + node.name + "](https://github.com/Mojang/bedrock-samples/blob/preview/behavior_pack/items/" + node.name + ".json)"; } else { line += node.name; } line += " | " + node.type + " |"; addonItemLines.push(line); i++; } } const file = await outputFolder.ensureFileFromRelativePath("/VanillaListingsReference/Items.md"); file.setContent(addonItemLines.join("\r\n")); await file.saveContent(); } async generateBlockListTable(blocksMetadata, outputFolder) { const addonBlockLines = []; addonBlockLines.push(Utilities_1.default.stringFormat(FormMarkdownDocumentationGenerator_1.MarkdownTop, "Default Minecraft Block Listings", "A reference document listing the available blocks for use in Minecraft: Bedrock Edition")); addonBlockLines.push(exports.BlockListTop); addonBlockLines.push(exports.BlockListTableTop); let i = 0; for (const dataItem of blocksMetadata.data_items) { if (i % MaxLinesPerTable === MaxLinesPerTable - 1) { addonBlockLines.push(""); addonBlockLines.push(exports.BlockListTableTop); } let line = "| " + dataItem.name + " | "; if (dataItem.properties.length > 0) { let propIndex = 0; for (const prop of dataItem.properties) { if (propIndex > 0) { line += ", "; } line += prop.name; propIndex++; } } line += " |"; addonBlockLines.push(line); i++; } const file = await outputFolder.ensureFileFromRelativePath("/VanillaListingsReference/Blocks.md"); file.setContent(addonBlockLines.join("\r\n")); await file.saveContent(); } } exports.default = TableMarkdownDocumentationGenerator; //# sourceMappingURL=../maps/docgen/TableMarkdownDocumentationGenerator.js.map