@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
82 lines (81 loc) • 7.03 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_utils_Timer = require("../utils/Timer.cjs.cjs");
const require_item_Items = require("./Items.cjs.cjs");
const require_events_items_ItemRegisterEvent = require("../events/items/ItemRegisterEvent.cjs.cjs");
//#region src/item/ItemManager.ts
var ItemManager = class {
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 require_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 require_utils_Timer.default();
await Promise.all(Object.entries(require_item_Items.Items_exports).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)!`);
}
};
//#endregion
exports.default = ItemManager;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbU1hbmFnZXIuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaXRlbS9JdGVtTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBJdGVtcyBmcm9tICcuL0l0ZW1zJztcblxuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uL1NlcnZlcic7XG5pbXBvcnQgSXRlbVJlZ2lzdGVyRXZlbnQgZnJvbSAnLi4vZXZlbnRzL2l0ZW1zL0l0ZW1SZWdpc3RlckV2ZW50JztcbmltcG9ydCBUaW1lciBmcm9tICcuLi91dGlscy9UaW1lcic7XG5pbXBvcnQgdHlwZSB7IEl0ZW0gfSBmcm9tICcuL0l0ZW0nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtTWFuYWdlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2ZXI6IFNlcnZlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gbmV3IE1hcDxzdHJpbmcsIEl0ZW0+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgYW4gSXRlbU1hbmFnZXIuXG4gICAgICogQHBhcmFtIHtTZXJ2ZXJ9IHNlcnZlciAtIFRoZSBzZXJ2ZXIgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge0l0ZW1NYW5hZ2VyfSBUaGUgaXRlbSBtYW5hZ2VyIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzZXJ2ZXI6IFNlcnZlcikge1xuICAgICAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBlbmFibGUgaG9vay5cbiAgICAgKiBAZ3JvdXAgTGlmZWN5Y2xlXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGVuYWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbXBvcnRJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGRpc2FibGUgaG9vay5cbiAgICAgKiBAZ3JvdXAgTGlmZWN5Y2xlXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGRpc2FibGUoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYW4gaXRlbSBmcm9tIGl0J3MgbmFtZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHRoYSBpdGVtJ3MgbmFtZS5cbiAgICAgKiBAcmV0dXJucyB7SXRlbSB8IG51bGx9IHRoZSBpdGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtKG5hbWU6IHN0cmluZyk6IEl0ZW0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZ2V0KG5hbWUpID8/IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGl0ZW0gYnkgbnVtZXJpYyBpZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIHRoYSBpdGVtJ3MgSUQuXG4gICAgICogQHJldHVybnMge0l0ZW0gfCBudWxsfSB0aGUgaXRlbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SXRlbUJ5SWQoaWQ6IG51bWJlcik6IEl0ZW0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXMoKS5maW5kKChhKSA9PiBhLmdldElkKCkgPT09IGlkKSA/PyBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgaXRlbXMuXG4gICAgICogQHJldHVybnMge0l0ZW1bXX0gYWxsIHJlZ2lzdGVyZWQgaXRlbXMuXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1zKCk6IEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuaXRlbXMudmFsdWVzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGFuIGl0ZW0uXG4gICAgICogQHBhcmFtIHtJdGVtfSBpdGVtIC0gVGhlIGl0ZW0gdG8gYmUgcmVnaXN0ZXJlZFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBUaGUgcHJvbWlzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJJdGVtID0gYXN5bmMgKGl0ZW06IEl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgSXRlbVJlZ2lzdGVyRXZlbnQoaXRlbSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmVyLmVtaXQoJ2l0ZW1SZWdpc3RlcicsIGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmlzQ2FuY2VsbGVkKCkpIHJldHVybjtcblxuICAgICAgICB0aGlzLnNlcnZlci5nZXRMb2dnZXIoKS5kZWJ1ZyhgSXRlbSB3aXRoIGlkIMKnYiR7aXRlbS5nZXROYW1lKCl9wqdyIHJlZ2lzdGVyZWRgLCAnSXRlbU1hbmFnZXIvcmVnaXN0ZXJDbGFzc0l0ZW0nKTtcbiAgICAgICAgdGhpcy5pdGVtcy5zZXQoaXRlbS5nZXROYW1lKCksIGl0ZW0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBpdGVtcyBleHBvcnRlZCBieSAnLi9JdGVtcycuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBpbXBvcnRJdGVtcygpIHtcbiAgICAgICAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKTtcblxuICAgICAgICAvLyBEeW5hbWljYWxseSByZWdpc3RlciBibG9ja3NcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoSXRlbXMpLm1hcChhc3luYyAoWywgaXRlbV0pID0+IHRoaXMucmVnaXN0ZXJJdGVtKG5ldyBpdGVtKCkpKSk7XG5cbiAgICAgICAgdGhpcy5zZXJ2ZXIuZ2V0TG9nZ2VyKCkudmVyYm9zZShgUmVnaXN0ZXJlZCDCp2Ike3RoaXMuaXRlbXMuc2l6ZX3Cp3IgaXRlbShzKSAodG9vayDCp2Uke3RpbWVyLnN0b3AoKX0gbXPCp3IpIWApO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBT0EsSUFBcUIsY0FBckIsTUFBaUM7Q0FDN0I7Q0FDQSx3QkFBeUIsSUFBSSxJQUFrQjs7Ozs7O0NBTy9DLFlBQW1CLFFBQWdCO0VBQy9CLEtBQUssU0FBUztDQUNsQjs7Ozs7Q0FNQSxNQUFhLFNBQXdCO0VBQ2pDLE1BQU0sS0FBSyxZQUFZO0NBQzNCOzs7OztDQU1BLE1BQWEsVUFBVTtFQUNuQixLQUFLLE1BQU0sTUFBTTtDQUNyQjs7Ozs7O0NBT0EsUUFBZSxNQUEyQjtFQUN0QyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSztDQUNuQzs7Ozs7O0NBT0EsWUFBbUIsSUFBeUI7RUFDeEMsT0FBTyxLQUFLLFNBQVMsRUFBRSxNQUFNLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxLQUFLO0NBQzVEOzs7OztDQU1BLFdBQTBCO0VBQ3RCLE9BQU8sTUFBTSxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7Q0FDekM7Ozs7OztDQU9BLGVBQXNCLE9BQU8sU0FBZTtFQUN4QyxNQUFNLFFBQVEsSUFBSSx1Q0FBQSxRQUFrQixJQUFJO0VBQ3hDLE1BQU0sS0FBSyxPQUFPLEtBQUssZ0JBQWdCLEtBQUs7RUFDNUMsSUFBSSxNQUFNLFlBQVksR0FBRztFQUV6QixLQUFLLE9BQU8sVUFBVSxFQUFFLE1BQU0sa0JBQWtCLEtBQUssUUFBUSxFQUFFLGdCQUFnQiwrQkFBK0I7RUFDOUcsS0FBSyxNQUFNLElBQUksS0FBSyxRQUFRLEdBQUcsSUFBSTtDQUN2Qzs7OztDQUtBLE1BQWMsY0FBYztFQUN4QixNQUFNLFFBQVEsSUFBSSxvQkFBQSxRQUFNO0VBR3hCLE1BQU0sUUFBUSxJQUFJLE9BQU8sUUFBUSxtQkFBQSxhQUFLLEVBQUUsSUFBSSxPQUFPLEdBQUcsVUFBVSxLQUFLLGFBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBRTlGLEtBQUssT0FBTyxVQUFVLEVBQUUsUUFBUSxnQkFBZ0IsS0FBSyxNQUFNLEtBQUsscUJBQXFCLE1BQU0sS0FBSyxFQUFFLFFBQVE7Q0FDOUc7QUFDSiJ9