mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add core.compare_block_status function (#11247)
Makes it possible to check the status of the mapblock in a future-extensible way.
This commit is contained in:
parent
89f3991351
commit
c9144ae5e2
10 changed files with 89 additions and 4 deletions
|
@ -46,13 +46,22 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "client/client.h"
|
||||
#endif
|
||||
|
||||
struct EnumString ModApiEnvMod::es_ClearObjectsMode[] =
|
||||
const EnumString ModApiEnvMod::es_ClearObjectsMode[] =
|
||||
{
|
||||
{CLEAR_OBJECTS_MODE_FULL, "full"},
|
||||
{CLEAR_OBJECTS_MODE_QUICK, "quick"},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
const EnumString ModApiEnvMod::es_BlockStatusType[] =
|
||||
{
|
||||
{ServerEnvironment::BS_UNKNOWN, "unknown"},
|
||||
{ServerEnvironment::BS_EMERGING, "emerging"},
|
||||
{ServerEnvironment::BS_LOADED, "loaded"},
|
||||
{ServerEnvironment::BS_ACTIVE, "active"},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
@ -1389,6 +1398,24 @@ int ModApiEnvMod::l_forceload_block(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// compare_block_status(nodepos)
|
||||
int ModApiEnvMod::l_compare_block_status(lua_State *L)
|
||||
{
|
||||
GET_ENV_PTR;
|
||||
|
||||
v3s16 nodepos = check_v3s16(L, 1);
|
||||
std::string condition_s = luaL_checkstring(L, 2);
|
||||
auto status = env->getBlockStatus(getNodeBlockPos(nodepos));
|
||||
|
||||
int condition_i = -1;
|
||||
if (!string_to_enum(es_BlockStatusType, condition_i, condition_s))
|
||||
return 0; // Unsupported
|
||||
|
||||
lua_pushboolean(L, status >= condition_i);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// forceload_free_block(blockpos)
|
||||
// blockpos = {x=num, y=num, z=num}
|
||||
int ModApiEnvMod::l_forceload_free_block(lua_State *L)
|
||||
|
@ -1462,6 +1489,7 @@ void ModApiEnvMod::Initialize(lua_State *L, int top)
|
|||
API_FCT(transforming_liquid_add);
|
||||
API_FCT(forceload_block);
|
||||
API_FCT(forceload_free_block);
|
||||
API_FCT(compare_block_status);
|
||||
API_FCT(get_translated_string);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue