UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

81 lines (76 loc) 7.92 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const item_Items = require('./Items.cjs.cjs'); const events_items_ItemRegisterEvent = require('../events/items/ItemRegisterEvent.cjs.cjs'); const utils_Timer = require('../utils/Timer.cjs.cjs'); 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 events_items_ItemRegisterEvent.default(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 utils_Timer.default(); 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)!`); } } exports.default = ItemManager; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbU1hbmFnZXIuY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2l0ZW0vSXRlbU1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgSXRlbXMgZnJvbSAnLi9JdGVtcyc7XG5cbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi9TZXJ2ZXInO1xuaW1wb3J0IEl0ZW1SZWdpc3RlckV2ZW50IGZyb20gJy4uL2V2ZW50cy9pdGVtcy9JdGVtUmVnaXN0ZXJFdmVudCc7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi4vdXRpbHMvVGltZXInO1xuaW1wb3J0IHR5cGUgeyBJdGVtIH0gZnJvbSAnLi9JdGVtJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSXRlbU1hbmFnZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBTZXJ2ZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpdGVtcyA9IG5ldyBNYXA8c3RyaW5nLCBJdGVtPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0IGFuIEl0ZW1NYW5hZ2VyLlxuICAgICAqIEBwYXJhbSB7U2VydmVyfSBzZXJ2ZXIgLSBUaGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtJdGVtTWFuYWdlcn0gVGhlIGl0ZW0gbWFuYWdlciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc2VydmVyOiBTZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZW5hYmxlIGhvb2suXG4gICAgICogQGdyb3VwIExpZmVjeWNsZVxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBlbmFibGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW1wb3J0SXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBkaXNhYmxlIGhvb2suXG4gICAgICogQGdyb3VwIExpZmVjeWNsZVxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBkaXNhYmxlKCkge1xuICAgICAgICB0aGlzLml0ZW1zLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFuIGl0ZW0gZnJvbSBpdCdzIG5hbWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSB0aGEgaXRlbSdzIG5hbWUuXG4gICAgICogQHJldHVybnMge0l0ZW0gfCBudWxsfSB0aGUgaXRlbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SXRlbShuYW1lOiBzdHJpbmcpOiBJdGVtIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmdldChuYW1lKSA/PyBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBpdGVtIGJ5IG51bWVyaWMgaWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSB0aGEgaXRlbSdzIElELlxuICAgICAqIEByZXR1cm5zIHtJdGVtIHwgbnVsbH0gdGhlIGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1CeUlkKGlkOiBudW1iZXIpOiBJdGVtIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKCkuZmluZCgoYSkgPT4gYS5nZXRJZCgpID09PSBpZCkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIHtJdGVtW119IGFsbCByZWdpc3RlcmVkIGl0ZW1zLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtcygpOiBJdGVtW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLml0ZW1zLnZhbHVlcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhbiBpdGVtLlxuICAgICAqIEBwYXJhbSB7SXRlbX0gaXRlbSAtIFRoZSBpdGVtIHRvIGJlIHJlZ2lzdGVyZWRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gVGhlIHByb21pc2UuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVySXRlbSA9IGFzeW5jIChpdGVtOiBJdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEl0ZW1SZWdpc3RlckV2ZW50KGl0ZW0pO1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZlci5lbWl0KCdpdGVtUmVnaXN0ZXInLCBldmVudCk7XG4gICAgICAgIGlmIChldmVudC5pc0NhbmNlbGxlZCgpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zZXJ2ZXIuZ2V0TG9nZ2VyKCkuZGVidWcoYEl0ZW0gd2l0aCBpZCDCp2Ike2l0ZW0uZ2V0TmFtZSgpfcKnciByZWdpc3RlcmVkYCwgJ0l0ZW1NYW5hZ2VyL3JlZ2lzdGVyQ2xhc3NJdGVtJyk7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KGl0ZW0uZ2V0TmFtZSgpLCBpdGVtKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgaXRlbXMgZXhwb3J0ZWQgYnkgJy4vSXRlbXMnLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgaW1wb3J0SXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gbmV3IFRpbWVyKCk7XG5cbiAgICAgICAgLy8gRHluYW1pY2FsbHkgcmVnaXN0ZXIgYmxvY2tzXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKEl0ZW1zKS5tYXAoYXN5bmMgKFssIGl0ZW1dKSA9PiB0aGlzLnJlZ2lzdGVySXRlbShuZXcgaXRlbSgpKSkpO1xuXG4gICAgICAgIHRoaXMuc2VydmVyLmdldExvZ2dlcigpLnZlcmJvc2UoYFJlZ2lzdGVyZWQgwqdiJHt0aGlzLml0ZW1zLnNpemV9wqdyIGl0ZW0ocykgKHRvb2sgwqdlJHt0aW1lci5zdG9wKCl9IG1zwqdyKSFgKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiSXRlbVJlZ2lzdGVyRXZlbnQiLCJUaW1lciIsIkl0ZW1zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztB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