2024-09-12 16:30:07 +08:00

4.2 KiB

Events

Events broadcast data for use in mods.

  • ModAPI.addEventListener(eventName: String, callback: Function) : void
    • Used to register an event handler. Eg:
    •   function myHandler(event) {
            console.log(event);
        }
        ModAPI.addEventListener("update", myHandler);
      
  • ModAPI.removeEventListener(eventName: String, callback: Function) : void
    • Used to unregister an event handler. Eg:
    •   function myHandler(event) {
            console.log(event);
        }
        ModAPI.removeEventListener("update", myHandler);
      

Basic Events

  • update:
    • Called every client side tick.
    • Event object is blank.
  • load:
    • Called when all mods have finished loading.
    • Event object is blank.
  • sendchatmessage:
    • Called just before the player sends a chat message.
    • Passes an object with properties:
      • message: String
        • String representing the chat message.
      • preventDefault: Boolean
        • Boolean representing whether or not to cancel processing the chat message. Default is false.
  • event:
    • Called when any event is called. Passes an object with properties:
    • Passes an object with properties:
      • event: String
        • String representing the type of event being fired.
      • data: Object
        • Object representing the original arguments to be passed to the callback.

Server Side Events

Can only be used in the context of the dedicated server. More: DedicatedServerDocumentation

  • serverstart:
    • Called when the dedicated server starts.
    • Event object is blank.
  • serverstop:
    • Called when the dedicated server stops.
    • Event object is blank.
  • tick:
    • Called when the server ticks.
    • Passes an object with properties:
      • preventDefault: Boolean
        • Boolean representing whether or not to cancel the tick. Default is false.
  • receivechatmessage:
    • Called when the server receives a chat message.
    • Passes an object with properties:
      • message: String
        • String representing the chat message.
      • preventDefault: Boolean
        • Boolean representing whether or not to cancel processing the chat message. Default is false.
  • processcommand:
    • Called when the server receives a command.
    • Passes an object with properties:
      • command: String
        • String representing the command.
      • sender: ICommandSender
        • Object that sent the command
      • preventDefault: Boolean
        • Boolean representing whether or not to cancel processing the command. Default is false.

Events Global, adding new events

The events global, ModAPI.events, allows you to register new event types and call them.

ModAPI.events.newEvent(eventName: String)

You can register new events using ModAPI, as long as the event name starts with custom: (lib: is only useful for library loading). For example, if I want to add a new event that can be used by other mods, I can use ModAPI.events.newEvent("custom:myevent").

ModAPI.events.callEvent(eventName: String, data: Object)

You can then call events via ModAPI.events.callEvent. For example, to trigger custom:myevent with a secret code value, I can run ModAPI.events.callEvent("custom:myevent", {secretCode: "1234"});.

Here is an example on using this:

// Mod #1, registers event handler for custom event
ModAPI.addEventListener("custom:myevent", (e)=>{
    alert(e.secretCode);
});
// Mod #2, registers and calls custom event
ModAPI.events.newEvent("custom:myevent");
ModAPI.events.callEvent("custom:myevent", {
    secretCode: "1234"
});

Using library load events

// Mod #2, registers and calls lib event
ModAPI.events.newEvent("lib:mylibrary:loaded");
ModAPI.events.callEvent("lib:mylibrary:loaded", {});
// Mod #1, registers event handler for lib event
ModAPI.addEventListener("lib:mylibrary:loaded", (e)=>{
    //Lib events function differently to normal events, as when they are called once, any new event listener with automatically fire upon being registered.
});