1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Fix covered node rendering, update doc. Fix default inventory image for covered/sunken nodes.

This commit is contained in:
SFENCE 2024-01-25 16:59:16 +01:00
parent a91e532b29
commit d14f2f4bdd
4 changed files with 20 additions and 87 deletions

View file

@ -150,14 +150,6 @@ local function preprocess_node(nodedef)
if nodedef.liquidtype == "flowing" then if nodedef.liquidtype == "flowing" then
nodedef.paramtype2 = "flowingliquid" nodedef.paramtype2 = "flowingliquid"
end 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 end
local function preprocess_craft(itemdef) local function preprocess_craft(itemdef)

View file

@ -1611,7 +1611,7 @@ There are a bunch of different looking node types.
* `covered` * `covered`
* Can be used to draw covered nodes like historical vases, sculptures, etc covered by sand. * 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` * 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. * 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 `*_optional` drawtypes need less rendering time if deactivated

View file

@ -1,31 +1,8 @@
local S = minetest.get_translator("testnodes") local S = minetest.get_translator("testnodes")
-- Sunken node example. -- Sunken node example.
minetest.register_node("testnodes:sunken_torchlike", { minetest.register_node("testnodes:sunken_ls_r5", {
description = "Sunken Torchlike Test Node in Liquid Source Range 5", description = "Sunken 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",
drawtype = "sunken", drawtype = "sunken",
tiles = {"testnodes_liquidsource_r5.png"}, tiles = {"testnodes_liquidsource_r5.png"},
special_tiles = { special_tiles = {
@ -44,68 +21,32 @@ minetest.register_node("testnodes:sunken_nodebox", {
--liquid_alternative_source = "testnodes:sunken_nodebox", --liquid_alternative_source = "testnodes:sunken_nodebox",
liquid_range = 5, liquid_range = 5,
inner_node = "testnodes:nodebox_fixed", on_construct = function(pos)
}) local meta = minetest.get_meta(pos)
meta:set_string("inner_node", "testnodes:mesh")
minetest.register_node("testnodes:sunken_mesh", { end,
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",
}) })
-- Covered node example. -- Covered node example.
-- An simple example nodebox with one centered box minetest.register_node("testnodes:covered_nodebox", {
minetest.register_node("testnodes:covered_torchlike_node", { description = S("Covered Test Node in Nodebox Test Node").."\n"..
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"..
S("Torchlike node inside"), S("Torchlike node inside"),
tiles = { "testnodes_nodebox.png" }, tiles = { "testnodes_nodebox.png" },
drawtype = "covered", drawtype = "covered",
paramtype2 = "leveled",
paramtype = "light", 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}, groups = {dig_immediate=3},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("inner_node", "testnodes:mesh")
end,
}) })

View file

@ -1820,7 +1820,7 @@ void MapblockMeshGenerator::drawCoveredNode()
cur_node.f = store_f; cur_node.f = store_f;
} }
drawSolidNode(); drawNodeboxNode();
} }
// also called when the drawtype is known but should have been pre-converted // also called when the drawtype is known but should have been pre-converted