mirror of
https://github.com/minetest/minetest.git
synced 2025-02-17 02:22:26 +01:00
Fix core.get_node_or_nil in emerge env
"ignore" does not mean unloaded, we have to properly check it.
This commit is contained in:
@ -31,11 +31,6 @@ function core.get_node(pos)
|
|||||||
return core.vmanip:get_node_at(pos)
|
return core.vmanip:get_node_at(pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
function core.get_node_or_nil(pos)
|
|
||||||
local node = core.vmanip:get_node_at(pos)
|
|
||||||
return node.name ~= "ignore" and node
|
|
||||||
end
|
|
||||||
|
|
||||||
function core.get_perlin(seed, octaves, persist, spread)
|
function core.get_perlin(seed, octaves, persist, spread)
|
||||||
local params
|
local params
|
||||||
if type(seed) == "table" then
|
if type(seed) == "table" then
|
||||||
|
@ -1534,6 +1534,19 @@ void ModApiEnv::InitializeClient(lua_State *L, int top)
|
|||||||
if (!vm) \
|
if (!vm) \
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
// get_node_or_nil(pos)
|
||||||
|
int ModApiEnvVM::l_get_node_or_nil(lua_State *L)
|
||||||
|
{
|
||||||
|
GET_VM_PTR;
|
||||||
|
|
||||||
|
v3s16 pos = read_v3s16(L, 1);
|
||||||
|
if (vm->exists(pos))
|
||||||
|
pushnode(L, vm->getNodeRefUnsafe(pos));
|
||||||
|
else
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// get_node_max_level(pos)
|
// get_node_max_level(pos)
|
||||||
int ModApiEnvVM::l_get_node_max_level(lua_State *L)
|
int ModApiEnvVM::l_get_node_max_level(lua_State *L)
|
||||||
{
|
{
|
||||||
@ -1703,6 +1716,7 @@ MMVManip *ModApiEnvVM::getVManip(lua_State *L)
|
|||||||
void ModApiEnvVM::InitializeEmerge(lua_State *L, int top)
|
void ModApiEnvVM::InitializeEmerge(lua_State *L, int top)
|
||||||
{
|
{
|
||||||
// other, more trivial functions are in builtin/emerge/env.lua
|
// other, more trivial functions are in builtin/emerge/env.lua
|
||||||
|
API_FCT(get_node_or_nil);
|
||||||
API_FCT(get_node_max_level);
|
API_FCT(get_node_max_level);
|
||||||
API_FCT(get_node_level);
|
API_FCT(get_node_level);
|
||||||
API_FCT(set_node_level);
|
API_FCT(set_node_level);
|
||||||
|
@ -247,6 +247,9 @@ public:
|
|||||||
class ModApiEnvVM : public ModApiEnvBase {
|
class ModApiEnvVM : public ModApiEnvBase {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
// get_node_or_nil(pos)
|
||||||
|
static int l_get_node_or_nil(lua_State *L);
|
||||||
|
|
||||||
// get_node_max_level(pos)
|
// get_node_max_level(pos)
|
||||||
static int l_get_node_max_level(lua_State *L);
|
static int l_get_node_max_level(lua_State *L);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user