forked from Mineclonia/Mineclonia
Remove piston base when piston head got destroyed
This commit is contained in:
parent
5c98a01fb1
commit
2e6aa37ca4
|
@ -46,6 +46,8 @@ piston_get_direction = function (dir, node)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Remove pusher of piston.
|
||||||
|
-- To be used when piston was destroyed or dug.
|
||||||
local piston_remove_pusher = function (pos, oldnode)
|
local piston_remove_pusher = function (pos, oldnode)
|
||||||
local pistonspec = minetest.registered_nodes[oldnode.name].mesecons_piston
|
local pistonspec = minetest.registered_nodes[oldnode.name].mesecons_piston
|
||||||
|
|
||||||
|
@ -53,7 +55,7 @@ local piston_remove_pusher = function (pos, oldnode)
|
||||||
local pusherpos = vector.add(pos, dir)
|
local pusherpos = vector.add(pos, dir)
|
||||||
local pushername = minetest.get_node(pusherpos).name
|
local pushername = minetest.get_node(pusherpos).name
|
||||||
|
|
||||||
if pushername == pistonspec.pusher then --make sure there actually is a pusher (for compatibility reasons mainly)
|
if pushername == pistonspec.pusher then -- make sure there actually is a pusher
|
||||||
minetest.remove_node(pusherpos)
|
minetest.remove_node(pusherpos)
|
||||||
core.check_for_falling(pusherpos)
|
core.check_for_falling(pusherpos)
|
||||||
minetest.sound_play("piston_retract", {
|
minetest.sound_play("piston_retract", {
|
||||||
|
@ -64,6 +66,27 @@ local piston_remove_pusher = function (pos, oldnode)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Remove base node of piston.
|
||||||
|
-- To be used when pusher was destroyed.
|
||||||
|
local piston_remove_base = function (pos, oldnode)
|
||||||
|
local basenodename = minetest.registered_nodes[oldnode.name].corresponding_piston
|
||||||
|
local pistonspec = minetest.registered_nodes[basenodename].mesecons_piston
|
||||||
|
|
||||||
|
local dir = piston_get_direction(pistonspec.dir, oldnode)
|
||||||
|
local basepos = vector.subtract(pos, dir)
|
||||||
|
local basename = minetest.get_node(basepos).name
|
||||||
|
|
||||||
|
if basename == pistonspec.onname then -- make sure there actually is a base node
|
||||||
|
minetest.remove_node(basepos)
|
||||||
|
core.check_for_falling(basepos)
|
||||||
|
minetest.sound_play("piston_retract", {
|
||||||
|
pos = pos,
|
||||||
|
max_hear_distance = 20,
|
||||||
|
gain = 0.3,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local piston_on = function (pos, node)
|
local piston_on = function (pos, node)
|
||||||
local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
|
local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
|
||||||
|
|
||||||
|
@ -224,6 +247,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_normal_on",
|
corresponding_piston = "mesecons_pistons:piston_normal_on",
|
||||||
selection_box = piston_pusher_box,
|
selection_box = piston_pusher_box,
|
||||||
|
@ -319,6 +343,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_sticky_on",
|
corresponding_piston = "mesecons_pistons:piston_sticky_on",
|
||||||
selection_box = piston_pusher_box,
|
selection_box = piston_pusher_box,
|
||||||
|
@ -428,6 +453,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_normal", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_up_normal_on",
|
corresponding_piston = "mesecons_pistons:piston_up_normal_on",
|
||||||
selection_box = piston_up_pusher_box,
|
selection_box = piston_up_pusher_box,
|
||||||
|
@ -520,6 +546,7 @@ minetest.register_node("mesecons_pistons:piston_up_pusher_sticky", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_up_sticky_on",
|
corresponding_piston = "mesecons_pistons:piston_up_sticky_on",
|
||||||
selection_box = piston_up_pusher_box,
|
selection_box = piston_up_pusher_box,
|
||||||
|
@ -631,6 +658,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_normal", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_down_normal_on",
|
corresponding_piston = "mesecons_pistons:piston_down_normal_on",
|
||||||
selection_box = piston_down_pusher_box,
|
selection_box = piston_down_pusher_box,
|
||||||
|
@ -720,6 +748,7 @@ minetest.register_node("mesecons_pistons:piston_down_pusher_sticky", {
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
|
after_destruct = piston_remove_base,
|
||||||
diggable = false,
|
diggable = false,
|
||||||
corresponding_piston = "mesecons_pistons:piston_down_sticky_on",
|
corresponding_piston = "mesecons_pistons:piston_down_sticky_on",
|
||||||
selection_box = piston_down_pusher_box,
|
selection_box = piston_down_pusher_box,
|
||||||
|
|
Loading…
Reference in New Issue