diff --git a/init.lua b/init.lua index 4e28e3d..ce51198 100644 --- a/init.lua +++ b/init.lua @@ -20,11 +20,11 @@ end -- more than once per loop (player) if they are registered for more than one event -- (for example triggered on walk on multiple groups) local triggered_listeners = {} -local function set_listener_triggered(name, pos) - if not triggered_listeners.name then - triggered_listeners.name = {} +local function set_listener_triggered(listener_name, pos) + if not triggered_listeners[listener_name] then + triggered_listeners[listener_name] = {} end - table.insert(triggered_listeners.name, pos) + table.insert(triggered_listeners[listener_name], pos) end --- Internal utility to create an empty table on first registration. @@ -39,10 +39,10 @@ local function get_subtable_or_create(mothertable, item) end --- Check if a listener can be triggered -local function is_callable(name, pos) +local function is_callable(listener_name, pos) -- Check if not aleady called - if triggered_listeners.name then - for _, trigg_pos in ipairs(triggered_listeners.name) do + if triggered_listeners[listener_name] then + for _, trigg_pos in ipairs(triggered_listeners[listener_name]) do if vector.equals(trigg_pos, pos) then return false end @@ -148,10 +148,10 @@ end --- Trigger a walk listener by it's name. -- Never called directly, use trigger_player_walk_listener_by_* functions local function trigger_player_walk_listeners(trigger_name, player, pos, node, node_def, trigger_meta) - for name, callback in pairs(walk_listeners[trigger_name]) do - if is_callable(name, pos) then + for listener_name, callback in pairs(walk_listeners[trigger_name]) do + if is_callable(listener_name, pos) then callback(player, pos, node, node_def, trigger_meta) - set_listener_triggered(trigger_name, pos) + set_listener_triggered(listener_name, pos) end end end