From 67b21804e3214aa2c2b6909fb067d588e95483a0 Mon Sep 17 00:00:00 2001 From: Jeija Date: Wed, 15 Aug 2012 20:43:45 +0200 Subject: Fix/Improve Wall lever rules --- mesecons_walllever/init.lua | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'mesecons_walllever') diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua index 1904085..b41e87a 100644 --- a/mesecons_walllever/init.lua +++ b/mesecons_walllever/init.lua @@ -26,7 +26,7 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { { -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge" { -1/16, -8/16, 4/16, 1/16, 0, 6/16 }} -- the lever itself. }, - groups = {dig_immediate=2, mesecon = 1}, + groups = {dig_immediate=2, mesecon = 3}, description="Lever", }) minetest.register_node("mesecons_walllever:wall_lever_on", { @@ -56,7 +56,7 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { { -2/16, -1/16, 3/16, 2/16, 1/16, 4/16 }, -- the lever "hinge" { -1/16, 0, 4/16, 1/16, 8/16, 6/16 }} -- the lever itself. }, - groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 1}, + groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 3}, drop = '"mesecons_walllever:wall_lever_off" 1', description="Lever", }) @@ -64,11 +64,11 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { minetest.register_on_punchnode(function(pos, node, puncher) if node.name == "mesecons_walllever:wall_lever_off" then minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_on",param2=node.param2}) - mesecon:receptor_on(pos, mesecon.button_get_rules(node.param2)) + mesecon:receptor_on(pos, mesecon.walllever_get_rules(node.param2)) end if node.name == "mesecons_walllever:wall_lever_on" then minetest.env:add_node(pos, {name="mesecons_walllever:wall_lever_off",param2=node.param2}) - mesecon:receptor_off(pos, mesecon.button_get_rules(node.param2)) + mesecon:receptor_off(pos, mesecon.walllever_get_rules(node.param2)) end end) @@ -80,5 +80,29 @@ minetest.register_craft({ {'"default:stick"'}, } }) -mesecon:add_receptor_node("mesecons_walllever:wall_lever_on", nil, mesecon.button_get_rules) -mesecon:add_receptor_node_off("mesecons_walllever:wall_lever_off", nil, mesecon.button_get_rules) + +mesecon:add_rules("walllever", { +{x = 1, y = 0, z = 0}, +{x = 1, y = 1, z = 0}, +{x = 1, y =-1, z = 0}, +{x = 1, y =-1, z = 1}, +{x = 1, y =-1, z =-1}, +{x = 2, y = 0, z = 0},}) + + +mesecon.walllever_get_rules = function(param2) + local rules=mesecon:get_rules("walllever") + if param2 == 2 then + rules=mesecon:rotate_rules_left(rules) + end + if param2 == 3 then + rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) + end + if param2 == 0 then + rules=mesecon:rotate_rules_right(rules) + end + return rules +end + +mesecon:add_receptor_node("mesecons_walllever:wall_lever_on", nil, mesecon.walllever_get_rules) +mesecon:add_receptor_node_off("mesecons_walllever:wall_lever_off", nil, mesecon.walllever_get_rules) -- cgit v1.2.3