diff --git a/mesecons_doors/init.lua b/mesecons_doors/init.lua index 80548f2..a1f172c 100644 --- a/mesecons_doors/init.lua +++ b/mesecons_doors/init.lua @@ -6,9 +6,9 @@ local function on_rightclick(pos, dir, check_name, replace, replace_dir, params) end local p2 = minetest.get_node(pos).param2 p2 = params[p2 + 1] - + minetest.swap_node(pos, {name = replace_dir, param2 = p2}) - + pos.y = pos.y - dir minetest.swap_node(pos, {name = replace, param2 = p2}) @@ -49,3 +49,41 @@ meseconify_door("doors:door_wood") meseconify_door("doors:door_steel") meseconify_door("doors:door_glass") meseconify_door("doors:door_obsidian_glass") + +-- Trapdoor +local function punch(pos) + local meta = minetest.get_meta(pos) + local state = meta:get_int("state") + local me = minetest.get_node(pos) + local tmp_node + local tmp_node2 + if state == 1 then + state = 0 + minetest.sound_play("doors_door_close", {pos = pos, gain = 0.3, max_hear_distance = 10}) + tmp_node = {name="doors:trapdoor", param1=me.param1, param2=me.param2} + else + state = 1 + minetest.sound_play("doors_door_open", {pos = pos, gain = 0.3, max_hear_distance = 10}) + tmp_node = {name="doors:trapdoor_open", param1=me.param1, param2=me.param2} + end + minetest.set_node(pos, tmp_node) + meta:set_int("state", state) +end + +minetest.override_item("doors:trapdoor", { + mesecons = {effector = { + action_on = function(pos) + punch(pos) + end, + rules = mesecon.rules.pplate + }}, +}) + +minetest.override_item("doors:trapdoor_open", { + mesecons = {effector = { + action_off = function(pos) + punch(pos) + end, + rules = mesecon.rules.pplate + }}, +})