Skip to content

Commit f6508cd

Browse files
committed
Add support for setting event priority
1 parent be11cf6 commit f6508cd

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/main/resources/lua/script.lua

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ function Script.new(name, server, plugin, logger, debug)
4444
if not eventClass then
4545
error("Event " .. eventClass .. " not found")
4646
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
4851
local eventExecutor = {}
4952
function eventExecutor:execute(listener, event)
5053
local function errorHandler(err)
@@ -62,7 +65,7 @@ function Script.new(name, server, plugin, logger, debug)
6265

6366
local eventProxy = java.proxy("org.bukkit.plugin.EventExecutor", eventExecutor)
6467
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)
6669
table.insert(self.listeners, listenerProxy)
6770
end
6871
end
@@ -192,20 +195,28 @@ function Script:registerCommand(handler, metadata)
192195
end
193196

194197
-- Register a hook for a server event
198+
---@public
195199
---@param event JavaClasses|string Event name
200+
---@param priority org.bukkit.event.EventPriority Optional event priority
196201
---@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)
198205
if type(event) ~= "string" then
199206
error("Event name must be a string")
200207
end
201-
208+
if handler == nil and type(priority) == "function" then
209+
handler = priority
210+
priority = nil
211+
end
202212
if type(handler) ~= "function" then
203213
error("Event handler must be a function")
204214
end
205-
215+
if priority ~= nil and type(priority) ~= "number" then
216+
error("Priority must be an EventPriority enum value")
217+
end
206218
if not self.hooks[event] then
207219
self.hooks[event] = {}
208220
end
209-
210-
table.insert(self.hooks[event], handler)
221+
table.insert(self.hooks[event], {priority = priority, handler = handler})
211222
end

0 commit comments

Comments
 (0)