UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

77 lines (74 loc) 7.68 kB
import * as item_Items from './Items.es.js'; import ItemRegisterEvent from '../events/items/ItemRegisterEvent.es.js'; import Timer from '../utils/Timer.es.js'; class ItemManager { server; items = /* @__PURE__ */ new Map(); /** * Construct an ItemManager. * @param {Server} server - The server instance. * @returns {ItemManager} The item manager instance. */ constructor(server) { this.server = server; } /** * On enable hook. * @group Lifecycle */ async enable() { await this.importItems(); } /** * On disable hook. * @group Lifecycle */ async disable() { this.items.clear(); } /** * Get an item from it's name. * @param {string} name - tha item's name. * @returns {Item | null} the item. */ getItem(name) { return this.items.get(name) ?? null; } /** * Get item by numeric id * @param {number} id - tha item's ID. * @returns {Item | null} the item. */ getItemById(id) { return this.getItems().find((a) => a.getId() === id) ?? null; } /** * Get all items. * @returns {Item[]} all registered items. */ getItems() { return Array.from(this.items.values()); } /** * Register an item. * @param {Item} item - The item to be registered * @returns {Promise<void>} The promise. */ registerItem = async (item) => { const event = new ItemRegisterEvent(item); await this.server.emit("itemRegister", event); if (event.isCancelled()) return; this.server.getLogger().debug(`Item with id §b${item.getName()}§r registered`, "ItemManager/registerClassItem"); this.items.set(item.getName(), item); }; /** * Register items exported by './Items'. */ async importItems() { const timer = new Timer(); await Promise.all(Object.entries(item_Items).map(async ([, item]) => this.registerItem(new item()))); this.server.getLogger().verbose(`Registered §b${this.items.size}§r item(s) (took §e${timer.stop()} ms§r)!`); } } export { ItemManager as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbU1hbmFnZXIuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pdGVtL0l0ZW1NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEl0ZW1zIGZyb20gJy4vSXRlbXMnO1xuXG5pbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vU2VydmVyJztcbmltcG9ydCBJdGVtUmVnaXN0ZXJFdmVudCBmcm9tICcuLi9ldmVudHMvaXRlbXMvSXRlbVJlZ2lzdGVyRXZlbnQnO1xuaW1wb3J0IFRpbWVyIGZyb20gJy4uL3V0aWxzL1RpbWVyJztcbmltcG9ydCB0eXBlIHsgSXRlbSB9IGZyb20gJy4vSXRlbSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEl0ZW1NYW5hZ2VyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZlcjogU2VydmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgSXRlbT4oKTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBhbiBJdGVtTWFuYWdlci5cbiAgICAgKiBAcGFyYW0ge1NlcnZlcn0gc2VydmVyIC0gVGhlIHNlcnZlciBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7SXRlbU1hbmFnZXJ9IFRoZSBpdGVtIG1hbmFnZXIgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZlcjogU2VydmVyKSB7XG4gICAgICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGVuYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZW5hYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmltcG9ydEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGlzYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZGlzYWJsZSgpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBpdGVtIGZyb20gaXQncyBuYW1lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gdGhhIGl0ZW0ncyBuYW1lLlxuICAgICAqIEByZXR1cm5zIHtJdGVtIHwgbnVsbH0gdGhlIGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW0obmFtZTogc3RyaW5nKTogSXRlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5nZXQobmFtZSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgaXRlbSBieSBudW1lcmljIGlkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gdGhhIGl0ZW0ncyBJRC5cbiAgICAgKiBAcmV0dXJucyB7SXRlbSB8IG51bGx9IHRoZSBpdGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtQnlJZChpZDogbnVtYmVyKTogSXRlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJdGVtcygpLmZpbmQoKGEpID0+IGEuZ2V0SWQoKSA9PT0gaWQpID8/IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7SXRlbVtdfSBhbGwgcmVnaXN0ZXJlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SXRlbXMoKTogSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5pdGVtcy52YWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYW4gaXRlbS5cbiAgICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gLSBUaGUgaXRlbSB0byBiZSByZWdpc3RlcmVkXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IFRoZSBwcm9taXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3Rlckl0ZW0gPSBhc3luYyAoaXRlbTogSXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBJdGVtUmVnaXN0ZXJFdmVudChpdGVtKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2ZXIuZW1pdCgnaXRlbVJlZ2lzdGVyJywgZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQuaXNDYW5jZWxsZWQoKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc2VydmVyLmdldExvZ2dlcigpLmRlYnVnKGBJdGVtIHdpdGggaWQgwqdiJHtpdGVtLmdldE5hbWUoKX3Cp3IgcmVnaXN0ZXJlZGAsICdJdGVtTWFuYWdlci9yZWdpc3RlckNsYXNzSXRlbScpO1xuICAgICAgICB0aGlzLml0ZW1zLnNldChpdGVtLmdldE5hbWUoKSwgaXRlbSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGl0ZW1zIGV4cG9ydGVkIGJ5ICcuL0l0ZW1zJy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGltcG9ydEl0ZW1zKCkge1xuICAgICAgICBjb25zdCB0aW1lciA9IG5ldyBUaW1lcigpO1xuXG4gICAgICAgIC8vIER5bmFtaWNhbGx5IHJlZ2lzdGVyIGJsb2Nrc1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhJdGVtcykubWFwKGFzeW5jIChbLCBpdGVtXSkgPT4gdGhpcy5yZWdpc3Rlckl0ZW0obmV3IGl0ZW0oKSkpKTtcblxuICAgICAgICB0aGlzLnNlcnZlci5nZXRMb2dnZXIoKS52ZXJib3NlKGBSZWdpc3RlcmVkIMKnYiR7dGhpcy5pdGVtcy5zaXplfcKnciBpdGVtKHMpICh0b29rIMKnZSR7dGltZXIuc3RvcCgpfSBtc8KncikhYCk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIkl0ZW1zIl0sIm1hcHBpbmdzIjoiOzs7O0FBT0EsTUFBcUIsV0FBWSxDQUFBO0FBQUEsRUFDWixNQUFBO0FBQUEsRUFDQSxLQUFBLHVCQUFZLEdBQWtCLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPeEMsWUFBWSxNQUFnQixFQUFBO0FBQy9CLElBQUEsSUFBQSxDQUFLLE1BQVMsR0FBQSxNQUFBO0FBQUE7QUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE1BQWEsTUFBd0IsR0FBQTtBQUNqQyxJQUFBLE1BQU0sS0FBSyxXQUFZLEVBQUE7QUFBQTtBQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTUEsTUFBYSxPQUFVLEdBQUE7QUFDbkIsSUFBQSxJQUFBLENBQUssTUFBTSxLQUFNLEVBQUE7QUFBQTtBQUNyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxRQUFRLElBQTJCLEVBQUE7QUFDdEMsSUFBQSxPQUFPLElBQUssQ0FBQSxLQUFBLENBQU0sR0FBSSxDQUFBLElBQUksQ0FBSyxJQUFBLElBQUE7QUFBQTtBQUNuQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxZQUFZLEVBQXlCLEVBQUE7QUFDeEMsSUFBTyxPQUFBLElBQUEsQ0FBSyxRQUFTLEVBQUEsQ0FBRSxJQUFLLENBQUEsQ0FBQyxNQUFNLENBQUUsQ0FBQSxLQUFBLEVBQVksS0FBQSxFQUFFLENBQUssSUFBQSxJQUFBO0FBQUE7QUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFFBQW1CLEdBQUE7QUFDdEIsSUFBQSxPQUFPLEtBQU0sQ0FBQSxJQUFBLENBQUssSUFBSyxDQUFBLEtBQUEsQ0FBTSxRQUFRLENBQUE7QUFBQTtBQUN6QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxZQUFBLEdBQWUsT0FBTyxJQUFlLEtBQUE7QUFDeEMsSUFBTSxNQUFBLEtBQUEsR0FBUSxJQUFJLGlCQUFBLENBQWtCLElBQUksQ0FBQTtBQUN4QyxJQUFBLE1BQU0sSUFBSyxDQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsY0FBQSxFQUFnQixLQUFLLENBQUE7QUFDNUMsSUFBSSxJQUFBLEtBQUEsQ0FBTSxhQUFlLEVBQUE7QUFFekIsSUFBSyxJQUFBLENBQUEsTUFBQSxDQUFPLFdBQVksQ0FBQSxLQUFBLENBQU0sa0JBQWtCLElBQUssQ0FBQSxPQUFBLEVBQVMsQ0FBQSxhQUFBLENBQUEsRUFBaUIsK0JBQStCLENBQUE7QUFDOUcsSUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLEdBQUEsQ0FBSSxJQUFLLENBQUEsT0FBQSxJQUFXLElBQUksQ0FBQTtBQUFBLEdBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFjLFdBQWMsR0FBQTtBQUN4QixJQUFNLE1BQUEsS0FBQSxHQUFRLElBQUksS0FBTSxFQUFBO0FBR3hCLElBQUEsTUFBTSxRQUFRLEdBQUksQ0FBQSxNQUFBLENBQU8sUUFBUUEsVUFBSyxDQUFBLENBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxNQUFNLElBQUssQ0FBQSxZQUFBLENBQWEsSUFBSSxJQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUE7QUFFOUYsSUFBQSxJQUFBLENBQUssTUFBTyxDQUFBLFNBQUEsRUFBWSxDQUFBLE9BQUEsQ0FBUSxDQUFnQixhQUFBLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFJLENBQXNCLG1CQUFBLEVBQUEsS0FBQSxDQUFNLElBQUssRUFBQyxDQUFTLE9BQUEsQ0FBQSxDQUFBO0FBQUE7QUFFbEg7Ozs7In0=