1
0
Fork 0

Removed direction checks

This commit is contained in:
Dehydrate6684 2023-11-05 14:06:53 +08:00
parent b320d008ca
commit 9b2b8ee56e
Signed by untrusted user: Dehydrate6684
GPG Key ID: 5926A2FA9B7653EF
2 changed files with 5 additions and 34 deletions

View File

@ -11,42 +11,15 @@ local function rotate_climbable(pos, node, user, mode)
return false return false
end end
---Checks the direction (param2) of a ladder and a trapdoor and determine if they are
---facing the same direction.
---
---@param ladder integer The param2 value of the ladder.
---@param trapdoor integer The param2 value of the trapdoor.
---@return boolean If the ladder and trapdoor are in the same direction.
function mcl_core.check_direction(ladder, trapdoor)
local convert_table = {
{ 1, 23 },
{ 3, 21 },
{ 0, 20 },
{ 2, 22 },
}
local conversion = convert_table[ladder - 1];
if not conversion then
return false
elseif conversion[1] == trapdoor or conversion[2] == trapdoor then
return true
end
return false
end
---Updates the trapdoor above (if any). ---Updates the trapdoor above (if any).
--- ---
---@param pos mt.Vector The position of the ladder. ---@param pos mt.Vector The position of the ladder.
---@param ladder integer The param2 value of the ladder.
---@param event "place" | "destruct" The place or destruct event. ---@param event "place" | "destruct" The place or destruct event.
local function update_trapdoor(pos, ladder, event) local function update_trapdoor(pos, event)
local top_pos = vector.offset(pos, 0, 1, 0) local top_pos = vector.offset(pos, 0, 1, 0)
local top_node = minetest.get_node_or_nil(top_pos) local top_node = minetest.get_node_or_nil(top_pos)
if top_node and minetest.get_item_group(top_node.name, "trapdoor") == 2 then
if top_node and minetest.get_item_group(top_node.name, "trapdoor") == 2
and mcl_core.check_direction(ladder, top_node.param2) then
local new_name = top_node.name local new_name = top_node.name
if event == "place" then if event == "place" then
new_name = string.gsub(new_name, "open$", "ladder") new_name = string.gsub(new_name, "open$", "ladder")
@ -142,11 +115,10 @@ minetest.register_node("mcl_core:ladder", {
return itemstack return itemstack
end, end,
after_destruct = function(pos, old) after_destruct = function(pos, old)
update_trapdoor(pos, old.param2, "destruct") update_trapdoor(pos, "destruct")
end, end,
after_place_node = function(pos) after_place_node = function(pos)
local me = minetest.get_node(pos) update_trapdoor(pos, "place")
update_trapdoor(pos, me.param2, "place")
end, end,
_mcl_blast_resistance = 0.4, _mcl_blast_resistance = 0.4,
_mcl_hardness = 0.4, _mcl_hardness = 0.4,

View File

@ -79,8 +79,7 @@ function mcl_doors:register_trapdoor(name, def)
-- Checking if there is something underneath the trapdoor -- Checking if there is something underneath the trapdoor
if bottom_node then if bottom_node then
local is_ladder = minetest.get_item_group(bottom_node.name, "ladder") local is_ladder = minetest.get_item_group(bottom_node.name, "ladder")
local same_direction = mcl_core.check_direction(bottom_node.param2, me.param2) if is_ladder > 0 then
if is_ladder > 0 and same_direction then
name_end = "_ladder" name_end = "_ladder"
end end
end end