2 core.callback_origins = {}
4 function core.run_callbacks(callbacks, mode, ...)
5 assert(type(callbacks) == "table")
6 local cb_len = #callbacks
8 if mode == 2 or mode == 3 then
10 elseif mode == 4 or mode == 5 then
16 local cb_ret = callbacks[i](...)
18 if mode == 0 and i == 1 or mode == 1 and i == cb_len then
21 if not cb_ret or i == 1 then
30 if (cb_ret and not ret) or i == 1 then
33 elseif mode == 5 and cb_ret then
41 -- Callback registration
44 local function make_registration()
46 local registerfunc = function(func)
48 core.callback_origins[func] = {
49 mod = core.get_current_modname() or "??",
50 name = debug.getinfo(1, "n").name or "??"
52 --local origin = core.callback_origins[func]
53 --print(origin.name .. ": " .. origin.mod .. " registering cbk " .. tostring(func))
55 return t, registerfunc
58 core.registered_globalsteps, core.register_globalstep = make_registration()
59 core.registered_on_shutdown, core.register_on_shutdown = make_registration()
60 core.registered_on_receiving_chat_messages, core.register_on_receiving_chat_messages = make_registration()
61 core.registered_on_sending_chat_messages, core.register_on_sending_chat_messages = make_registration()
62 core.registered_on_death, core.register_on_death = make_registration()
63 core.registered_on_hp_modification, core.register_on_hp_modification = make_registration()
64 core.registered_on_damage_taken, core.register_on_damage_taken = make_registration()
65 core.registered_on_formspec_input, core.register_on_formspec_input = make_registration()