@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
106 lines (104 loc) • 5.38 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.BlocksCatalogInfo = exports.BlocksCatalogUpdate = void 0;
const ProjectInfoItem_1 = require("../info/ProjectInfoItem");
const IProjectItemData_1 = require("../app/IProjectItemData");
const IInfoItemData_1 = require("../info/IInfoItemData");
const ProjectUpdateResult_1 = require("../updates/ProjectUpdateResult");
const IUpdateResult_1 = require("../updates/IUpdateResult");
const BlocksCatalogDefinition_1 = require("../minecraft/BlocksCatalogDefinition");
var BlocksCatalogUpdate;
(function (BlocksCatalogUpdate) {
BlocksCatalogUpdate[BlocksCatalogUpdate["removeUnusedBlockResourceIdentifiers"] = 1051] = "removeUnusedBlockResourceIdentifiers";
})(BlocksCatalogUpdate = exports.BlocksCatalogUpdate || (exports.BlocksCatalogUpdate = {}));
var BlocksCatalogInfo;
(function (BlocksCatalogInfo) {
BlocksCatalogInfo[BlocksCatalogInfo["unusedBlockCatalogResource"] = 100] = "unusedBlockCatalogResource";
BlocksCatalogInfo[BlocksCatalogInfo["foundBlockCatalogResource"] = 101] = "foundBlockCatalogResource";
BlocksCatalogInfo[BlocksCatalogInfo["vanillaOverrideBlockCatalogResource"] = 102] = "vanillaOverrideBlockCatalogResource";
BlocksCatalogInfo[BlocksCatalogInfo["blockResourceIdentifier"] = 53] = "blockResourceIdentifier";
})(BlocksCatalogInfo = exports.BlocksCatalogInfo || (exports.BlocksCatalogInfo = {}));
class BlocksCatalogManager {
constructor() {
this.id = "BLOCKSCAT";
this.title = "Blocks Catalog";
}
getTopicData(topicId) {
switch (topicId) {
case BlocksCatalogInfo.unusedBlockCatalogResource:
return {
title: "Block Resource Identifier",
};
}
return {
title: topicId.toString(),
};
}
getUpdaterData(updaterId) {
return {
title: updaterId.toString(),
};
}
summarize(info, infoSet) { }
async generate(project, contentIndex) {
const results = [];
const itemsCopy = project.getItemsCopy();
for (let i = 0; i < itemsCopy.length; i++) {
const pi = itemsCopy[i];
if (pi.itemType === IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson) {
await pi.ensureFileStorage();
if (pi.file) {
const blocksCatalog = await BlocksCatalogDefinition_1.default.ensureOnFile(pi.file);
results.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.info, this.id, BlocksCatalogInfo.foundBlockCatalogResource, `Blocks catalog resource found`, pi));
if (blocksCatalog) {
const dependencies = await blocksCatalog.getDependenciesList(project);
for (const id of dependencies.unused) {
results.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.warning, this.id, BlocksCatalogInfo.unusedBlockCatalogResource, `Blocks catalog resource is not used`, pi, id));
}
for (const id of dependencies.vanillaOverride) {
results.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.recommendation, this.id, BlocksCatalogInfo.vanillaOverrideBlockCatalogResource, `Overrides vanilla resource, which is not recommended`, pi, id));
}
}
}
}
}
return results;
}
async update(project, updateId) {
const results = [];
const itemsCopy = project.getItemsCopy();
for (let i = 0; i < itemsCopy.length; i++) {
const pi = itemsCopy[i];
if (pi.itemType === IProjectItemData_1.ProjectItemType.blocksCatalogResourceJson) {
await pi.ensureFileStorage();
if (pi.file) {
const blocksCatalog = await BlocksCatalogDefinition_1.default.ensureOnFile(pi.file);
let wasUpdated = false;
if (blocksCatalog) {
switch (updateId) {
case BlocksCatalogUpdate.removeUnusedBlockResourceIdentifiers:
const dependencies = await blocksCatalog.getDependenciesList(project);
for (const id of dependencies.unused) {
blocksCatalog.removeId(id);
wasUpdated = true;
results.push(new ProjectUpdateResult_1.default(IUpdateResult_1.UpdateResultType.updatedFile, this.id, BlocksCatalogUpdate.removeUnusedBlockResourceIdentifiers, "Removed ununused blocks catalog resource", pi, id));
}
break;
}
}
if (wasUpdated) {
blocksCatalog?.persist();
}
}
}
}
return results;
}
getUpdateIds() {
return [BlocksCatalogUpdate.removeUnusedBlockResourceIdentifiers];
}
}
exports.default = BlocksCatalogManager;
//# sourceMappingURL=../maps/manager/BlocksCatalogManager.js.map