From 472650f099deda6a3f1ab0900c7319a78b352d68 Mon Sep 17 00:00:00 2001 From: Jeija Date: Sat, 8 Dec 2012 17:50:25 +0100 Subject: Finish new mesecon-in-nodedef for conductors and receptors. Make wires and switch use it for reference. --- mesecons_button/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mesecons_button') diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua index dd8819d..25251c6 100644 --- a/mesecons_button/init.lua +++ b/mesecons_button/init.lua @@ -28,6 +28,7 @@ minetest.register_node("mesecons_button:button_off", { groups = {dig_immediate=2, mesecon = 3, mesecon_needs_receiver = 1}, description = "Button", }) + minetest.register_node("mesecons_button:button_on", { drawtype = "nodebox", tiles = { @@ -108,4 +109,3 @@ mesecon:add_rules("button", { mesecon:add_receptor_node_off("mesecons_button:button_off", nil, mesecon.button_get_rules) mesecon:add_receptor_node("mesecons_button:button_on", nil, mesecon.button_get_rules) - -- cgit v1.2.3 From 00e071b695574928fce2ca56e3e8eca6ad3d35ef Mon Sep 17 00:00:00 2001 From: Jeija Date: Sat, 8 Dec 2012 21:56:09 +0100 Subject: Cleanup, make and use util.lua, port command block and delayer to nodedef --- mesecons_button/init.lua | 99 +++++++++++++++++++++++------------------------- 1 file changed, 47 insertions(+), 52 deletions(-) (limited to 'mesecons_button') diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua index 25251c6..f5c0eb9 100644 --- a/mesecons_button/init.lua +++ b/mesecons_button/init.lua @@ -1,7 +1,10 @@ -- WALL BUTTON +-- A button that when pressed emits power for 1 second +-- and then turns off again + minetest.register_node("mesecons_button:button_off", { - drawtype = "nodebox", - tiles = { + drawtype = "nodebox", + tiles = { "jeija_wall_button_sides.png", "jeija_wall_button_sides.png", "jeija_wall_button_sides.png", @@ -9,24 +12,34 @@ minetest.register_node("mesecons_button:button_off", { "jeija_wall_button_sides.png", "jeija_wall_button_off.png" }, - paramtype = "light", - paramtype2 = "facedir", - legacy_wallmounted = true, - walkable = false, - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } - }, - node_box = { - type = "fixed", - fixed = { + paramtype = "light", + paramtype2 = "facedir", + legacy_wallmounted = true, + walkable = false, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } + }, + node_box = { + type = "fixed", + fixed = { { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself } - }, - groups = {dig_immediate=2, mesecon = 3, mesecon_needs_receiver = 1}, - description = "Button", + }, + groups = {dig_immediate=2, mesecon_needs_receiver = 1}, + description = "Button", + on_punch = function (pos, node) + mesecon:swap_node(pos, "mesecons_button:button_on") + local rules=mesecon.button_get_rules(node.param2) + mesecon:receptor_on(pos, rules) + minetest.after(1, mesecon.button_turnoff, {pos=pos, param2=node.param2}) + end, + mesecons = {receptor = { + state = mesecon.state.off, + rules = button_get_rules + }} }) minetest.register_node("mesecons_button:button_on", { @@ -45,48 +58,41 @@ minetest.register_node("mesecons_button:button_on", { walkable = false, light_source = LIGHT_MAX-7, sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } - }, - node_box = { - type = "fixed", + selection_box = { + type = "fixed", + fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } + }, + node_box = { + type = "fixed", fixed = { { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 } } }, - 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_button:button_off', description = "Button", + mesecons = {receptor = { + state = mesecon.state.on, + rules = button_get_rules + }} }) -minetest.register_on_punchnode(function(pos, node, puncher) - if node.name == "mesecons_button:button_off" then - minetest.env:add_node(pos, {name="mesecons_button:button_on",param2=node.param2}) - local rules=mesecon.button_get_rules(node.param2) - mesecon:receptor_on(pos, rules) - minetest.after(1, mesecon.button_turnoff, {pos=pos, param2=node.param2}) - end -end) - mesecon.button_turnoff = function (params) if minetest.env:get_node(params.pos).name=="mesecons_button:button_on" then - minetest.env:add_node(params.pos, {name="mesecons_button:button_off", param2=params.param2}) + mesecon:swap_node(params.pos, "mesecons_button:button_off") local rules=mesecon.button_get_rules(params.param2) mesecon:receptor_off(params.pos, rules) end end -mesecon.button_get_rules = function(param2) - local rules=mesecon:get_rules("button") - if param2 == 2 then +mesecon.button_get_rules = function(node) + local rules = mesecon.rules.buttonlike + if node.param2 == 2 then rules=mesecon:rotate_rules_left(rules) - end - if param2 == 3 then + elseif node.param2 == 3 then rules=mesecon:rotate_rules_right(mesecon:rotate_rules_right(rules)) - end - if param2 == 0 then + elseif node.param2 == 0 then rules=mesecon:rotate_rules_right(rules) end return rules @@ -98,14 +104,3 @@ minetest.register_craft({ {'"group:mesecon_conductor_craftable"','"default:stone"'}, } }) - -mesecon:add_rules("button", { -{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:add_receptor_node_off("mesecons_button:button_off", nil, mesecon.button_get_rules) -mesecon:add_receptor_node("mesecons_button:button_on", nil, mesecon.button_get_rules) -- cgit v1.2.3 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_button/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mesecons_button') diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua index f5c0eb9..d4e6802 100644 --- a/mesecons_button/init.lua +++ b/mesecons_button/init.lua @@ -32,7 +32,7 @@ minetest.register_node("mesecons_button:button_off", { description = "Button", on_punch = function (pos, node) mesecon:swap_node(pos, "mesecons_button:button_on") - local rules=mesecon.button_get_rules(node.param2) + local rules=mesecon.button_get_rules(node) mesecon:receptor_on(pos, rules) minetest.after(1, mesecon.button_turnoff, {pos=pos, param2=node.param2}) end, @@ -81,7 +81,7 @@ minetest.register_node("mesecons_button:button_on", { mesecon.button_turnoff = function (params) if minetest.env:get_node(params.pos).name=="mesecons_button:button_on" then mesecon:swap_node(params.pos, "mesecons_button:button_off") - local rules=mesecon.button_get_rules(params.param2) + local rules=mesecon.button_get_rules(params) mesecon:receptor_off(params.pos, rules) end end -- 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_button/init.lua | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) (limited to 'mesecons_button') diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua index d4e6802..282e305 100644 --- a/mesecons_button/init.lua +++ b/mesecons_button/init.lua @@ -2,6 +2,15 @@ -- A button that when pressed emits power for 1 second -- and then turns off again +mesecon.button_turnoff = function (pos) + local node = minetest.env:get_node(pos) + if node.name=="mesecons_button:button_on" then --has not been dug + mesecon:swap_node(pos, "mesecons_button:button_off") + local rules = mesecon.rules.buttonlike_get(node) + mesecon:receptor_off(pos, rules) + end +end + minetest.register_node("mesecons_button:button_off", { drawtype = "nodebox", tiles = { @@ -32,13 +41,12 @@ minetest.register_node("mesecons_button:button_off", { description = "Button", on_punch = function (pos, node) mesecon:swap_node(pos, "mesecons_button:button_on") - local rules=mesecon.button_get_rules(node) - mesecon:receptor_on(pos, rules) - minetest.after(1, mesecon.button_turnoff, {pos=pos, param2=node.param2}) + mesecon:receptor_on(pos, mesecon.rules.buttonlike_get(node)) + minetest.after(1, mesecon.button_turnoff, pos) end, mesecons = {receptor = { state = mesecon.state.off, - rules = button_get_rules + rules = mesecon.rules.buttonlike_get }} }) @@ -74,30 +82,10 @@ minetest.register_node("mesecons_button:button_on", { description = "Button", mesecons = {receptor = { state = mesecon.state.on, - rules = button_get_rules + rules = mesecon.rules.buttonlike_get }} }) -mesecon.button_turnoff = function (params) - if minetest.env:get_node(params.pos).name=="mesecons_button:button_on" then - mesecon:swap_node(params.pos, "mesecons_button:button_off") - local rules=mesecon.button_get_rules(params) - mesecon:receptor_off(params.pos, rules) - end -end - -mesecon.button_get_rules = function(node) - local rules = mesecon.rules.buttonlike - 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_craft({ output = '"mesecons_button:button_off" 2', recipe = { -- cgit v1.2.3