@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
78 lines (77 loc) • 4.89 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ItemCountsInfoGeneratorTest = void 0;
const ProjectInfoItem_1 = __importDefault(require("./ProjectInfoItem"));
const IProjectItemData_1 = require("../app/IProjectItemData");
const IInfoItemData_1 = require("./IInfoItemData");
const IProjectItemData_2 = require("../app/IProjectItemData");
const ProjectItemUtilities_1 = __importDefault(require("../app/ProjectItemUtilities"));
const TopicTestIdBase = 200;
var ItemCountsInfoGeneratorTest;
(function (ItemCountsInfoGeneratorTest) {
ItemCountsInfoGeneratorTest[ItemCountsInfoGeneratorTest["behaviorPackManifest"] = 102] = "behaviorPackManifest";
ItemCountsInfoGeneratorTest[ItemCountsInfoGeneratorTest["resourcePackManifest"] = 103] = "resourcePackManifest";
})(ItemCountsInfoGeneratorTest || (exports.ItemCountsInfoGeneratorTest = ItemCountsInfoGeneratorTest = {}));
/**
* Aggregates counts of various content types in a project.
*
* @see {@link ../../public/data/forms/mctoolsval/items.form.json} for topic definitions
*/
class ItemCountsInfoGenerator {
id = "ITEMS";
title = "Minimum Definition of a Pack";
getTopicData(topicId) {
if (topicId > TopicTestIdBase && topicId < TopicTestIdBase + IProjectItemData_2.MaxItemTypes) {
return {
title: ProjectItemUtilities_1.default.getDescriptionForType(topicId - TopicTestIdBase) + " count",
};
}
return {
title: topicId.toString(),
};
}
summarize(info, infoSet) {
info.behaviorPackManifestCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.behaviorPackManifestJson);
info.unknownJsonCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.unknownJson);
info.entityTypeManifestCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.entityTypeBehavior);
info.itemTypeManifestCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.itemTypeBehavior);
info.blockTypeManifestCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.blockTypeBehavior);
info.resourcePackManifestCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.resourcePackManifestJson);
info.worldCount =
infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.MCWorld) +
infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.worldFolder);
info.entityTypeResourceCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.entityTypeResource);
info.behaviorPackAnimationCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.animationBehaviorJson);
info.behaviorPackAnimationControllerCount = infoSet.getFirstNumberDataValue(this.id, TopicTestIdBase + IProjectItemData_1.ProjectItemType.animationControllerBehaviorJson);
}
async generate(project, contentIndex) {
const items = [];
const typeCounts = [];
for (let i = 0; i < IProjectItemData_2.MaxItemTypes; i++) {
typeCounts[i] = 0;
}
const itemsCopy = project.getItemsCopy();
for (let i = 0; i < itemsCopy.length; i++) {
const pi = itemsCopy[i];
typeCounts[pi.itemType]++;
if (pi.itemType === IProjectItemData_1.ProjectItemType.behaviorPackManifestJson) {
items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.info, this.id, ItemCountsInfoGeneratorTest.behaviorPackManifest, "Behavior pack manifest found", pi));
}
else if (pi.itemType === IProjectItemData_1.ProjectItemType.resourcePackManifestJson) {
items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.info, this.id, ItemCountsInfoGeneratorTest.resourcePackManifest, "Resource pack manifest found", pi));
}
}
for (let i = 0; i < IProjectItemData_2.MaxItemTypes; i++) {
if (typeCounts[i] > 0) {
items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.info, this.id, TopicTestIdBase + i, ProjectItemUtilities_1.default.getDescriptionForType(i) + " item count", undefined, typeCounts[i]));
}
}
return items;
}
}
exports.default = ItemCountsInfoGenerator;