// Luanti // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2013 celeron55, Perttu Ahola // Copyright (C) 2017 nerzhul, Loic Blot // Copyright (C) 2025 grorp #include "s_client_common.h" #include "s_internal.h" #include "client/client.h" bool ScriptApiClientCommon::on_formspec_input(const std::string &formname, const StringMap &fields) { SCRIPTAPI_PRECHECKHEADER // Get core.registered_on_formspec_inputs lua_getglobal(L, "core"); lua_getfield(L, -1, "registered_on_formspec_input"); // Call callbacks // param 1 lua_pushstring(L, formname.c_str()); // param 2 lua_newtable(L); StringMap::const_iterator it; for (it = fields.begin(); it != fields.end(); ++it) { const std::string &name = it->first; const std::string &value = it->second; lua_pushstring(L, name.c_str()); lua_pushlstring(L, value.c_str(), value.size()); lua_settable(L, -3); } try { runCallbacks(2, RUN_CALLBACKS_MODE_OR_SC); } catch (LuaError &e) { getClient()->setFatalError(e); return true; } return readParam(L, -1); }