1 -- Thanks to sofar for helping with that code.
3 screwdriver = screwdriver or {}
5 local function door_toggle(pos_actuator, pos_door, player)
6 local actuator = minetest.get_node(pos_actuator)
7 local door = doors.get(pos_door)
9 minetest.set_node(pos_actuator, {name=actuator.name:gsub("_off", "_on"), param2=actuator.param2})
12 minetest.after(2, function()
13 minetest.set_node(pos_actuator, {name=actuator.name, param2=actuator.param2})
18 function plate.construct(pos)
19 local timer = minetest.get_node_timer(pos)
23 function plate.timer(pos)
24 local objs = minetest.get_objects_inside_radius(pos, 0.8)
25 if objs == {} or not doors.get then return true end
26 local minp = {x=pos.x-2, y=pos.y, z=pos.z-2}
27 local maxp = {x=pos.x+2, y=pos.y, z=pos.z+2}
28 local doors = minetest.find_nodes_in_area(minp, maxp, "group:door")
30 for _, player in pairs(objs) do
31 if player:is_player() then
33 door_toggle(pos, doors[i], player)
40 for _, m in pairs({"wooden", "stone"}) do
41 local sound = default.node_sound_wood_defaults()
43 sound = default.node_sound_stone_defaults()
45 xdecor.register("pressure_"..m.."_off", {
46 description = m:gsub("^%l", string.upper).." Pressure Plate",
47 tiles = {"xdecor_pressure_"..m..".png"},
49 node_box = xdecor.pixelbox(16, {{1, 0, 1, 14, 1, 14}}),
52 sunlight_propagates = true,
53 on_rotate = screwdriver.rotate_simple,
54 on_construct = plate.construct,
55 on_timer = plate.timer
58 xdecor.register("pressure_"..m.."_on", {
59 tiles = {"xdecor_pressure_"..m..".png"},
61 node_box = xdecor.pixelbox(16, {{1, 0, 1, 14, 0.4, 14}}),
62 groups = {snappy=3, not_in_creative_inventory=1},
64 drop = "xdecor:pressure_"..m.."_off",
65 sunlight_propagates = true,
66 on_rotate = screwdriver.rotate_simple
70 xdecor.register("lever_off", {
71 description = "Lever",
72 tiles = {"xdecor_lever_off.png"},
74 node_box = xdecor.pixelbox(16, {{2, 1, 15, 12, 14, 1}}),
75 groups = {cracky=3, oddly_breakable_by_hand=2},
76 sounds = default.node_sound_stone_defaults(),
77 sunlight_propagates = true,
78 on_rotate = screwdriver.rotate_simple,
79 on_rightclick = function(pos, node, clicker)
80 if not doors.get then return end
81 local minp = {x=pos.x-2, y=pos.y-1, z=pos.z-2}
82 local maxp = {x=pos.x+2, y=pos.y+1, z=pos.z+2}
83 local doors = minetest.find_nodes_in_area(minp, maxp, "group:door")
86 door_toggle(pos, doors[i], clicker)
91 xdecor.register("lever_on", {
92 tiles = {"xdecor_lever_on.png"},
94 node_box = xdecor.pixelbox(16, {{2, 1, 15, 12, 14, 1}}),
95 groups = {cracky=3, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
96 sounds = default.node_sound_stone_defaults(),
97 sunlight_propagates = true,
98 on_rotate = screwdriver.rotate_simple,
99 drop = "xdecor:lever_off"