From d14f2f4bdd1c3e38c0aae1fbdead7357f6da4554 Mon Sep 17 00:00:00 2001 From: SFENCE Date: Thu, 25 Jan 2024 16:59:16 +0100 Subject: [PATCH] Fix covered node rendering, update doc. Fix default inventory image for covered/sunken nodes. --- builtin/game/register.lua | 8 -- doc/lua_api.md | 2 +- .../devtest/mods/testnodes/sunken_covered.lua | 95 ++++--------------- src/client/content_mapblock.cpp | 2 +- 4 files changed, 20 insertions(+), 87 deletions(-) diff --git a/builtin/game/register.lua b/builtin/game/register.lua index bb76caf7f..d6ada6920 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -150,14 +150,6 @@ local function preprocess_node(nodedef) if nodedef.liquidtype == "flowing" then nodedef.paramtype2 = "flowingliquid" end - - if itemdef.type == "node" and (itemdef.drawtype == "sunken" or itemdef.drawtype == "covered") then - if not core.registered_nodes[itemdef.inner_node] then - error("Unable to register item " .. name .. ": Inner node not registered: " .. itemdef.inner_node) - end - else - itemdef.inner_node = nil - end end local function preprocess_craft(itemdef) diff --git a/doc/lua_api.md b/doc/lua_api.md index 52d3d977e..f5820fc0e 100644 --- a/doc/lua_api.md +++ b/doc/lua_api.md @@ -1611,7 +1611,7 @@ There are a bunch of different looking node types. * `covered` * Can be used to draw covered nodes like historical vases, sculptures, etc covered by sand. * It first renders the node defined in metadata fields `inner_node` and `inner_param2` - and after it normal/leveled node around it. + and after it leveled nodebox node around it. * By changing the level of the node, the covered node can be fully or partially covered/uncovered. `*_optional` drawtypes need less rendering time if deactivated diff --git a/games/devtest/mods/testnodes/sunken_covered.lua b/games/devtest/mods/testnodes/sunken_covered.lua index 80512cced..90c5b739d 100644 --- a/games/devtest/mods/testnodes/sunken_covered.lua +++ b/games/devtest/mods/testnodes/sunken_covered.lua @@ -1,31 +1,8 @@ local S = minetest.get_translator("testnodes") -- Sunken node example. -minetest.register_node("testnodes:sunken_torchlike", { - description = "Sunken Torchlike Test Node in Liquid Source Range 5", - drawtype = "sunken", - tiles = {"testnodes_liquidsource_r5.png"}, - special_tiles = { - {name = "testnodes_liquidsource_r5.png", backface_culling = false}, - {name = "testnodes_liquidsource_r5.png", backface_culling = true}, - }, - use_texture_alpha = "blend", - paramtype = "light", - walkable = false, - buildable_to = true, - is_ground_content = false, - liquidtype = "source", - liquid_alternative_flowing = "testnodes:rliquid_flowing_5", - liquid_alternative_source = "testnodes:rliquid_5", - --liquid_alternative_flowing = "testnodes:sunken_torchlike", - --liquid_alternative_source = "testnodes:sunken_torchlike", - liquid_range = 5, - - inner_node = "testnodes:torchlike", -}) - -minetest.register_node("testnodes:sunken_nodebox", { - description = "Sunken Nodebox Test Node in Liquid Source Range 5", +minetest.register_node("testnodes:sunken_ls_r5", { + description = "Sunken Test Node in Liquid Source Range 5", drawtype = "sunken", tiles = {"testnodes_liquidsource_r5.png"}, special_tiles = { @@ -44,68 +21,32 @@ minetest.register_node("testnodes:sunken_nodebox", { --liquid_alternative_source = "testnodes:sunken_nodebox", liquid_range = 5, - inner_node = "testnodes:nodebox_fixed", -}) - -minetest.register_node("testnodes:sunken_mesh", { - description = "Sunken Mesh Test Node in Liquid Source Range 5", - drawtype = "sunken", - tiles = {"testnodes_liquidsource_r5.png"}, - special_tiles = { - {name = "testnodes_liquidsource_r5.png", backface_culling = false}, - {name = "testnodes_liquidsource_r5.png", backface_culling = true}, - }, - use_texture_alpha = "blend", - paramtype = "light", - walkable = false, - buildable_to = true, - is_ground_content = false, - liquidtype = "source", - liquid_alternative_flowing = "testnodes:rliquid_flowing_5", - liquid_alternative_source = "testnodes:rliquid_5", - --liquid_alternative_flowing = "testnodes:sunken_nodebox", - --liquid_alternative_source = "testnodes:sunken_nodebox", - liquid_range = 5, - - inner_node = "testnodes:mesh", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("inner_node", "testnodes:mesh") + end, }) -- Covered node example. --- An simple example nodebox with one centered box -minetest.register_node("testnodes:covered_torchlike_node", { - description = S("Covered Tochlike Test Node").."\n".. - S("Torchlike node inside"), - tiles = { "testnodes_glasslike.png" }, - drawtype = "covered", - paramtype = "light", - - inner_node = "testnodes:torchlike", - - groups = {dig_immediate=3}, -}) - -minetest.register_node("testnodes:covered_nodebox_node", { - description = S("Covered Fixed Nodebox Test Node").."\n".. - S("Torchlike node inside"), - tiles = { "testnodes_glasslike.png" }, - drawtype = "covered", - paramtype = "light", - - inner_node = "testnodes:nodebox_fixed", - - groups = {dig_immediate=3}, -}) - -minetest.register_node("testnodes:covered_mesh_node", { - description = S("Covered Fixed Mesh Test Node").."\n".. +minetest.register_node("testnodes:covered_nodebox", { + description = S("Covered Test Node in Nodebox Test Node").."\n".. S("Torchlike node inside"), tiles = { "testnodes_nodebox.png" }, drawtype = "covered", + paramtype2 = "leveled", paramtype = "light", - inner_node = "testnodes:mesh", + node_box = { + type = "leveled", + fixed = {-0.5, 0.0, -0.5, 0.5, -0.499, 0.5}, + }, groups = {dig_immediate=3}, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("inner_node", "testnodes:mesh") + end, }) diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index 77b324901..970ffaef2 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -1820,7 +1820,7 @@ void MapblockMeshGenerator::drawCoveredNode() cur_node.f = store_f; } - drawSolidNode(); + drawNodeboxNode(); } // also called when the drawtype is known but should have been pre-converted