Fix buggy on_timer door code
parent
4c0abd3c3f
commit
d32559ef19
|
@ -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( )
|
||||
---------------------------------
|
||||
|
|
Loading…
Reference in New Issue