From b37bdbf55cf6d3205d5dd7a2491a8bd855cbbd76 Mon Sep 17 00:00:00 2001 From: Jeija Date: Sun, 9 Dec 2012 00:42:30 +0100 Subject: Port a lot more (basically everything apart from gates, pistons and extrawire crossing) to the new nodedef system. There are some problems with wall button and wall lever (in the way they visually connect to wires) --- mesecons_walllever/init.lua | 73 ++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 38 deletions(-) (limited to 'mesecons_walllever') diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua index 36c4b8f..da427be 100644 --- a/mesecons_walllever/init.lua +++ b/mesecons_walllever/init.lua @@ -1,4 +1,22 @@ -- WALL LEVER +local walllever_get_rules = function(node) + local rules = { + {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}} + if node.param2 == 2 then + rules=mesecon:rotate_rules_left(rules) + elseif node.param2 == 3 then + rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) + elseif node.param2 == 0 then + rules=mesecon:rotate_rules_right(rules) + end + return rules +end + minetest.register_node("mesecons_walllever:wall_lever_off", { drawtype = "nodebox", tiles = { @@ -27,8 +45,16 @@ 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 = 3, mesecon_needs_receiver = 1}, + groups = {dig_immediate=2, mesecon_needs_receiver = 1}, description="Lever", + on_punch = function (pos, node) + mesecon:swap_node(pos, "mesecons_walllever:wall_lever_on") + mesecon:receptor_on(pos, walllever_get_rules(node)) + end, + mesecon = {receptor = { + rules = walllever_get_rules, + state = mesecon.state.off + }} }) minetest.register_node("mesecons_walllever:wall_lever_on", { drawtype = "nodebox", @@ -61,19 +87,16 @@ minetest.register_node("mesecons_walllever:wall_lever_on", { groups = {dig_immediate=2,not_in_creative_inventory=1, mesecon = 3, mesecon_needs_receiver = 1}, drop = '"mesecons_walllever:wall_lever_off" 1', description="Lever", + on_punch = function (pos, node) + mesecon:swap_node(pos, "mesecons_walllever:wall_lever_off") + mesecon:receptor_off(pos, walllever_get_rules(node)) + end, + mesecon = {receptor = { + rules = walllever_get_rules, + state = mesecon.state.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.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.walllever_get_rules(node.param2)) - end -end) - minetest.register_craft({ output = '"mesecons_walllever:wall_lever_off" 2', recipe = { @@ -82,29 +105,3 @@ minetest.register_craft({ {'"default:stick"'}, } }) - -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 From 961b955f2d0872c4e84d9df63ea10a18643dfcbe Mon Sep 17 00:00:00 2001 From: Jeija Date: Sun, 9 Dec 2012 13:28:32 +0100 Subject: Port door, fix button/lever bug, new visual style for receiver --- mesecons_walllever/init.lua | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) (limited to 'mesecons_walllever') diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua index da427be..6fc0770 100644 --- a/mesecons_walllever/init.lua +++ b/mesecons_walllever/init.lua @@ -1,22 +1,6 @@ -- WALL LEVER -local walllever_get_rules = function(node) - local rules = { - {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}} - if node.param2 == 2 then - rules=mesecon:rotate_rules_left(rules) - elseif node.param2 == 3 then - rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) - elseif node.param2 == 0 then - rules=mesecon:rotate_rules_right(rules) - end - return rules -end - +-- Basically a switch that can be attached to a wall +-- Powers the block 2 nodes behind (using a receiver) minetest.register_node("mesecons_walllever:wall_lever_off", { drawtype = "nodebox", tiles = { @@ -49,10 +33,10 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { description="Lever", on_punch = function (pos, node) mesecon:swap_node(pos, "mesecons_walllever:wall_lever_on") - mesecon:receptor_on(pos, walllever_get_rules(node)) + mesecon:receptor_on(pos, mesecon.rules.buttonlike_get(node)) end, - mesecon = {receptor = { - rules = walllever_get_rules, + mesecons = {receptor = { + rules = mesecon.rules.buttonlike_get, state = mesecon.state.off }} }) @@ -84,15 +68,15 @@ 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 = 3, mesecon_needs_receiver = 1}, + groups = {dig_immediate = 2, not_in_creative_inventory = 1, mesecon_needs_receiver = 1}, drop = '"mesecons_walllever:wall_lever_off" 1', description="Lever", on_punch = function (pos, node) mesecon:swap_node(pos, "mesecons_walllever:wall_lever_off") - mesecon:receptor_off(pos, walllever_get_rules(node)) + mesecon:receptor_off(pos, mesecon.rules.buttonlike_get(node)) end, - mesecon = {receptor = { - rules = walllever_get_rules, + mesecons = {receptor = { + rules = mesecon.rules.buttonlike_get, state = mesecon.state.on }} }) -- cgit v1.2.3