]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - builtin/client/register.lua
Merge branch 'master' of https://github.com/minetest/minetest
[dragonfireclient.git] / builtin / client / register.lua
index c8a5ddbda6b389a5082661cc9a275a10a7a3776b..2b5526523f486052a407505cf0d6388ff07afb88 100644 (file)
@@ -4,6 +4,13 @@ core.callback_origins = {}
 local getinfo = debug.getinfo
 debug.getinfo = nil
 
+--- Runs given callbacks.
+--
+-- Note: this function is also called from C++
+-- @tparam table  callbacks a table with registered callbacks, like `core.registered_on_*`
+-- @tparam number mode      a RunCallbacksMode, as defined in src/script/common/c_internal.h
+-- @param         ...       arguments for the callback
+-- @return depends on mode
 function core.run_callbacks(callbacks, mode, ...)
        assert(type(callbacks) == "table")
        local cb_len = #callbacks
@@ -40,6 +47,26 @@ function core.run_callbacks(callbacks, mode, ...)
        return ret
 end
 
+function core.override_item(name, redefinition)
+       if redefinition.name ~= nil then
+               error("Attempt to redefine name of "..name.." to "..dump(redefinition.name), 2)
+       end
+       if redefinition.type ~= nil then
+               error("Attempt to redefine type of "..name.." to "..dump(redefinition.type), 2)
+       end
+       local itemdef = core.get_item_def(name)
+       if not itemdef then
+               error("Attempt to override non-existent item "..name, 2)
+       end
+       local nodedef = core.get_node_def(name)
+       table.combine(itemdef, nodedef)
+
+       for k, v in pairs(redefinition) do
+               rawset(itemdef, k, v)
+       end
+       core.register_item_raw(itemdef)
+end
+
 --
 -- Callback registration
 --
@@ -59,13 +86,25 @@ local function make_registration()
 end
 
 core.registered_globalsteps, core.register_globalstep = make_registration()
+core.registered_on_mods_loaded, core.register_on_mods_loaded = make_registration()
 core.registered_on_shutdown, core.register_on_shutdown = make_registration()
-core.registered_on_receiving_chat_messages, core.register_on_receiving_chat_messages = make_registration()
-core.registered_on_sending_chat_messages, core.register_on_sending_chat_messages = make_registration()
+core.registered_on_receiving_chat_message, core.register_on_receiving_chat_message = make_registration()
+core.registered_on_sending_chat_message, core.register_on_sending_chat_message = make_registration()
+core.registered_on_chatcommand, core.register_on_chatcommand = make_registration()
 core.registered_on_death, core.register_on_death = make_registration()
 core.registered_on_hp_modification, core.register_on_hp_modification = make_registration()
 core.registered_on_damage_taken, core.register_on_damage_taken = make_registration()
 core.registered_on_formspec_input, core.register_on_formspec_input = make_registration()
 core.registered_on_dignode, core.register_on_dignode = make_registration()
+core.registered_on_punchnode, core.register_on_punchnode = make_registration()
+core.registered_on_placenode, core.register_on_placenode = make_registration()
+core.registered_on_item_use, core.register_on_item_use = make_registration()
+core.registered_on_modchannel_message, core.register_on_modchannel_message = make_registration()
+core.registered_on_modchannel_signal, core.register_on_modchannel_signal = make_registration()
+core.registered_on_inventory_open, core.register_on_inventory_open = make_registration()
+core.registered_on_recieve_physics_override, core.register_on_recieve_physics_override = make_registration()
+core.registered_on_play_sound, core.register_on_play_sound = make_registration()
+core.registered_on_spawn_particle, core.register_on_spawn_particle = make_registration()
 
-
+core.registered_nodes = {}
+core.registered_items = {}