mirror of
https://github.com/SikongJueluo/kubejs-utils.git
synced 2026-01-29 08:17:49 +08:00
97 lines
3.0 KiB
JavaScript
97 lines
3.0 KiB
JavaScript
/**
|
|
* @typedef {(
|
|
* "PlayerItemFishedEvent" |
|
|
* "LivingEntityUseItemEvent$Finish"
|
|
* )} EventName
|
|
*/
|
|
|
|
/**
|
|
* @typedef {(
|
|
* ((event: Internal.ItemFishedEvent) => any) |
|
|
* ((event: Internal.LivingEntityUseItemEvent$Finish) => any)
|
|
* )} EventCallback
|
|
*/
|
|
|
|
/**
|
|
* A simple event bus for handling custom events in KubeJS environment.
|
|
* @namespace
|
|
*/
|
|
const eventBus = {
|
|
/**
|
|
* Map storing event names and their corresponding callback functions.
|
|
* @type {{[key: string]: Function}}
|
|
*/
|
|
eventMap: {},
|
|
|
|
/**
|
|
* Registers a callback function for a specific event.
|
|
* @overload
|
|
* @param {"PlayerItemFishedEvent"} eventName - The name of the event to listen for.
|
|
* @param {(event: Internal.ItemFishedEvent) => any} callback - The callback function.
|
|
* @returns {void}
|
|
*/
|
|
/**
|
|
* Registers a callback function for a specific event.
|
|
* @overload
|
|
* @param {"LivingEntityUseItemEvent$Finish"} eventName - The name of the event to listen for.
|
|
* @param {(event: Internal.LivingEntityUseItemEvent$Finish) => any} callback - The callback function.
|
|
* @returns {void}
|
|
*/
|
|
/**
|
|
* Registers a callback function for a specific event.
|
|
* @param {EventName} eventName - The name of the event to listen for.
|
|
* @param {EventCallback} callback - The callback function to execute when the event is emitted.
|
|
* @returns {void}
|
|
*/
|
|
register: function (eventName, callback) {
|
|
this.eventMap[eventName] = callback;
|
|
},
|
|
|
|
/**
|
|
* Registers a callback function for a specific event.
|
|
* @overload
|
|
* @param {"PlayerItemFishedEvent"} eventName - The name of the event to listen for.
|
|
* @param {(event: Internal.ItemFishedEvent) => any} callback - The callback function.
|
|
* @returns {void}
|
|
*/
|
|
/**
|
|
* Emits an event, calling the registered callback function if it exists.
|
|
* @overload
|
|
* @param {"LivingEntityUseItemEvent$Finish"} eventName - The name of the event to emit.
|
|
* @param {Internal.LivingEntityUseItemEvent$Finish} event - The event data.
|
|
* @returns {any}
|
|
*/
|
|
/**
|
|
* Emits an event, calling the registered callback function if it exists.
|
|
* @param {string} eventName - The name of the event to emit.
|
|
* @param {*} event - The event data to pass to the callback function.
|
|
* @returns {*} The return value of the callback function, or undefined if no callback is registered.
|
|
*/
|
|
emit: function (eventName, event) {
|
|
const callback = this.eventMap[eventName];
|
|
if (callback) {
|
|
return callback(event);
|
|
}
|
|
},
|
|
};
|
|
|
|
/**
|
|
* @typedef {typeof eventBus} EventBus
|
|
*/
|
|
|
|
global["eventBus"] = eventBus;
|
|
|
|
ForgeEvents.onEvent(
|
|
"net.minecraftforge.event.entity.living.LivingEntityUseItemEvent$Finish",
|
|
(event) => {
|
|
eventBus.emit("LivingEntityUseItemEvent$Finish", event);
|
|
},
|
|
);
|
|
|
|
ForgeEvents.onEvent(
|
|
"net.minecraftforge.event.entity.player.ItemFishedEvent",
|
|
(event) => {
|
|
eventBus.emit("PlayerItemFishedEvent", event);
|
|
},
|
|
);
|