X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fscript%2Fcpp_api%2Fs_node.cpp;h=029cb6308c4386cf619823f4481066e71225cda7;hb=ec9f1575121e3b064b919bca7efddfa8b0fc4e65;hp=719f53a6baef8a6f9fb7c381fcbb956ed86f4931;hpb=eef62c82a2e58700fc1216b0b8c03e421bc77995;p=minetest.git diff --git a/src/script/cpp_api/s_node.cpp b/src/script/cpp_api/s_node.cpp index 719f53a6b..029cb6308 100644 --- a/src/script/cpp_api/s_node.cpp +++ b/src/script/cpp_api/s_node.cpp @@ -65,6 +65,7 @@ struct EnumString ScriptApiNode::es_ContentParamType2[] = {CPT2_COLORED_FACEDIR, "colorfacedir"}, {CPT2_COLORED_WALLMOUNTED, "colorwallmounted"}, {CPT2_GLASSLIKE_LIQUID_LEVEL, "glasslikeliquidlevel"}, + {CPT2_COLORED_DEGROTATE, "colordegrotate"}, {0, NULL}, }; @@ -93,8 +94,16 @@ struct EnumString ScriptApiNode::es_NodeBoxType[] = {0, NULL}, }; +struct EnumString ScriptApiNode::es_TextureAlphaMode[] = + { + {ALPHAMODE_OPAQUE, "opaque"}, + {ALPHAMODE_CLIP, "clip"}, + {ALPHAMODE_BLEND, "blend"}, + {0, NULL}, + }; + bool ScriptApiNode::node_on_punch(v3s16 p, MapNode node, - ServerActiveObject *puncher, PointedThing pointed) + ServerActiveObject *puncher, const PointedThing &pointed) { SCRIPTAPI_PRECHECKHEADER @@ -133,9 +142,14 @@ bool ScriptApiNode::node_on_dig(v3s16 p, MapNode node, push_v3s16(L, p); pushnode(L, node, ndef); objectrefGetOrCreate(L, digger); - PCALL_RES(lua_pcall(L, 3, 0, error_handler)); - lua_pop(L, 1); // Pop error handler - return true; + PCALL_RES(lua_pcall(L, 3, 1, error_handler)); + + // nil is treated as true for backwards compat + bool result = lua_isnil(L, -1) || lua_toboolean(L, -1); + + lua_pop(L, 2); // Pop error handler and result + + return result; } void ScriptApiNode::node_on_construct(v3s16 p, MapNode node) @@ -246,7 +260,7 @@ void ScriptApiNode::node_on_receive_fields(v3s16 p, const NodeDefManager *ndef = getServer()->ndef(); // If node doesn't exist, we don't know what callback to call - MapNode node = getEnv()->getMap().getNodeNoEx(p); + MapNode node = getEnv()->getMap().getNode(p); if (node.getContent() == CONTENT_IGNORE) return;