Fix buggy on_timer door code

master
Wuzzy 2021-10-09 22:49:33 +02:00
parent 4c0abd3c3f
commit d32559ef19
1 changed files with 27 additions and 35 deletions

View File

@ -308,41 +308,6 @@ end
local is_trapdoor_locked = is_door_locked
---------------------------------
-- on_timer_door( )
---------------------------------
local on_timer_door = function(pos)
-- Auto-close timeout
local node = minetest.get_node( pos )
local meta = minetest.get_meta( pos )
local state = meta:get_int( "state" )
local is_open, state, transform = get_door_transform( state, node.param2, true, false, false )
local ndef = minetest.registered_nodes[node.name]
if not ndef then
return
end
local new_name = ndef.base_name .. transform.suffix
local new_param2 = transform.param2
if not is_open then
minetest.sound_play( ndef.sound_close, { pos = pos, gain = 0.3, max_hear_distance = 10 }, true )
minetest.swap_node( pos, { name = new_name, param2 = new_param2 } )
meta:set_int( "state", state )
end
end
local on_timer_trapdoor = function(pos)
local node = minetest.get_node(pos)
local ndef = minetest.registered_nodes[node.name]
if node.name == ndef.base_name .. "_open" then
local new_name = ndef.base_name
minetest.sound_play( ndef.sound_close, { pos = pos, gain = 0.3, max_hear_distance = 10 }, true )
minetest.swap_node( pos, { name = new_name, param2 = node.param2 } )
end
end
---------------------------------
-- toggle_door( )
---------------------------------
@ -465,6 +430,33 @@ function toggle_trapdoor( pos, node, player )
end
end
---------------------------------
-- on_timer_door( )
---------------------------------
local on_timer_door = function(pos)
-- Auto-close timeout
local node = minetest.get_node( pos )
local meta = minetest.get_meta( pos )
local state = meta:get_int( "state" )
local is_open, state, transform = get_door_transform( state, node.param2, true, false, false )
if not is_open then
toggle_door(pos, node) --pass nil player, since security doesn't matter
end
end
---------------------------------
-- on_timer_trapdoor( )
---------------------------------
local on_timer_trapdoor = function(pos)
local node = minetest.get_node(pos)
local ndef = minetest.registered_nodes[node.name]
if node.name == ndef.base_name then
toggle_trapdoor(pos, node) --pass nil player, since security doesn't matter
end
end
---------------------------------
-- on_adjust_door( )
---------------------------------