From 6b9fdf98f2b1b71459b22f29879eb31ca4488df7 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 8 Dec 2018 16:14:23 +0100 Subject: [PATCH 1/3] Improve selection boxes --- nodes.lua | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/nodes.lua b/nodes.lua index 08793c1..3f4b770 100644 --- a/nodes.lua +++ b/nodes.lua @@ -44,6 +44,7 @@ local common_node_def = { end end, digiline = { + wire = { use_autoconnect = false }, receptor = {}, effector = { action = function(pos, _, channel, msg) @@ -71,6 +72,25 @@ function digiterms.register_monitor(nodename, nodedef) minetest.register_node(nodename, def) end +local cathodic_node_box = { + type = "fixed", + fixed = { + {-8/16, 8/16, -8/16, 8/16, 7/16, -7/16}, + {-8/16, -8/16, -8/16, 8/16, -5/16, -7/16}, + {-8/16, 7/16, -8/16, -7/16, -5/16, -7/16}, + {7/16, 7/16, -8/16, 8/16, -5/16, -7/16}, + {-8/16, -8/16, -7/16, 8/16, 8/16, 1/16}, + {-6/16, 5/16, 1/16, 6/16, -8/16, 8/16} + } +} +local cathodic_collision_box = { + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, 8/16, 1/16}, + {-6/16, 5/16, 1/16, 6/16, -8/16, 8/16} + } +} + digiterms.register_monitor('digiterms:cathodic_amber_monitor', { description = "Cathodic amber monitor", sunlight_propagates = false, @@ -81,17 +101,9 @@ digiterms.register_monitor('digiterms:cathodic_amber_monitor', { "digiterms_amber_back.png", "digiterms_amber_front.png",}, drawtype = "nodebox", groups = {choppy = 1, oddly_breakable_by_hand = 1}, - node_box = { - type = "fixed", - fixed = { - {-8/16, 8/16, -8/16, 8/16, 7/16, -7/16}, - {-8/16, -8/16, -8/16, 8/16, -5/16, -7/16}, - {-8/16, 7/16, -8/16, -7/16, -5/16, -7/16}, - {7/16, 7/16, -8/16, 8/16, -5/16, -7/16}, - {-8/16, -8/16, -7/16, 8/16, 8/16, 1/16}, - {-6/16, 5/16, 1/16, 6/16, -8/16, 8/16} - }, - }, + node_box = cathodic_node_box, + collision_box = cathodic_collision_box, + selection_box = cathodic_collision_box, display_entities = { ["digiterms:screen"] = { on_display_update = font_api.on_display_update, @@ -114,17 +126,9 @@ digiterms.register_monitor('digiterms:cathodic_green_monitor', { "digiterms_green_back.png", "digiterms_green_front.png",}, drawtype = "nodebox", groups = {choppy = 1, oddly_breakable_by_hand = 1}, - node_box = { - type = "fixed", - fixed = { - {-8/16, 8/16, -8/16, 8/16, 7/16, -7/16}, - {-8/16, -8/16, -8/16, 8/16, -5/16, -7/16}, - {-8/16, 7/16, -8/16, -7/16, -5/16, -7/16}, - {7/16, 7/16, -8/16, 8/16, -5/16, -7/16}, - {-8/16, -8/16, -7/16, 8/16, 8/16, 1/16}, - {-6/16, 5/16, 1/16, 6/16, -8/16, 8/16} - }, - }, + node_box = cathodic_node_box, + collision_box = cathodic_collision_box, + selection_box = cathodic_collision_box, display_entities = { ["digiterms:screen"] = { on_display_update = font_api.on_display_update, From 31cc460c6d809ec1439c3f220c85f5201fee6411 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 8 Dec 2018 16:45:27 +0100 Subject: [PATCH 2/3] Monitors can be switched on/off --- nodes.lua | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/nodes.lua b/nodes.lua index 3f4b770..f40ff23 100644 --- a/nodes.lua +++ b/nodes.lua @@ -93,9 +93,9 @@ local cathodic_collision_box = { digiterms.register_monitor('digiterms:cathodic_amber_monitor', { description = "Cathodic amber monitor", - sunlight_propagates = false, paramtype = "light", paramtype2 = "facedir", + sunlight_propagates = false, tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png", "digiterms_amber_sides.png", "digiterms_amber_sides.png^[transformFX]", "digiterms_amber_back.png", "digiterms_amber_front.png",}, @@ -114,13 +114,44 @@ digiterms.register_monitor('digiterms:cathodic_amber_monitor', { color = "#FFA000", font_name = digiterms.font, halign="left", valing="top", }, }, + on_punch = function(pos, node) + display_api.on_destruct(pos) + local meta = minetest.get_meta(pos) + meta:set_string("display_text", nil) + minetest.swap_node(pos, {name = 'digiterms:cathodic_amber_monitor_off', + param = node.param, param2 = node.param2 }) + end + +}) + +minetest.register_node('digiterms:cathodic_amber_monitor_off', { + paramtype = "light", + paramtype2 = "facedir", + description = "Cathodic amber monitor", + drops = "digiterms:cathodic_amber_monitor", + sunlight_propagates = false, + tiles = { "digiterms_amber_top.png", "digiterms_amber_bottom.png", + "digiterms_amber_sides.png", "digiterms_amber_sides.png^[transformFX]", + "digiterms_amber_back.png", "digiterms_amber_front_off.png",}, + drawtype = "nodebox", + groups = {choppy = 1, oddly_breakable_by_hand = 1}, + node_box = cathodic_node_box, + collision_box = cathodic_collision_box, + selection_box = cathodic_collision_box, + on_place = minetest.rotate_node, + on_receive_fields = common_node_def.on_receive_fields, + on_punch = function(pos, node) + minetest.swap_node(pos, {name = 'digiterms:cathodic_amber_monitor', + param = node.param, param2 = node.param2 }) + display_api.update_entities(pos) + end, }) digiterms.register_monitor('digiterms:cathodic_green_monitor', { - description = "Cathodic green monitor", - sunlight_propagates = false, paramtype = "light", paramtype2 = "facedir", + description = "Cathodic green monitor", + sunlight_propagates = false, tiles = { "digiterms_green_top.png", "digiterms_green_bottom.png", "digiterms_green_sides.png", "digiterms_green_sides.png^[transformFX]", "digiterms_green_back.png", "digiterms_green_front.png",}, @@ -139,4 +170,34 @@ digiterms.register_monitor('digiterms:cathodic_green_monitor', { color = "#00FF00", font_name = digiterms.font, halign="left", valing="top", }, }, + on_punch = function(pos, node) + display_api.on_destruct(pos) + local meta = minetest.get_meta(pos) + meta:set_string("display_text", nil) + minetest.swap_node(pos, {name = 'digiterms:cathodic_green_monitor_off', + param = node.param, param2 = node.param2 }) + end +}) + +minetest.register_node('digiterms:cathodic_green_monitor_off', { + paramtype = "light", + paramtype2 = "facedir", + description = "Cathodic green monitor", + drops = "digiterms:cathodic_green_monitor", + sunlight_propagates = false, + tiles = { "digiterms_green_top.png", "digiterms_green_bottom.png", + "digiterms_green_sides.png", "digiterms_green_sides.png^[transformFX]", + "digiterms_green_back.png", "digiterms_green_front_off.png",}, + drawtype = "nodebox", + groups = {choppy = 1, oddly_breakable_by_hand = 1}, + node_box = cathodic_node_box, + collision_box = cathodic_collision_box, + selection_box = cathodic_collision_box, + on_place = minetest.rotate_node, + on_receive_fields = common_node_def.on_receive_fields, + on_punch = function(pos, node) + minetest.swap_node(pos, {name = 'digiterms:cathodic_green_monitor', + param = node.param, param2 = node.param2 }) + display_api.update_entities(pos) + end, }) From e0f10c749eee41402737aab5b5f0637b7c89ea42 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 8 Dec 2018 16:54:39 +0100 Subject: [PATCH 3/3] Fixed monitors rotation on placing --- nodes.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/nodes.lua b/nodes.lua index f40ff23..c80887d 100644 --- a/nodes.lua +++ b/nodes.lua @@ -20,10 +20,7 @@ local common_node_def = { groups = { display_api = 1}, - on_place = function(itemstack, placer, pointed_thing) - minetest.rotate_node(itemstack, placer, pointed_thing) - return display_api.on_place(itemstack, placer, pointed_thing) - end, + on_place = display_api.on_place, on_destruct = display_api.on_destruct, on_rotate = display_api.on_rotate, on_punch = display_api.update_entities, @@ -138,7 +135,7 @@ minetest.register_node('digiterms:cathodic_amber_monitor_off', { node_box = cathodic_node_box, collision_box = cathodic_collision_box, selection_box = cathodic_collision_box, - on_place = minetest.rotate_node, + on_place = display_api.on_place, on_receive_fields = common_node_def.on_receive_fields, on_punch = function(pos, node) minetest.swap_node(pos, {name = 'digiterms:cathodic_amber_monitor', @@ -193,7 +190,7 @@ minetest.register_node('digiterms:cathodic_green_monitor_off', { node_box = cathodic_node_box, collision_box = cathodic_collision_box, selection_box = cathodic_collision_box, - on_place = minetest.rotate_node, + on_place = display_api.on_place, on_receive_fields = common_node_def.on_receive_fields, on_punch = function(pos, node) minetest.swap_node(pos, {name = 'digiterms:cathodic_green_monitor',