@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
92 lines (90 loc) • 2.7 kB
JavaScript
"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 Dialogue {
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();
}
static async ensureOnFile(file, loadHandler) {
let dia;
if (file.manager === undefined) {
dia = new Dialogue();
dia.file = file;
file.manager = dia;
}
if (file.manager !== undefined && file.manager instanceof Dialogue) {
dia = file.manager;
if (!dia.isLoaded && loadHandler) {
dia.onLoaded.subscribe(loadHandler);
}
await dia.load();
}
return dia;
}
getAllButtons() {
const buttons = [];
if (this.definition && this.definition["minecraft:npc_dialogue"]) {
for (const scene of this.definition["minecraft:npc_dialogue"].scenes) {
if (scene && scene.buttons) {
for (const button of scene.buttons) {
buttons.push(button);
}
}
}
}
return buttons;
}
persist() {
if (this._file === undefined) {
return;
}
const pjString = JSON.stringify(this.definition, null, 2);
this._file.setContent(pjString);
}
ensureDefinition(name, description) {
if (!this.definition) {
this.definition = {
format_version: "1.12.0",
"minecraft:npc_dialogue": {
scenes: [],
},
};
}
}
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 = Dialogue;
//# sourceMappingURL=../maps/minecraft/Dialogue.js.map