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
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)

View file

@ -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

View file

@ -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,
})

View file

@ -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