forked from VoxeLibre/VoxeLibre
Removed direction checks
This commit is contained in:
parent
b320d008ca
commit
9b2b8ee56e
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue