import * as vanilla from '@minecraft/vanilla-data'; import * as mc from '@minecraft/server'; import * as ui from '@minecraft/server-ui'; import { CustomFormParams, CustomTimerParam, CustomWayPointsParams, LockItemsInvParams, ManualDamageItemParams } from '../core/customTypes'; /** * Clase que contiene todos los metodos de mecánicas universales usadas en sus add-ons. * @author HaJuegos - 15-03-2026 */ declare class CustomEventsSimplified { /** * Variable que controla los timers basados en tiempo local por jugador. * @type {Map} * @author HaJuegos - 15-04-2026 * @private */ private activePlys; /** * Eventos principales de la clase cuando es llamada o inicializada. * @constructor */ constructor(); /** * Método auxiliar que simplifica la lógica de la creación de un formulario UI custom en cuestión. * @param {CustomFormParams} formParams Los parámetros del formulario en concreto necesarios para crear el formulario. * @returns {Promise} Se devuelve el mismo formulario creado en caso de que todo esté bien. * @author HaJuegos - 16-04-2026 * @async Este método es asíncrono debido a las acciones que puede realizar el usuario cuando se muestre o no el formulario. Principalmente para los eventos. * @public * @example * ```ts * // Esto crea el formulario y luego lo muestra al jugador. Y al momento de abrir el formulario en el jugador, se manda un log. * const form = this.createCustomClassicFormUI( * { * titleForm: 'Formulario de Prueba', * showPly: { * targetPly: player, * onShow: (ply) => { * console.log(`${ply.name} abrió el formulario.`); * } * } * } * ); * ``` */ createCustomClassicFormUI(formParams: CustomFormParams): Promise; /** * Método auxiliar que simplifica la lógica de los fast items, cuando usas tu item con tu tecla de interacción, este cambiará a tu mano secundaria. * @param {(mc.ItemStack[] | string[])} listOfItems La lista de items a validar para este sistema. * @returns {void} * @author HaJuegos - 15-03-2026 * @version 2 Cambio de obtención de items permitidos para hacerlo dinámico si es requerido. * @public * @example * ```ts * customEventsManager.fastItemsSystem(() => ['totem']); // Ahora el totem es considerado un fast item para cambiar a la mano secundaria con un click. * ``` */ fastItemsSystem(listOfItems: () => mc.ItemStack[] | string[]): void; /** * Método auxiliar que simplifica la lógica de dañar un item o reducir un stack de items en un inventario de un jugador en concreto, dependiendo el caso. * @param {ManualDamageItemParams} params Los parámetros necesarios para este método. * @author HaJuegos - 17-03-2026 * @public * @example * ```ts * // Esto hará que un item en la mano reduzca su stock o sea dañado bajando su durabilidad. Dependiendo el tipo de item. * customEventsManager.manualDamageItem({ ply: player, item: item }); * ``` */ manualDamageItem(params: ManualDamageItemParams): void; /** * Método auxiliar que simplifica la lógica de detectar en el inventario del jugador, si tiene uno o varios items en concreto de forma explícita o no. * @param {mc.Player} plySource Jugador en cuestión. * @param {(string | string[] | vanilla.MinecraftItemTypes | vanilla.MinecraftItemTypes[] )} itemsToDetect Item o items a buscar. * @param {boolean?} exactItems (Opcional) Busca explícitamente el nombre del item palabra por palabra. Por defecto está apagado, entonces buscará items sin importar si tienen diferencias. Por ej: Si se busca 'diamond'; minecraft:diamond y minecraft:diamond_sword serían true. * @returns {boolean} Devuelve true en caso de tener ese item, sino, será false. * @author HaJuegos - 18-03-2026 * @public * @example * ```ts * // Esto es true si el jugador tiene un item llamado totem o más de forma no explícita. * customEventsManager.plyHasItems(player, 'totem'); * * // Esto es true si el jugador tiene un totem de la inmortalidad de forma explícita. * customEventsManager.plyHasItems(player, vanilla.MinecraftItemTypes.TotemOfUndying, true); * ``` */ plyHasItems(plySource: mc.Player, itemsToDetect: string | string[] | vanilla.MinecraftItemTypes | vanilla.MinecraftItemTypes[], exactItems?: boolean): boolean; /** * Método auxiliar que simplifica la lógica al detectar el uso de un totem, ejecutando los eventos relacionados. * @param {(entity: mc.Entity | mc.Player) => void} callback Los eventos relacionados a ejecutar. * @returns {void} * @version 2 Ahora es un beforeEvent por uso de BeforeOnEntityHeal. * @author HaJuegos - 19-08-2026 * @public * @beforeEvent Método que detecta el evento antes de que suceda. Permitiendo cancelar o personalizar el evento antes de que se vea en el juego. * @example * ```ts * // Este evento solo se va a ejecutar cuando una entidad o jugador usa un totem. * customEventsManager.onEntityUseTotem((entity) => { * console.warn(`${entity.typeId} ha usado un totem.`); * console.warn(`${entity.name} ha usado un totem.`); * }); * ``` */ onEntityUseTotem(callback: (entity: mc.Entity | mc.Player) => void): void; /** * Método auxiliar que simplifica la lógica de randomizar el inventario de un jugador, cambiando totalmente las ubicaciones de los items en el mismo inventario. * @param {mc.Player} ply Jugador en cuestión. * @author HaJuegos - 30-03-2026 * @public * @example * ```ts * // Ahora el inventario estará totalmente desordenado. Solo el inventario, no armadura. * customEventsManager.randomizeInvPly(player); * ``` */ randomizeInvPly(ply: mc.Player): void; /** * Método auxiliar que genera un timer basado en tiempo real. Este consiste en minutos iniciales (también horas) iniciando el timer guardando los valores en tiempo real en el jugador asignado que va a ver el timer. Devolviendo y ejecutando código basado en el timer. * @param {CustomTimerParam} paramsTimer Los parámetros y eventos a ejecutar mientras el timer se ejecuta. * @author HaJuegos - 05-04-2026 * @public * @example * ```ts * const paramsTimer: CustomTimerParam = { * sourcePLy: player, // Jugador que tiene el timer * timerID: 'ha:timer_unique', // Identificador único del timer, por si se usa en más de una ocasión * initialMns: 2, // Los Minutos iniciales del timer o minutos a mostrar del timer. * forceRestart: true, // (Opcional) Si es necesario en caso de cambio del valor, por ej, nuevos valores de minutos o segundos, pues hace que el timer se reinicie. * * // (Opcional) Eventos relacionales cuando el timer pasa un segundo. * onSecondPass: (ply, timer) => { * console.log(`Ha pasado un segundo, el tiempo ahora está en ${timer}`); * }, * }; * * // Inicia el timer para el jugador en concreto. NOTA: Es un timer interno, no tiene interfaz. Para mostrar el valor del timer, usar los eventos como: onSecondPass. * customEventsManager.startTimerLocal(paramsTimer); * ``` */ startTimerLocal(paramsTimer: CustomTimerParam): void; /** * Método auxiliar que fuerza la eliminación y dropeo de un item en concreto de un slot del inventario de un jugador. * @param {mc.Player} ply Jugador en concreto a considerar. * @param {(number | number[])} slots El o los slots en concreto a cambiar eliminar. * @param {?mc.ItemStack} itemToRemplace (Opcional) Un item a poner en su lugar al item a dropear o eliminar. * @param {?(string[] | vanilla.MinecraftItemTypes[] | mc.ItemStack[])} whitelistItems (Opcional) Lista de items que no se pueden dropear o eliminar en este sistema. * @returns {void} * @author HaJuegos - 18-05-2026 * @public * @example * ```ts * // Cuando este evento se ejecute, los items de los slots "0,1,2,3" seran dropeados y eliminados del jugador. (Si hay items en esos slots) * customEventsManager.dropItemsPly(ply, [0,1,2,3]); * ``` */ dropItemsPly(ply: mc.Player, slots: number | number[], itemToRemplace?: mc.ItemStack, whitelistItems?: string[] | vanilla.MinecraftItemTypes[] | mc.ItemStack[]): void; /** * Método auxiliar que fuerza la eliminación y dropeo de un item en concreto de un slot del equipamiento de un jugador. * @param {mc.Player} ply Jugador en concreto a considerar. * @param {(mc.EquipmentSlot | mc.EquipmentSlot[])} slots El o los slots en concreto a cambiar eliminar. * @param {?mc.ItemStack} itemToRemplace (Opcional) Un item a poner en su lugar al item a dropear o eliminar. * @param {?(string[] | vanilla.MinecraftItemTypes[] | mc.ItemStack[])} whitelistItems (Opcional) Lista de items que no se pueden dropear o eliminar en este sistema. * @returns {void} * @author HaJuegos - 18-05-2026 * @public * @example * ```ts * // Cuando este evento se ejecute, los items de los slots "Helmet, Chestplate y Leggings" seran dropeados y eliminados del jugador. (Si hay items en esos slots) * customEventsManager.dropArmorsPly(ply, [mc.EquipmentSlot.Head, mc.EquipmentSlot.Chest, mc.EquipmentSlot.Legs]); * ``` */ dropArmorsPly(ply: mc.Player, slots: mc.EquipmentSlot | mc.EquipmentSlot[], itemToRemplace?: mc.ItemStack, whitelistItems?: string[] | vanilla.MinecraftItemTypes[] | mc.ItemStack[]): void; /** * Método auxiliar que permite el cambio de estado y propiedades a uno o varios items de uno o varios inventarios a un jugador en concreto. Simplificando los lockMode de los items. * @param {LockItemsInvParams} params Los parámetros en concreto para integrar. * @returns {void} * @author HaJuegos - 19-05-2026 * @public * @example * ```ts * const params: LockItemsInvParams = { * ply: source, // Jugador en concreto * invType: 'inv', // Inventario a cambiar * lockMethod: mc.ItemLockMode.Inventory, // Tipo de bloqueo a realizar a los items * keepInDeath: true, // Se asigna la propiedad 'keepInDeath' adicionalmente * itemsSelection: { * randomSlots: { * minSlots: 1, * maxSlots: 4 * } * } * } * * customEventsManager.lockItemsPly(params) * ``` */ lockItemsPly(params: LockItemsInvParams): void; /** * Método auxiliar que simplifica y permite crear un nuevo punto de localización en el locator bar de forma custom con colores, formas y configuraciones personalizadas. Basado en jugador o jugadores que lo tengan visible. * @param {CustomWayPointsParams} params Parámetros necesarios para la creación del punto de localización para el locatorbar. * @returns {mc.LocationWaypoint} Devuelve el punto de localización custom creado si todo salió bien. Si no, será undefined. * @author HaJuegos - 03-08-2026 * @public * @example * ```ts * const customWayPoint: CustomWayPointsParams = { *     targetPlys: ply, *     location: ply.location, *     dimension: ply.dimension, *     // Este parametro puede ser un icono con forma y colores vanilla o sino, una textura custom. *     iconTexture: { *         path: 'textura.png', *         iconWidth: 1, *         iconHeight: 1 *     } * } * * customEventsManager.createCustomWayPoint(customWayPoint); * ``` */ createCustomWayPoint(params: CustomWayPointsParams): mc.LocationWaypoint | undefined; } export declare const customEventsManager: CustomEventsSimplified; export {}; //# sourceMappingURL=customToolsManager.d.ts.map