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_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_chat_messages, core.register_on_chat_message = make_registration()
core.registered_globalsteps, core.register_globalstep = make_registration()
core.registered_playerevents, core.register_playerevent = 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_punchnodes, core.register_on_punchnode = make_registration()
core.registered_on_placenodes, core.register_on_placenode = make_registration()
return core.localplayer:hud_change(id, "text", param)
end,
})
+
+
+core.register_on_mods_loaded(function()
+ core.log("Yeah preview mod is loaded with other CSM mods.")
+end)
* `minetest.register_globalstep(func(dtime))`
* Called every client environment step, usually interval of 0.1s
+* `minetest.register_on_mods_loaded(func())`
+ * Called just after mods have finished loading.
* `minetest.register_on_shutdown(func())`
* Called before client shutdown
* **Warning**: If the client terminates abnormally (i.e. crashes), the registered
* `minetest.register_globalstep(func(dtime))`
* Called every server step, usually interval of 0.1s
+* `minetest.register_on_mods_loaded(func())`
+ * Called after mods have finished loading and before the media is cached or the
+ aliases handled.
* `minetest.register_on_shutdown(func())`
* Called before server shutdown
* **Warning**: If the server terminates abnormally (i.e. crashes), the
minetest.log("experimental modpath="..dump(minetest.get_modpath("experimental")))
minetest.log("experimental worldpath="..dump(minetest.get_worldpath()))
+
+core.register_on_mods_loaded(function()
+ core.log("Yeah experimental loaded mods.")
+end)
+
-- END
for (const ModSpec &mod : m_mods)
m_script->loadModFromMemory(mod.name);
+ // Run a callback when mods are loaded
+ m_script->on_mods_loaded();
m_mods_loaded = true;
}
#include "common/c_content.h"
#include "s_item.h"
+void ScriptApiClient::on_mods_loaded()
+{
+ SCRIPTAPI_PRECHECKHEADER
+
+ // Get registered shutdown hooks
+ lua_getglobal(L, "core");
+ lua_getfield(L, -1, "registered_on_mods_loaded");
+ // Call callbacks
+ runCallbacks(0, RUN_CALLBACKS_MODE_FIRST);
+}
+
void ScriptApiClient::on_shutdown()
{
SCRIPTAPI_PRECHECKHEADER
class ScriptApiClient : virtual public ScriptApiBase
{
public:
+ // Calls when mods are loaded
+ void on_mods_loaded();
+
// Calls on_shutdown handlers
void on_shutdown();
return ate;
}
+void ScriptApiServer::on_mods_loaded()
+{
+ SCRIPTAPI_PRECHECKHEADER
+
+ // Get registered shutdown hooks
+ lua_getglobal(L, "core");
+ lua_getfield(L, -1, "registered_on_mods_loaded");
+ // Call callbacks
+ runCallbacks(0, RUN_CALLBACKS_MODE_FIRST);
+}
+
void ScriptApiServer::on_shutdown()
{
SCRIPTAPI_PRECHECKHEADER
// Returns true if script handled message
bool on_chat_message(const std::string &name, const std::string &message);
+ // Calls when mods are loaded
+ void on_mods_loaded();
+
// Calls on_shutdown handlers
void on_shutdown();
std::chrono::steady_clock::now() - t).count() * 0.001f
<< " seconds" << std::endl;
}
+
+ // Run a callback when mods are loaded
+ script->on_mods_loaded();
}
// clang-format on