forked from minetest-mods/mesecons
adb803ce17
Remove legacy code that enabled / disabled mesecon wires that were placed 2 blocks below a pressure plate. From now on, please place a vertical wire at that place. That way, no false signals will be triggered (the wire won't "flash" turned off if you enable it by a pressure plate and turn off a switch connected to it). If you depend on this functionality, please just revert this commit. That should be possible in the near future as well, since no major rewrites are planned for mesecons_pressureplates. In the long run, please update your mesecon strucutres to use vertical wires instead of relying on this old hack.
95 lines
3.4 KiB
Lua
95 lines
3.4 KiB
Lua
local pp_box_off = {
|
|
type = "fixed",
|
|
fixed = { -7/16, -8/16, -7/16, 7/16, -7/16, 7/16 },
|
|
}
|
|
|
|
local pp_box_on = {
|
|
type = "fixed",
|
|
fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
|
|
}
|
|
|
|
pp_on_timer = function (pos, elapsed)
|
|
local node = minetest.get_node(pos)
|
|
local basename = minetest.registered_nodes[node.name].pressureplate_basename
|
|
|
|
-- This is a workaround for a strange bug that occurs when the server is started
|
|
-- For some reason the first time on_timer is called, the pos is wrong
|
|
if not basename then return end
|
|
|
|
local objs = minetest.get_objects_inside_radius(pos, 1)
|
|
local two_below = mesecon.addPosRule(pos, {x = 0, y = -2, z = 0})
|
|
|
|
if objs[1] == nil and node.name == basename .. "_on" then
|
|
minetest.add_node(pos, {name = basename .. "_off"})
|
|
mesecon.receptor_off(pos, mesecon.rules.pplate)
|
|
else
|
|
for k, obj in pairs(objs) do
|
|
local objpos = obj:getpos()
|
|
if objpos.y > pos.y-1 and objpos.y < pos.y then
|
|
minetest.add_node(pos, {name = basename .. "_on"})
|
|
mesecon.receptor_on(pos, mesecon.rules.pplate )
|
|
end
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
-- Register a Pressure Plate
|
|
-- offstate: name of the pressure plate when inactive
|
|
-- onstate: name of the pressure plate when active
|
|
-- description: description displayed in the player's inventory
|
|
-- tiles_off: textures of the pressure plate when inactive
|
|
-- tiles_on: textures of the pressure plate when active
|
|
-- image: inventory and wield image of the pressure plate
|
|
-- recipe: crafting recipe of the pressure plate
|
|
|
|
function mesecon.register_pressure_plate(basename, description, textures_off, textures_on, image_w, image_i, recipe)
|
|
mesecon.register_node(basename, {
|
|
drawtype = "nodebox",
|
|
inventory_image = image_i,
|
|
wield_image = image_w,
|
|
paramtype = "light",
|
|
description = description,
|
|
pressureplate_basename = basename,
|
|
on_timer = pp_on_timer,
|
|
on_construct = function(pos)
|
|
minetest.get_node_timer(pos):start(mesecon.setting("pplate_interval", 0.1))
|
|
end,
|
|
},{
|
|
mesecons = {receptor = { state = mesecon.state.off, rules = mesecon.rules.pplate }},
|
|
node_box = pp_box_off,
|
|
selection_box = pp_box_off,
|
|
groups = {snappy = 2, oddly_breakable_by_hand = 3},
|
|
tiles = textures_off
|
|
},{
|
|
mesecons = {receptor = { state = mesecon.state.on, rules = mesecon.rules.pplate }},
|
|
node_box = pp_box_on,
|
|
selection_box = pp_box_on,
|
|
groups = {snappy = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
|
|
tiles = textures_on
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = basename .. "_off",
|
|
recipe = recipe,
|
|
})
|
|
end
|
|
|
|
mesecon.register_pressure_plate(
|
|
"mesecons_pressureplates:pressure_plate_wood",
|
|
"Wooden Pressure Plate",
|
|
{"jeija_pressure_plate_wood_off.png","jeija_pressure_plate_wood_off.png","jeija_pressure_plate_wood_off_edges.png"},
|
|
{"jeija_pressure_plate_wood_on.png","jeija_pressure_plate_wood_on.png","jeija_pressure_plate_wood_on_edges.png"},
|
|
"jeija_pressure_plate_wood_wield.png",
|
|
"jeija_pressure_plate_wood_inv.png",
|
|
{{"group:wood", "group:wood"}})
|
|
|
|
mesecon.register_pressure_plate(
|
|
"mesecons_pressureplates:pressure_plate_stone",
|
|
"Stone Pressure Plate",
|
|
{"jeija_pressure_plate_stone_off.png","jeija_pressure_plate_stone_off.png","jeija_pressure_plate_stone_off_edges.png"},
|
|
{"jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on.png","jeija_pressure_plate_stone_on_edges.png"},
|
|
"jeija_pressure_plate_stone_wield.png",
|
|
"jeija_pressure_plate_stone_inv.png",
|
|
{{"default:cobble", "default:cobble"}})
|