Using KubeJS Additions, it is now possible to listen to any arbitrary event from either Arch or Fabric.
To help show how powerful this feature is, I have written a script to generate event listeners for every Fabric event using the documentation provided by KubeJS Offline.
The attached file is the result of that being used on 1.18.2 fabric events.
I will attach the code I use to generate these events later in this thread.
As for single examples:
1.19.2 Syntax
const LIFE_CYCLE_EVENTS = Java.loadClass('dev.architectury.event.events.common.LifecycleEvent');
ArchEvents.registry(event => {
event.register('startup', LIFE_CYCLE_EVENTS, 'SERVER_BEFORE_START');
});
ArchEvents.handle('startup', event => {
console.log('Custom Arch Event handler has fired!');
console.log("Event Class: " + event);
console.log("Parameter List: " + event.getArgs());
console.log("Parameter 0: " + event.getArg(0));
console.log("Parameter Map: " + event.getParameters());
console.log("Method Name: " + event.getMethodName());
console.log("Requires Return Type: " + event.requiresResult());
console.log("Return Type: " + event.getReturnType());
console.log("Generic Return Type: " + event.getGenericReturnType());
});
const SERVER_MESSAGES = Java.loadClass('net.fabricmc.fabric.api.message.v1.ServerMessageEvents');
FabricEvents.registry(event => {
event.register('chat messages', SERVER_MESSAGES, 'CHAT_MESSAGE');
});
FabricEvents.handle('chat messages', event => {
console.log('Custom Arch Event handler has fired!');
console.log("Event Class: " + event);
console.log("Parameter List: " + event.getArgs());
console.log("Parameter 0: " + event.getArg(0));
console.log("Parameter Map: " + event.getParameters());
console.log("Method Name: " + event.getMethodName());
console.log("Requires Return Type: " + event.requiresResult());
console.log("Return Type: " + event.getReturnType());
console.log("Generic Return Type: " + event.getGenericReturnType());
});
1.18.2 Syntax
const LIFE_CYCLE_EVENTS = java('dev.architectury.event.events.common.LifecycleEvent');
onEvent('arch.event.register', event => {
event.register('server_before_start', LIFE_CYCLE_EVENTS, 'SERVER_BEFORE_START');
});
onEvent('server_before_start', event => {
console.log('Custom Arch Event handler has fired!');
console.log("Event Class: " + event);
console.log("Parameter List: " + event.getArgs());
console.log("Parameter 0: " + event.getArg(0));
console.log("Parameter Map: " + event.getParameters());
console.log("Method Name: " + event.getMethodName());
console.log("Requires Return Type: " + event.requiresResult());
console.log("Return Type: " + event.getReturnType());
console.log("Generic Return Type: " + event.getGenericReturnType());
});
const FABRIC_SERVER = java('net.fabricmc.fabric.api.event.server.ServerStartCallback');
onEvent('fabric.event.register', event => {
console.log('Fabric Event handler has fired!');
event.register('server_start_callback', FABRIC_SERVER, 'EVENT');
});
onEvent('server_start_callback', event => {
console.log('Custom Fabric Event handler has fired!');
console.log("Event Class: " + event);
console.log("Parameter List: " + event.getArgs());
console.log("Parameter 0: " + event.getArg(0));
console.log("Parameter Map: " + event.getParameters());
console.log("Method Name: " + event.getMethodName());
console.log("Requires Return Type: " + event.requiresResult());
console.log("Return Type: " + event.getReturnType());
console.log("Generic Return Type: " + event.getGenericReturnType());
});