Merge pull request 'Solving ladder placement issues' (#4596) from goodspeed/VoxeLibre:ladder-logic into master

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4596
Reviewed-by: Mikita Wiśniewski <rudzik8@protonmail.com>
This commit is contained in:
the-real-herowl 2024-08-18 01:40:42 +02:00
commit a687ef19f6

@ -40,7 +40,7 @@ end
minetest.register_node("mcl_core:ladder", { minetest.register_node("mcl_core:ladder", {
description = S("Ladder"), description = S("Ladder"),
_doc_items_longdesc = S( _doc_items_longdesc = S(
"A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks and not on glass, leaves, ice, slabs, glowstone, nor sea lanterns."), "A piece of ladder which allows you to climb vertically. Ladders can only be placed on the side of solid blocks."),
drawtype = "signlike", drawtype = "signlike",
is_ground_content = false, is_ground_content = false,
tiles = { "default_ladder.png" }, tiles = { "default_ladder.png" },
@ -85,9 +85,8 @@ minetest.register_node("mcl_core:ladder", {
end end
local groups = def.groups local groups = def.groups
-- Don't allow to place the ladder at particular nodes -- Don't allow to place the ladder at non-solid nodes
if (groups and (groups.glass or groups.leaves or groups.slab)) or if (groups and (not groups.solid)) then
node.name == "mcl_core:ladder" or node.name == "mcl_core:ice" or node.name == "mcl_nether:glowstone" or node.name == "mcl_ocean:sea_lantern" then
return itemstack return itemstack
end end
@ -105,9 +104,10 @@ minetest.register_node("mcl_core:ladder", {
return itemstack return itemstack
end end
local idef = itemstack:get_definition() local idef = itemstack:get_definition()
local success = minetest.item_place_node(itemstack, placer, pointed_thing) local itemstack, pos = minetest.item_place_node(itemstack, placer, pointed_thing)
if success then -- A non-nil pos indicates the node was placed in a valid position.
if pos then
if idef.sounds and idef.sounds.place then if idef.sounds and idef.sounds.place then
minetest.sound_play(idef.sounds.place, { pos = above, gain = 1 }, true) minetest.sound_play(idef.sounds.place, { pos = above, gain = 1 }, true)
end end