mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
// Luanti
|
|
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
// Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
|
// Copyright (C) 2017 nerzhul, Loic Blot <loic.blot@unix-experience.fr>
|
|
// 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<bool>(L, -1);
|
|
}
|