@@ -44,7 +44,10 @@ function Script.new(name, server, plugin, logger, debug)
44
44
if not eventClass then
45
45
error (" Event " .. eventClass .. " not found" )
46
46
end
47
- for _ , handler in ipairs (eventHandlers ) do
47
+
48
+ for _ , entry in ipairs (eventHandlers ) do
49
+ local handler = entry .handler
50
+ local priority = entry .priority or EventPriority .NORMAL
48
51
local eventExecutor = {}
49
52
function eventExecutor :execute (listener , event )
50
53
local function errorHandler (err )
@@ -62,7 +65,7 @@ function Script.new(name, server, plugin, logger, debug)
62
65
63
66
local eventProxy = java .proxy (" org.bukkit.plugin.EventExecutor" , eventExecutor )
64
67
local listenerProxy = java .proxy (" org.bukkit.event.Listener" , {})
65
- server :getPluginManager ():registerEvent (eventClass , listenerProxy , EventPriority . NORMAL , eventProxy , plugin )
68
+ server :getPluginManager ():registerEvent (eventClass , listenerProxy , priority , eventProxy , plugin )
66
69
table.insert (self .listeners , listenerProxy )
67
70
end
68
71
end
@@ -192,20 +195,28 @@ function Script:registerCommand(handler, metadata)
192
195
end
193
196
194
197
-- Register a hook for a server event
198
+ --- @public
195
199
--- @param event JavaClasses | string Event name
200
+ --- @param priority org.bukkit.event.EventPriority Optional event priority
196
201
--- @param handler fun ( event : any ) Function to handle the event
197
- function Script :registerListener (event , handler )
202
+ --- @overload fun ( event : string , handler : fun ( event : any ))
203
+ --- @return nil
204
+ function Script :registerListener (event , priority , handler )
198
205
if type (event ) ~= " string" then
199
206
error (" Event name must be a string" )
200
207
end
201
-
208
+ if handler == nil and type (priority ) == " function" then
209
+ handler = priority
210
+ priority = nil
211
+ end
202
212
if type (handler ) ~= " function" then
203
213
error (" Event handler must be a function" )
204
214
end
205
-
215
+ if priority ~= nil and type (priority ) ~= " number" then
216
+ error (" Priority must be an EventPriority enum value" )
217
+ end
206
218
if not self .hooks [event ] then
207
219
self .hooks [event ] = {}
208
220
end
209
-
210
- table.insert (self .hooks [event ], handler )
221
+ table.insert (self .hooks [event ], {priority = priority , handler = handler })
211
222
end
0 commit comments