UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

75 lines (73 loc) 2.14 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); const ste_events_1 = require("ste-events"); const StorageUtilities_1 = require("../storage/StorageUtilities"); class Material { constructor() { this._isLoaded = false; this._onLoaded = new ste_events_1.EventDispatcher(); } get isLoaded() { return this._isLoaded; } get file() { return this._file; } set file(newFile) { this._file = newFile; } get onLoaded() { return this._onLoaded.asEvent(); } get version() { if (!this.definition || !this.definition.materials) { return undefined; } return this.definition.materials["version"]; } static async ensureOnFile(file, loadHandler) { let rc; if (file.manager === undefined) { rc = new Material(); rc.file = file; file.manager = rc; } if (file.manager !== undefined && file.manager instanceof Material) { rc = file.manager; if (!rc.isLoaded && loadHandler) { rc.onLoaded.subscribe(loadHandler); } await rc.load(); } return rc; } persist() { if (this._file === undefined) { return; } const pjString = JSON.stringify(this.definition, null, 2); this._file.setContent(pjString); } async save() { if (this._file === undefined) { return; } this.persist(); await this._file.saveContent(false); } async load() { if (this._file === undefined || this._isLoaded) { return; } await this._file.loadContent(); if (this._file.content === null || this._file.content instanceof Uint8Array) { return; } this.definition = StorageUtilities_1.default.getJsonObject(this._file); this._isLoaded = true; } } exports.default = Material; //# sourceMappingURL=../maps/minecraft/Material.js.map