--- Thanks to sofar for helping with that code.
+--[[ Thanks to sofar for helping with that code.
+Pressure plates work better with this setting in minetest.conf (requires 0.4.14):
+ nodetimer_interval = 0.1
+]]
+
local plate = {}
screwdriver = screwdriver or {}
local actuator = minetest.get_node(pos_actuator)
local door = doors.get(pos_door)
- minetest.set_node(pos_actuator, {name=actuator.name:gsub("_off", "_on"), param2=actuator.param2})
+ if actuator.name:sub(-4) == "_off" then
+ minetest.set_node(pos_actuator,
+ {name=actuator.name:gsub("_off", "_on"), param2=actuator.param2})
+ end
door:open(player)
minetest.after(2, function()
- minetest.set_node(pos_actuator, {name=actuator.name, param2=actuator.param2})
+ if minetest.get_node(pos_actuator).name:sub(-3) == "_on" then
+ minetest.set_node(pos_actuator,
+ {name=actuator.name, param2=actuator.param2})
+ end
door:close(player)
end)
end
function plate.construct(pos)
local timer = minetest.get_node_timer(pos)
- timer:start(0.5)
+ timer:start(0.1)
end
function plate.timer(pos)
for i = 1, #doors do
door_toggle(pos, doors[i], player)
end
+ break
end
end
return true
end
-for _, m in pairs({"wooden", "stone"}) do
- xdecor.register("pressure_"..m.."_off", {
- description = m:gsub("^%l", string.upper).." Pressure Plate",
- tiles = {"xdecor_pressure_"..m..".png"},
+function plate.register(material, desc, def)
+ xdecor.register("pressure_"..material.."_off", {
+ description = desc.." Pressure Plate",
+ tiles = {"xdecor_pressure_"..material..".png"},
drawtype = "nodebox",
node_box = xdecor.pixelbox(16, {{1, 0, 1, 14, 1, 14}}),
- groups = {snappy=3},
- sounds = default.node_sound_wood_defaults(),
+ groups = def.groups,
+ sounds = def.sounds,
sunlight_propagates = true,
on_rotate = screwdriver.rotate_simple,
on_construct = plate.construct,
on_timer = plate.timer
})
-
- xdecor.register("pressure_"..m.."_on", {
- tiles = {"xdecor_pressure_"..m..".png"},
+ xdecor.register("pressure_"..material.."_on", {
+ tiles = {"xdecor_pressure_"..material..".png"},
drawtype = "nodebox",
node_box = xdecor.pixelbox(16, {{1, 0, 1, 14, 0.4, 14}}),
- groups = {snappy=3, not_in_creative_inventory=1},
- sounds = default.node_sound_wood_defaults(),
- drop = "xdecor:pressure_"..m.."_off",
+ groups = def.groups,
+ sounds = def.sounds,
+ drop = "xdecor:pressure_"..material.."_off",
sunlight_propagates = true,
on_rotate = screwdriver.rotate_simple
})
end
+plate.register("wood", "Wooden", {
+ sounds = default.node_sound_wood_defaults(),
+ groups = {choppy=3, oddly_breakable_by_hand=2, flammable=2}
+})
+
+plate.register("stone", "Stone", {
+ sounds = default.node_sound_stone_defaults(),
+ groups = {cracky=3, oddly_breakable_by_hand=2}
+})
+
xdecor.register("lever_off", {
description = "Lever",
tiles = {"xdecor_lever_off.png"},