Tweak button/pressure plate connection sides

This commit is contained in:
Wuzzy 2017-09-12 05:37:03 +02:00
parent 427eb32448
commit be135b7066
2 changed files with 34 additions and 5 deletions

View file

@ -10,9 +10,22 @@ local button_get_output_rules = function(node)
{x = 0, y = 0, z = -1}, {x = 0, y = 0, z = -1},
{x = 0, y = 0, z = 1}, {x = 0, y = 0, z = 1},
{x = 0, y = -1, z = 0}, {x = 0, y = -1, z = 0},
{x = 0, y = 1, z = 0},
} }
if minetest.wallmounted_to_dir(node.param2).y == 1 then if minetest.wallmounted_to_dir(node.param2).y == 1 then
table.insert(rules, {x=0, y=1, z=1}) table.insert(rules, {x=0, y=2, z=0})
elseif minetest.wallmounted_to_dir(node.param2).y == -1 then
table.insert(rules, {x=0, y=-2, z=0})
end
if minetest.wallmounted_to_dir(node.param2).x == 1 then
table.insert(rules, {x=2, y=0, z=0})
elseif minetest.wallmounted_to_dir(node.param2).x == -1 then
table.insert(rules, {x=-2, y=0, z=0})
end
if minetest.wallmounted_to_dir(node.param2).z == 1 then
table.insert(rules, {x=0, y=0, z=2})
elseif minetest.wallmounted_to_dir(node.param2).z == -1 then
table.insert(rules, {x=-0, y=0, z=-2})
end end
return rules return rules
end end

View file

@ -10,6 +10,22 @@ local pp_box_on = {
fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 }, fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
} }
local pplate_rules = {
{x=-1, y=0, z=0},
{x=1, y=0, z=0},
{x=0, y=0, z=-1},
{x=0, y=0, z=1},
{x=-1, y=-1, z=0},
{x=1, y=-1, z=0},
{x=0, y=-1, z=-1},
{x=0, y=-1, z=1},
{x=0, y=-1, z=0},
{x=0, y=-2, z=0},
{x=0, y=1, z=0},
}
local function pp_on_timer(pos, elapsed) local function pp_on_timer(pos, elapsed)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local basename = minetest.registered_nodes[node.name].pressureplate_basename local basename = minetest.registered_nodes[node.name].pressureplate_basename
@ -52,7 +68,7 @@ local function pp_on_timer(pos, elapsed)
end end
if disable then if disable then
minetest.set_node(pos, {name = basename .. "_off"}) minetest.set_node(pos, {name = basename .. "_off"})
mesecon.receptor_off(pos, mesecon.rules.pplate) mesecon.receptor_off(pos, pplate_rules)
end end
elseif node.name == basename .. "_off" then elseif node.name == basename .. "_off" then
for k, obj in pairs(objs) do for k, obj in pairs(objs) do
@ -60,7 +76,7 @@ local function pp_on_timer(pos, elapsed)
if obj_does_activate(obj, activated_by) then if obj_does_activate(obj, activated_by) then
if objpos.y > pos.y-1 and objpos.y < pos.y then if objpos.y > pos.y-1 and objpos.y < pos.y then
minetest.set_node(pos, {name = basename .. "_on"}) minetest.set_node(pos, {name = basename .. "_on"})
mesecon.receptor_on(pos, mesecon.rules.pplate ) mesecon.receptor_on(pos, pplate_rules)
break break
end end
end end
@ -119,7 +135,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te
groups = groups_off, groups = groups_off,
tiles = textures_off, tiles = textures_off,
mesecons = {receptor = { state = mesecon.state.off, rules = mesecon.rules.pplate }}, mesecons = {receptor = { state = mesecon.state.off, rules = pplate_rules }},
_doc_items_longdesc = longdesc, _doc_items_longdesc = longdesc,
},{ },{
node_box = pp_box_on, node_box = pp_box_on,
@ -127,7 +143,7 @@ function mesecon.register_pressure_plate(basename, description, textures_off, te
groups = groups_on, groups = groups_on,
tiles = textures_on, tiles = textures_on,
mesecons = {receptor = { state = mesecon.state.on, rules = mesecon.rules.pplate }}, mesecons = {receptor = { state = mesecon.state.on, rules = pplate_rules }},
_doc_items_create_entry = false, _doc_items_create_entry = false,
}) })