From 6b42419828b9d37b81a820e79743a992af7a9749 Mon Sep 17 00:00:00 2001 From: lolbinarycat Date: Sun, 17 Dec 2023 14:27:49 -0500 Subject: [PATCH 01/17] Pistons can no longer push beds --- mesecons_gamecompat/compat_mtg.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mesecons_gamecompat/compat_mtg.lua b/mesecons_gamecompat/compat_mtg.lua index 24af5e0..e658880 100644 --- a/mesecons_gamecompat/compat_mtg.lua +++ b/mesecons_gamecompat/compat_mtg.lua @@ -59,6 +59,10 @@ if minetest.get_modpath("mesecons_mvps") then "doors:hidden", "doors:trapdoor_steel", "doors:trapdoor_steel_open", + "beds:bed_bottom", + "beds:bed_top", + "beds:fancy_bed_bottom", + "beds:fancy_bed_top", "xpanes:door_steel_bar_a", "xpanes:door_steel_bar_b", "xpanes:door_steel_bar_c", From 7418d5cb6139b6eb31d403175184a8e04aa3ee06 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Wed, 27 Dec 2023 10:20:04 +0100 Subject: [PATCH 02/17] Reduce redundancy in minetest.registered_nodes lookups --- mesecons/internal.lua | 21 ++++-------- mesecons_extrawires/vertical.lua | 56 +++++++++++++++++--------------- mesecons_mvps/init.lua | 13 ++++---- mesecons_wires/init.lua | 24 +++++++------- 4 files changed, 55 insertions(+), 59 deletions(-) diff --git a/mesecons/internal.lua b/mesecons/internal.lua index a28c430..49690d9 100644 --- a/mesecons/internal.lua +++ b/mesecons/internal.lua @@ -51,27 +51,18 @@ mesecon.fifo_queue = dofile(minetest.get_modpath("mesecons").."/fifo_queue.lua") -- General function mesecon.get_effector(nodename) - if minetest.registered_nodes[nodename] - and minetest.registered_nodes[nodename].mesecons - and minetest.registered_nodes[nodename].mesecons.effector then - return minetest.registered_nodes[nodename].mesecons.effector - end + local def = minetest.registered_nodes[nodename] + return def and def.mesecons and def.mesecons.effector end function mesecon.get_receptor(nodename) - if minetest.registered_nodes[nodename] - and minetest.registered_nodes[nodename].mesecons - and minetest.registered_nodes[nodename].mesecons.receptor then - return minetest.registered_nodes[nodename].mesecons.receptor - end + local def = minetest.registered_nodes[nodename] + return def and def.mesecons and def.mesecons.receptor end function mesecon.get_conductor(nodename) - if minetest.registered_nodes[nodename] - and minetest.registered_nodes[nodename].mesecons - and minetest.registered_nodes[nodename].mesecons.conductor then - return minetest.registered_nodes[nodename].mesecons.conductor - end + local def = minetest.registered_nodes[nodename] + return def and def.mesecons and def.mesecons.conductor end function mesecon.get_any_outputrules(node) diff --git a/mesecons_extrawires/vertical.lua b/mesecons_extrawires/vertical.lua index 9e132ac..636bb37 100644 --- a/mesecons_extrawires/vertical.lua +++ b/mesecons_extrawires/vertical.lua @@ -40,35 +40,39 @@ local bottom_rules = { {x=0, y=2, z=0} -- receive power from pressure plate / detector / ... 2 nodes above } +local function is_vertical_conductor(nodename) + local def = minetest.registered_nodes[nodename] + return def and def.is_vertical_conductor +end + local vertical_updatepos = function (pos) local node = minetest.get_node(pos) - if minetest.registered_nodes[node.name] - and minetest.registered_nodes[node.name].is_vertical_conductor then - local node_above = minetest.get_node(vector.add(pos, vertical_rules[1])) - local node_below = minetest.get_node(vector.add(pos, vertical_rules[2])) - - local above = minetest.registered_nodes[node_above.name] - and minetest.registered_nodes[node_above.name].is_vertical_conductor - local below = minetest.registered_nodes[node_below.name] - and minetest.registered_nodes[node_below.name].is_vertical_conductor - - mesecon.on_dignode(pos, node) - - -- Always place offstate conductor and let mesecon.on_placenode take care - local newname = "mesecons_extrawires:vertical_" - if above and below then -- above and below: vertical mesecon - newname = newname .. "off" - elseif above and not below then -- above only: bottom - newname = newname .. "bottom_off" - elseif not above and below then -- below only: top - newname = newname .. "top_off" - else -- no vertical wire above, no vertical wire below: use bottom - newname = newname .. "bottom_off" - end - - minetest.set_node(pos, {name = newname}) - mesecon.on_placenode(pos, {name = newname}) + if not is_vertical_conductor(node.name) then + return end + + local node_above = minetest.get_node(vector.add(pos, vertical_rules[1])) + local node_below = minetest.get_node(vector.add(pos, vertical_rules[2])) + + local above = is_vertical_conductor(node_above.name) + local below = is_vertical_conductor(node_below.name) + + mesecon.on_dignode(pos, node) + + -- Always place offstate conductor and let mesecon.on_placenode take care + local newname = "mesecons_extrawires:vertical_" + if above and below then -- above and below: vertical mesecon + newname = newname .. "off" + elseif above and not below then -- above only: bottom + newname = newname .. "bottom_off" + elseif not above and below then -- below only: top + newname = newname .. "top_off" + else -- no vertical wire above, no vertical wire below: use bottom + newname = newname .. "bottom_off" + end + + minetest.set_node(pos, {name = newname}) + mesecon.on_placenode(pos, {name = newname}) end local vertical_update = function (pos) diff --git a/mesecons_mvps/init.lua b/mesecons_mvps/init.lua index 5cb9c8f..aacef33 100644 --- a/mesecons_mvps/init.lua +++ b/mesecons_mvps/init.lua @@ -81,9 +81,9 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky) if #nodes > maximum then return nil end -- add connected nodes to frontiers - if minetest.registered_nodes[nn.name] - and minetest.registered_nodes[nn.name].mvps_sticky then - local connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn) + local nndef = minetest.registered_nodes[nn.name] + if nndef and nndef.mvps_sticky then + local connected = nndef.mvps_sticky(np, nn) for _, cp in ipairs(connected) do frontiers:add(cp) end @@ -96,10 +96,9 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky) for _, r in ipairs(mesecon.rules.alldirs) do local adjpos = vector.add(np, r) local adjnode = minetest.get_node(adjpos) - if minetest.registered_nodes[adjnode.name] - and minetest.registered_nodes[adjnode.name].mvps_sticky then - local sticksto = minetest.registered_nodes[adjnode.name] - .mvps_sticky(adjpos, adjnode) + local adjdef = minetest.registered_nodes[adjnode.name] + if adjdef and adjdef.mvps_sticky then + local sticksto = adjdef.mvps_sticky(adjpos, adjnode) -- connects to this position? for _, link in ipairs(sticksto) do diff --git a/mesecons_wires/init.lua b/mesecons_wires/init.lua index d869cde..dc1a8ac 100644 --- a/mesecons_wires/init.lua +++ b/mesecons_wires/init.lua @@ -13,11 +13,11 @@ local S = minetest.get_translator(minetest.get_current_modname()) -- self_pos = pos of any mesecon node, from_pos = pos of conductor to getconnect for local wire_getconnect = function (from_pos, self_pos) local node = minetest.get_node(self_pos) - if minetest.registered_nodes[node.name] - and minetest.registered_nodes[node.name].mesecons then + local def = minetest.registered_nodes[node.name] + if def and def.mesecons then -- rules of node to possibly connect to local rules - if (minetest.registered_nodes[node.name].mesecon_wire) then + if def.mesecon_wire then rules = mesecon.rules.default else rules = mesecon.get_any_rules(node) @@ -68,16 +68,18 @@ end local update_on_place_dig = function (pos, node) -- Update placed node (get_node again as it may have been dug) - local nn = minetest.get_node(pos) - if (minetest.registered_nodes[nn.name]) - and (minetest.registered_nodes[nn.name].mesecon_wire) then - wire_updateconnect(pos) + do + local nn = minetest.get_node(pos) + local def = minetest.registered_nodes[nn.name] + if def and def.mesecon_wire then + wire_updateconnect(pos) + end end -- Update nodes around it local rules - if minetest.registered_nodes[node.name] - and minetest.registered_nodes[node.name].mesecon_wire then + local ndef = minetest.registered_nodes[node.name] + if ndef and ndef.mesecon_wire then rules = mesecon.rules.default else rules = mesecon.get_any_rules(node) @@ -86,8 +88,8 @@ local update_on_place_dig = function (pos, node) for _, r in ipairs(mesecon.flattenrules(rules)) do local np = vector.add(pos, r) - if minetest.registered_nodes[minetest.get_node(np).name] - and minetest.registered_nodes[minetest.get_node(np).name].mesecon_wire then + local rdef = minetest.registered_nodes[minetest.get_node(np).name] + if rdef and rdef.mesecon_wire then wire_updateconnect(np) end end From 50a4bd6170579eba0faa1a1d6125cab872ce2084 Mon Sep 17 00:00:00 2001 From: lolbinarycat Date: Sat, 13 Jan 2024 05:05:49 -0500 Subject: [PATCH 03/17] node_detector now accepts a comma-seperated list of nodes like object_detector --- mesecons_detector/init.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua index d5e3c4f..ad8705e 100644 --- a/mesecons_detector/init.lua +++ b/mesecons_detector/init.lua @@ -4,6 +4,16 @@ local side_texture = mesecon.texture.steel_block or "mesecons_detector_side.png" local GET_COMMAND = "GET" + +local function comma_list_to_table(comma_list) + local tbl = {} + for _, str in ipairs(string.split(comma_list:gsub("%s", ""), ",")) do + tbl[str] = true + end + return tbl +end + + -- Object detector -- Detects players in a certain radius -- The radius can be specified in mesecons/settings.lua @@ -35,10 +45,7 @@ local function object_detector_scan(pos) if next(objs) == nil then return false end local scanname = minetest.get_meta(pos):get_string("scanname") - local scan_for = {} - for _, str in pairs(string.split(scanname:gsub(" ", ""), ",")) do - scan_for[str] = true - end + local scan_for = comma_list_to_table(scanname) local every_player = scanname == "" for _, obj in pairs(objs) do @@ -188,8 +195,9 @@ local function node_detector_scan(pos) vector.subtract(pos, vector.multiply(minetest.facedir_to_dir(node.param2), distance + 1)) ).name local scanname = meta:get_string("scanname") + local scan_for = comma_list_to_table(scanname) - return (frontname == scanname) or + return (scan_for[frontname]) or (frontname ~= "air" and frontname ~= "ignore" and scanname == "") end From 59780437f2f47954b84122a4f1286e0c5b3bd168 Mon Sep 17 00:00:00 2001 From: lolbinarycat Date: Mon, 22 Jan 2024 12:29:02 -0500 Subject: [PATCH 04/17] Fix 1-tick pulses causing delayers to get stuck in the on state (#663) --- mesecons_delayer/init.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mesecons_delayer/init.lua b/mesecons_delayer/init.lua index 2c4b0f4..c4f4b87 100644 --- a/mesecons_delayer/init.lua +++ b/mesecons_delayer/init.lua @@ -62,6 +62,8 @@ local def = { sounds = mesecon.node_sound.stone, on_blast = mesecon.on_blastnode, drop = "mesecons_delayer:delayer_off_1", + delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i), + delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i), } -- Deactivated delayer definition defaults @@ -93,7 +95,6 @@ local off_state = { param2 = node.param2 }) end, - delayer_onstate = "mesecons_delayer:delayer_on_"..tostring(i), mesecons = { receptor = { @@ -103,6 +104,7 @@ local off_state = { effector = { rules = delayer_get_input_rules, + action_off = delayer_deactivate, action_on = delayer_activate } }, @@ -134,7 +136,6 @@ local on_state = { param2 = node.param2 }) end, - delayer_offstate = "mesecons_delayer:delayer_off_"..tostring(i), mesecons = { receptor = { @@ -144,7 +145,8 @@ local on_state = { effector = { rules = delayer_get_input_rules, - action_off = delayer_deactivate + action_off = delayer_deactivate, + action_on = delayer_activate } }, } From cffbc33e6dfcf01f62d890b7e71b4fb46cfc8063 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 15 Mar 2024 05:54:19 +1100 Subject: [PATCH 05/17] Remove NaN values (#667) NaN can cause problems (and errors) if the receiving node doesn't check for it, this PR makes it so NaN values are removed from digiline messages. --- mesecons_luacontroller/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua index 0ee2def..90516c0 100644 --- a/mesecons_luacontroller/init.lua +++ b/mesecons_luacontroller/init.lua @@ -388,7 +388,10 @@ local function clean_and_weigh_digiline_message(msg, back_references) return msg, #msg + 25 elseif t == "number" then -- Numbers are passed by value so need not be touched, and cost 8 bytes - -- as all numbers in Lua are doubles. + -- as all numbers in Lua are doubles. NaN values are removed. + if msg ~= msg then + return nil, 0 + end return msg, 8 elseif t == "boolean" then -- Booleans are passed by value so need not be touched, and cost 1 From a82bac7b5bb335e9b595ed3e004adbc18b7b7971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikita=20Wi=C5=9Bniewski?= Date: Tue, 21 May 2024 01:21:52 +0700 Subject: [PATCH 06/17] [mesecons_doors] Improve code quality and fix Voxelgarden support (#671) now trapdoors are also overridden using their own function, and both `meseconify_door` and `meseconify_trapdoor` are now ran inside loops In the future, this could help refactor this mod entirely to not list doors manually but parse through the `doors.registered_*` variables, ensuring that every door works. As a nice bonus, Voxelgarden support is fixed, and potentially so is support for other games with exotic implementations of the doors mod. No longer are we assuming that the existence of doors.get means that all the trapdoors exist too; now, if the meseconify function doesn't find their definition, it just returns without crashing. --- mesecons_doors/init.lua | 113 ++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 57 deletions(-) diff --git a/mesecons_doors/init.lua b/mesecons_doors/init.lua index 3228f03..18f5d3a 100644 --- a/mesecons_doors/init.lua +++ b/mesecons_doors/init.lua @@ -73,68 +73,67 @@ local function meseconify_door(name) end end -meseconify_door("doors:door_wood") -meseconify_door("doors:door_steel") -meseconify_door("doors:door_glass") -meseconify_door("doors:door_obsidian_glass") -meseconify_door("xpanes:door_steel_bar") +local doors_list = { + "doors:door_wood", + "doors:door_steel", + "doors:door_glass", + "doors:door_obsidian_glass", + "xpanes:door_steel_bar", +} +for i=1,#doors_list do meseconify_door(doors_list[i]) end -- Trapdoor -local function trapdoor_switch(pos, node) - local state = minetest.get_meta(pos):get_int("state") +local function trapdoor_switch(name) + return function(pos, node) + local state = minetest.get_meta(pos):get_int("state") + if state == 1 then + minetest.sound_play("doors_door_close", { pos = pos, gain = 0.3, max_hear_distance = 10 }, true) + minetest.set_node(pos, {name=name, param2 = node.param2}) + else + minetest.sound_play("doors_door_open", { pos = pos, gain = 0.3, max_hear_distance = 10 }, true) + minetest.set_node(pos, {name=name.."_open", param2 = node.param2}) + end + minetest.get_meta(pos):set_int("state", state == 1 and 0 or 1) + end +end - if state == 1 then - minetest.sound_play("doors_door_close", { pos = pos, gain = 0.3, max_hear_distance = 10 }, true) - minetest.set_node(pos, {name="doors:trapdoor", param2 = node.param2}) +local function meseconify_trapdoor(name) + local override + if doors and doors.get then + override = { + mesecons = {effector = { + action_on = function(pos) + local door = doors.get(pos) + if door then + door:open() + end + end, + action_off = function(pos) + local door = doors.get(pos) + if door then + door:close() + end + end, + }}, + } else - minetest.sound_play("doors_door_open", { pos = pos, gain = 0.3, max_hear_distance = 10 }, true) - minetest.set_node(pos, {name="doors:trapdoor_open", param2 = node.param2}) + override = { + mesecons = {effector = { + action_on = trapdoor_switch(name), + action_off = trapdoor_switch(name) + }}, + } end - minetest.get_meta(pos):set_int("state", state == 1 and 0 or 1) + if minetest.registered_items[name] then + minetest.override_item(name, override) + minetest.override_item(name.."_open", override) + end end -if doors and doors.get then - local override = { - mesecons = {effector = { - action_on = function(pos) - local door = doors.get(pos) - if door then - door:open() - end - end, - action_off = function(pos) - local door = doors.get(pos) - if door then - door:close() - end - end, - }}, - } - minetest.override_item("doors:trapdoor", override) - minetest.override_item("doors:trapdoor_open", override) - minetest.override_item("doors:trapdoor_steel", override) - minetest.override_item("doors:trapdoor_steel_open", override) - - if minetest.registered_items["xpanes:trapdoor_steel_bar"] then - minetest.override_item("xpanes:trapdoor_steel_bar", override) - minetest.override_item("xpanes:trapdoor_steel_bar_open", override) - end - -else - if minetest.registered_nodes["doors:trapdoor"] then - minetest.override_item("doors:trapdoor", { - mesecons = {effector = { - action_on = trapdoor_switch, - action_off = trapdoor_switch - }}, - }) - - minetest.override_item("doors:trapdoor_open", { - mesecons = {effector = { - action_on = trapdoor_switch, - action_off = trapdoor_switch - }}, - }) - end -end +local trapdoors_list = { + "doors:trapdoor", + "doors:trapdoor_steel", + "xpanes:trapdoor_steel_bar" +} +for i=1,#trapdoors_list do meseconify_trapdoor(trapdoors_list[i]) end From 0a4651c33c11760d3f0d63354fae193091e0ecea Mon Sep 17 00:00:00 2001 From: mruncreative <67873653+mruncreative@users.noreply.github.com> Date: Sat, 8 Jun 2024 13:43:47 +0200 Subject: [PATCH 07/17] Changes to torch and delayer appearance (#669) * plantlike, x-shaped torch * removed separate LEDs for luacontroller since already contained in base mod it depends on * changed delayer textures to be more consistent with other gates * Reduced the amount of textures needed for pistons with texture modifiers. Will continue to work fine with all existing texturepacks. No change in graphics. * use luacontroller_LED instead of microcontroller_LED to prevent breaking the digistuff mod which inherits it. I hope no mods inherit microcontroller LED. --- ...ED_A.png => jeija_luacontroller_LED_A.png} | Bin ...ED_B.png => jeija_luacontroller_LED_B.png} | Bin ...ED_C.png => jeija_luacontroller_LED_C.png} | Bin ...ED_D.png => jeija_luacontroller_LED_D.png} | Bin mesecons_delayer/init.lua | 53 ++++++++---------- mesecons_delayer/textures/jeija_delayer.png | Bin 0 -> 149 bytes .../textures/jeija_gate_off.png | Bin .../textures/jeija_gate_on.png | Bin .../textures/jeija_gate_side.png | Bin .../textures/mesecons_delayer_1.png | Bin 0 -> 338 bytes .../textures/mesecons_delayer_2.png | Bin 0 -> 337 bytes .../textures/mesecons_delayer_3.png | Bin 0 -> 339 bytes .../textures/mesecons_delayer_4.png | Bin 0 -> 334 bytes .../textures/mesecons_delayer_bottom.png | Bin 221 -> 0 bytes .../textures/mesecons_delayer_ends_off.png | Bin 176 -> 0 bytes .../textures/mesecons_delayer_ends_on.png | Bin 187 -> 0 bytes .../textures/mesecons_delayer_off_1.png | Bin 448 -> 0 bytes .../textures/mesecons_delayer_off_2.png | Bin 449 -> 0 bytes .../textures/mesecons_delayer_off_3.png | Bin 448 -> 0 bytes .../textures/mesecons_delayer_off_4.png | Bin 446 -> 0 bytes .../textures/mesecons_delayer_on_1.png | Bin 541 -> 0 bytes .../textures/mesecons_delayer_on_2.png | Bin 541 -> 0 bytes .../textures/mesecons_delayer_on_3.png | Bin 541 -> 0 bytes .../textures/mesecons_delayer_on_4.png | Bin 538 -> 0 bytes .../textures/mesecons_delayer_sides_off.png | Bin 173 -> 0 bytes .../textures/mesecons_delayer_sides_on.png | Bin 181 -> 0 bytes mesecons_fpga/init.lua | 8 +-- .../textures/jeija_luacontroller_LED_A.png | Bin 2196 -> 0 bytes .../textures/jeija_luacontroller_LED_B.png | Bin 2188 -> 0 bytes .../textures/jeija_luacontroller_LED_C.png | Bin 2191 -> 0 bytes .../textures/jeija_luacontroller_LED_D.png | Bin 2200 -> 0 bytes mesecons_microcontroller/init.lua | 8 +-- mesecons_pistons/init.lua | 36 ++++++------ .../textures/mesecons_piston_bottom.png | Bin 738 -> 0 bytes .../textures/mesecons_piston_left.png | Bin 740 -> 0 bytes .../mesecons_piston_pusher_bottom.png | Bin 720 -> 0 bytes .../textures/mesecons_piston_pusher_left.png | Bin 733 -> 0 bytes .../textures/mesecons_piston_pusher_right.png | Bin 751 -> 0 bytes .../textures/mesecons_piston_right.png | Bin 733 -> 0 bytes mesecons_torch/init.lua | 8 +-- .../textures/jeija_torches_off_ceiling.png | Bin 146 -> 0 bytes .../textures/jeija_torches_off_side.png | Bin 142 -> 0 bytes .../textures/jeija_torches_on_ceiling.png | Bin 147 -> 0 bytes .../textures/jeija_torches_on_side.png | Bin 139 -> 0 bytes 44 files changed, 53 insertions(+), 60 deletions(-) rename mesecons/textures/{jeija_microcontroller_LED_A.png => jeija_luacontroller_LED_A.png} (100%) rename mesecons/textures/{jeija_microcontroller_LED_B.png => jeija_luacontroller_LED_B.png} (100%) rename mesecons/textures/{jeija_microcontroller_LED_C.png => jeija_luacontroller_LED_C.png} (100%) rename mesecons/textures/{jeija_microcontroller_LED_D.png => jeija_luacontroller_LED_D.png} (100%) create mode 100644 mesecons_delayer/textures/jeija_delayer.png rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_off.png (100%) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_on.png (100%) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_side.png (100%) create mode 100644 mesecons_delayer/textures/mesecons_delayer_1.png create mode 100644 mesecons_delayer/textures/mesecons_delayer_2.png create mode 100644 mesecons_delayer/textures/mesecons_delayer_3.png create mode 100644 mesecons_delayer/textures/mesecons_delayer_4.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_bottom.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_ends_off.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_ends_on.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_off_1.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_off_2.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_off_3.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_off_4.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_on_1.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_on_2.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_on_3.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_on_4.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_sides_off.png delete mode 100644 mesecons_delayer/textures/mesecons_delayer_sides_on.png delete mode 100644 mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png delete mode 100644 mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png delete mode 100644 mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png delete mode 100644 mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_bottom.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_left.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_pusher_bottom.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_pusher_left.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_pusher_right.png delete mode 100644 mesecons_pistons/textures/mesecons_piston_right.png delete mode 100644 mesecons_torch/textures/jeija_torches_off_ceiling.png delete mode 100644 mesecons_torch/textures/jeija_torches_off_side.png delete mode 100644 mesecons_torch/textures/jeija_torches_on_ceiling.png delete mode 100644 mesecons_torch/textures/jeija_torches_on_side.png diff --git a/mesecons/textures/jeija_microcontroller_LED_A.png b/mesecons/textures/jeija_luacontroller_LED_A.png similarity index 100% rename from mesecons/textures/jeija_microcontroller_LED_A.png rename to mesecons/textures/jeija_luacontroller_LED_A.png diff --git a/mesecons/textures/jeija_microcontroller_LED_B.png b/mesecons/textures/jeija_luacontroller_LED_B.png similarity index 100% rename from mesecons/textures/jeija_microcontroller_LED_B.png rename to mesecons/textures/jeija_luacontroller_LED_B.png diff --git a/mesecons/textures/jeija_microcontroller_LED_C.png b/mesecons/textures/jeija_luacontroller_LED_C.png similarity index 100% rename from mesecons/textures/jeija_microcontroller_LED_C.png rename to mesecons/textures/jeija_luacontroller_LED_C.png diff --git a/mesecons/textures/jeija_microcontroller_LED_D.png b/mesecons/textures/jeija_luacontroller_LED_D.png similarity index 100% rename from mesecons/textures/jeija_microcontroller_LED_D.png rename to mesecons/textures/jeija_luacontroller_LED_D.png diff --git a/mesecons_delayer/init.lua b/mesecons_delayer/init.lua index c4f4b87..ab0063e 100644 --- a/mesecons_delayer/init.lua +++ b/mesecons_delayer/init.lua @@ -27,20 +27,6 @@ local delaytime = { 0.1, 0.3, 0.5, 1.0 } for i = 1, 4 do -local boxes = { - { -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 }, -- the main slab - - { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 }, -- the jeweled "on" indicator - { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 }, - { -4/16, -7/16, -2/16, 4/16, -26/64, 2/16 }, - { -3/16, -7/16, 2/16, 3/16, -26/64, 3/16 }, - { -2/16, -7/16, 3/16, 2/16, -26/64, 4/16 }, - - { -6/16, -7/16, -6/16, -4/16, -27/64, -4/16 }, -- the timer indicator - { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 }, -- the two wire stubs - { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 } -} - -- Delayer definition defaults local def = { drawtype = "nodebox", @@ -48,11 +34,14 @@ local def = { walkable = true, selection_box = { type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }, + fixed = { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, }, node_box = { type = "fixed", - fixed = boxes + fixed = { + { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab + { -6/16, -7/16, -6/16, 6/16, -6/16, 6/16 } + }, }, paramtype = "light", paramtype2 = "facedir", @@ -74,16 +63,17 @@ end local off_state = { description = S("Delayer"), + inventory_image = "jeija_gate_off.png^jeija_delayer.png", + wield_image = "jeija_gate_off.png^jeija_delayer.png", tiles = { - "mesecons_delayer_off_"..tostring(i)..".png", - "mesecons_delayer_bottom.png", - "mesecons_delayer_ends_off.png", - "mesecons_delayer_ends_off.png", - "mesecons_delayer_sides_off.png", - "mesecons_delayer_sides_off.png" + "jeija_microcontroller_bottom.png^jeija_gate_output_off.png^jeija_gate_off.png^".. + "jeija_delayer.png^mesecons_delayer_"..tostring(i)..".png", + "jeija_microcontroller_bottom.png^jeija_gate_output_off.png", + "jeija_gate_side.png^jeija_gate_side_output_off.png", + "jeija_gate_side.png", + "jeija_gate_side.png", + "jeija_gate_side.png", }, - inventory_image = "mesecons_delayer_off_1.png", - wield_image = "mesecons_delayer_off_1.png", groups = off_groups, on_punch = function(pos, node, puncher) if minetest.is_protected(pos, puncher and puncher:get_player_name() or "") then @@ -117,13 +107,16 @@ minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), off_state) -- Activated delayer definition defaults local on_state = { description = S("You hacker you"), + inventory_image = "jeija_gate_on.png^jeija_delayer.png", + wield_image = "jeija_gate_on.png^jeija_delayer.png", tiles = { - "mesecons_delayer_on_"..tostring(i)..".png", - "mesecons_delayer_bottom.png", - "mesecons_delayer_ends_on.png", - "mesecons_delayer_ends_on.png", - "mesecons_delayer_sides_on.png", - "mesecons_delayer_sides_on.png" + "jeija_microcontroller_bottom.png^jeija_gate_output_on.png^jeija_gate_on.png^".. + "jeija_delayer.png^mesecons_delayer_"..tostring(i)..".png", + "jeija_microcontroller_bottom.png^jeija_gate_output_on.png", + "jeija_gate_side.png^jeija_gate_side_output_on.png", + "jeija_gate_side.png", + "jeija_gate_side.png", + "jeija_gate_side.png", }, groups = {bendy = 2, snappy = 1, dig_immediate = 2, not_in_creative_inventory = 1}, on_punch = function(pos, node, puncher) diff --git a/mesecons_delayer/textures/jeija_delayer.png b/mesecons_delayer/textures/jeija_delayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e33fe12f5b39c11b425c295efdb016d1480a643d GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0R?B{{R1P8ZOuZ>5 z`2{mLJiCzwvL>4nJa0`PlBg3pY5Tt@Z9l8qQb!g i49W*$I#{}rEEpJ0rO9(1c^<0^GThVE&t;ucLK6TmdnNt= literal 0 HcmV?d00001 diff --git a/mesecons_gates/textures/jeija_gate_off.png b/mesecons_delayer/textures/jeija_gate_off.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_off.png rename to mesecons_delayer/textures/jeija_gate_off.png diff --git a/mesecons_gates/textures/jeija_gate_on.png b/mesecons_delayer/textures/jeija_gate_on.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_on.png rename to mesecons_delayer/textures/jeija_gate_on.png diff --git a/mesecons_gates/textures/jeija_gate_side.png b/mesecons_delayer/textures/jeija_gate_side.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_side.png rename to mesecons_delayer/textures/jeija_gate_side.png diff --git a/mesecons_delayer/textures/mesecons_delayer_1.png b/mesecons_delayer/textures/mesecons_delayer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..973d6849938b0ba73a6da9a6fdd46ab9b5fa5db2 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfjR2nzS0D`n1|Y)x8iN}HgO?XW zOssZnEJH#9b6Og2b~Zy^US58FeqkX)VPRoWkyLSUaY+e7NeOdFNl7UXlu4GAm6ey5 zS5)vD1Nf)z#J2*E7`D^VZkbH#9Uf zHZn9eHa0aiH8(f6w6wIg3bwWyw6?akwF$JfwRLoKbae@Kb#?XjiuU#KOq!@ac{1DN z$re+mm`|G~GGm6uj2W(T=5Q@u%)MlZ)zYQj8#Y*N-fXscv&Z}QjP6T1Sb<(*ED7=p zW^j0RBMr#mEbxddW?&SuEV%gfKtFDzszEG#T4k}57PE-7IsDPb-tDJcblGRd;C zvhwosiVFUUii*n0%BrfW>gwv68ityhn%Y{1+S=N>I)=JBow_=`y1KghdWQOX-un9b zhK7d5Mux`5#-^sG=H}*>mX_95!PZuT*4EaxHi5RbwvLXDt}el@uCCr*(Y`*ONfY%a zPiC7u*<$Jx^J&vWX3Wr-F~fDv9InNSxtA=lTDsJG!v?F(o6R>3p^r=85p>QL70(Y)*K0-ppd7FV~E7%D1Nf)z#J2*E7`D^VZkbH#9Uf zHZn9eHa0aiH8(f6w6wIg3bwWyw6?akwF$JfwRLoKbae@Kb#?XjiuU#KOq!@ac{1DN z$re+mm`|G~GGm6uj2W(T=5Q@u%)MlZ)zYQj8#Y*N-fXscv&Z}QjP6T1Sb<(*ED7=p zW^j0RBMr#mEbxddW?} zc5Ey|LIQJI8gF(sLtb89etv#oAwywdVNsD(adB};2}4Njywzjniw6(Q$baZre33hdL_4bPP_3=!as6Tl!+vLd> zQ>U0unE1=tQjTqV@l1S<+$)c&OA~*dn>~5|^>2sHZcob#Ics&MGb?@F@jU`%H#tvR zuVA{?I)g9eBC8Fj+nZ1^G4U^1KS~}4Fqa-uR7oy+!l>QD=5;c_EV_Q%$q0!ogG;QO zUo5+s7#Z5+Q_fv8ZGMsQLb$-#d&Z^Cuk&h@RNe@BzT+>Anepe?%53i$*Pro!;lH{t UBb%@9MFPm(p00i_>zopr0MY+h{r~^~ diff --git a/mesecons_delayer/textures/mesecons_delayer_ends_off.png b/mesecons_delayer/textures/mesecons_delayer_ends_off.png deleted file mode 100644 index 9cbeb39497fc7f6491dfc5f9bc27f9bb2601aec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`<(@8%Ar-fhBy3--!ZuA3IbW#|@_-El(X*w0^9y}4gbX0Kf`MU6lI awETyYZpOyxEIvRdFnGH9xvX9vQS-+oq- z_u)6cW$dXv_n7m}n{9VLe*4JdLKENQ?fMU-{e^YHD@$VCr={wgK4id?|KL#g>nXQ) l-aGAk*(Eeo|Gs?Jjp*jUo5{*@p+MI#c)I$ztaD0e0sus7NGJdR diff --git a/mesecons_delayer/textures/mesecons_delayer_off_1.png b/mesecons_delayer/textures/mesecons_delayer_off_1.png deleted file mode 100644 index 20d9efc3d1cd0dff31e9b7185a25247892f626f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf`2e2~S0HVEjlqq9!OM#wCRRH( zmLVa5IW3JhJDVXdFE2kozp#*@u&}VGNUFHFxTJ)kq=dPoq@)xG$|TFm%F4^jD=PRa zDk>@~E32xis;jGOY8Yy2YHDj4YHMrj>KN+kbn5E#>gww1>ly0ndF$)z8yXrK8yOlK z8=IP%nwy(jT3T9L1zTGUT3cJ&+63C#+B!Nqy1E3ry1IIMMf>`ACQa0zJeh6sWQ(a& z%%@EgnK46S#thdvbGQ~S=3cVIYUxt%4I8XBZ#LV!+2j3t#`)|{PCzd)mIV0)GdMiE zkp|?<_jGX#k&x^?$SHQvK!o+e@+&r5MS3~xRxVjlIq&4Z>rakw-RZ8^5X=|S4Cg!= z95IXKxeAlyW`=8RoWJ(SUH3Slwx;Fc({E;*YomW`*iv!r?oPw+$q{S;tJdB)^k>b= z3$K$d&HuFdr{rXNEyfFfw)m#^TJk9IUz@bDZMOODu1Rt_z9OkbYZnGhptR-4`~ymdKI;Vst01WK1=Kufz diff --git a/mesecons_delayer/textures/mesecons_delayer_off_2.png b/mesecons_delayer/textures/mesecons_delayer_off_2.png deleted file mode 100644 index 590d62f19e44ad21d4fe57cd703bef16ad862ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf`2e2~S0HVEjlqq9!OM#wCRRH( zmLVa5IW3JhJDVXdFE2kozp#*@u&}VGNUFHFxTJ)kq=dPoq@)xG$|TFm%F4^jD=PRa zDk>@~E32xis;jGOY8Yy2YHDj4YHMrj>KN+kbn5E#>gww1>ly0ndF$)z8yXrK8yOlK z8=IP%nwy(jT3T9L1zTGUT3cJ&+63C#+B!Nqy1E3ry1IIMMf>`ACQa0zJeh6sWQ(a& z%%@EgnK46S#thdvbGQ~S=3cVIYUxt%4I8XBZ#LV!+2j3t#`)|{PCzd)mIV0)GdMiE zkp|=}@N{tuk&x^?*e-R@K!okW{S|woy4+Z%hg=G(&j0l9{F83=0=|C>UAA~GiBT0f zy1|6=oaYatB)c`d!e1(F*Dai&8^O8w^xNFD-+dnvGC$^66eqtszJO^#O#H^ypOL{E z?;kD^_`Lb&%n9at%oqM_Is2r?lE+#6+N71sf(>@Bnxv=WE0Xs4?Zlvk?AmiL&6@lq pDoZ}h>S@~E32xis;jGOY8Yy2YHDj4YHMrj>KN+kbn5E#>gww1>ly0ndF$)z8yXrK8yOlK z8=IP%nwy(jT3T9L1zTGUT3cJ&+63C#+B!Nqy1E3ry1IIMMf>`ACQa0zJeh6sWQ(a& z%%@EgnK46S#thdvbGQ~S=3cVIYUxt%4I8XBZ#LV!+2j3t#`)|{PCzd)mIV0)GdMiE zkp|?<_jGX#k&x^?$SHQvK!o)|_!XP2BE1}TE0?UOoOkly^(RNT?sV5{2<8iEhI1Yb zj+n*rT!l$;GsCqu&R=`vu6vwNThns!={K{@wb4H|Y^k_*ccg@rJMg@uNO5Qc_^h=_=aiV=#6ij9pGj*bkH zkuQ^z29uLGm6SJ@mK2znD43W@I;Evcu&_F_vo^D{Nbm0fA$a8S00001 zbW%=J06^y0W&i*Hph-kQR2UhJ!G{{bFcb#RztpPLQX?X`q>`fc-sJt?$(KHXbMOx( z;%y@3I-z(5OOxQ7L?~kx!rC%H-}mzt3E6~|FuLA9W`1ak0G1Z7y1Ovuaq5-?=z8uryJW&9_EMMFA|w(VCOw oTIvv%jhL8? zn3{)~nU9&7lA4-=nwpQBn}C~}jGLU0oScrGosXTJl%Af9pP+)EppT@agQTR6rKOCf zr-iGnMz^;ixVR#`yd%TKHO9sz#>Ya($0W$eBgn`k%F9X0%T&wDYs}0f%*|2E&O6P` zOwG z;^bHA>{aUQTKoHt0KudF00006bW%=J00jjF1qGT;y7B-30J2F$K~#9!jEw`{0zm-9 z=RPv fVPs}u!r@f_0!bT_b_xT800000NkvXXu0mjfXzByw diff --git a/mesecons_delayer/textures/mesecons_delayer_on_2.png b/mesecons_delayer/textures/mesecons_delayer_on_2.png deleted file mode 100644 index 7984ef433f8f17eea84f43ecbd0d5c9fcfb88476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^jhL8? zn3{)~nU9&7lA4-=nwpQBn}C~}jGLU0oScrGosXTJl%Af9pP+)EppT@agQTR6rKOCf zr-iGnMz^;ixVR#`yd%TKHO9sz#>Ya($0W$eBgn`k%F9X0%T&wDYs}0f%*|2E&O6P` zOwG z;^bHA>{aUQTKoHt0KudF00006bW%=J00jjF1qGT;y7B-30J2F$K~#9!jEw`{0zm-9 z=RjhL8? zn3{)~nU9&7lA4-=nwpQBn}C~}jGLU0oScrGosXTJl%Af9pP+)EppT@agQTR6rKOCf zr-iGnMz^;ixVR#`yd%TKHO9sz#>Ya($0W$eBgn`k%F9X0%T&wDYs}0f%*|2E&O6P` zOwG z;^bHA>{aUQTKoHt0KudF00006bW%=J00jjF1qGT;y7B-30J2F$K~#9!jEw`{0zm-9 z=RPv fVPs}u!r@f_0qPr(#tsx(00000NkvXXu0mjfac%^X diff --git a/mesecons_delayer/textures/mesecons_delayer_on_4.png b/mesecons_delayer/textures/mesecons_delayer_on_4.png deleted file mode 100644 index 0386112c1101b66a79daeb18a7db40d7f7c400e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmV+#0_FXQP)(^b8~Zbb#-=jc6WDoczAbsczAhvd3t(zdU|?$dwYF- zeSd#{fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlTh=_=ZiHVh!jh2>-mz0N>myMX1jhLE; znVFB7nUb2Cf|{C-o11`}n~a;Bker;3ot=-Jos^!QjGv%_prDVWq=TfSj-{oHrl*Cg ztwy)EA-K3Ayu2gB#WlvpCC0}>$Hyed$Ro(eB+AQ4%F9&C%WKTcB+SiG%+5Q_%}mYC zH_gs$&d*WL&^*u3UC+>7(9vGe(@)dXZqwC4*4IPU*gDwSLfG0v+uU2--fQCHZsO!u z>g-kO>{|Q#kKy(-NdN!<26R$RQvd-00RaJoq#~pM006Q{L_t(|+F~FE0P3CwEQg^e z8r%FB+Zo$!YP)~``zWHrzT`cbhbKt4T zBMh!fvk{p#u8@>G@XlYi9TPHYo|+s*J-@<}GD&W5r+mIs|6f5gOdtJ6{rhF@anu^c zBSPZZg~2B&;P9i;BlDjdkeVU~>^;5Je{VxaNgjgWp#A9V0NX&y9+Iv(mZK`7SnQ!$ cj@dAE39-5w{CHava{vGU07*qoM6N<$f}W=chyVZp diff --git a/mesecons_delayer/textures/mesecons_delayer_sides_off.png b/mesecons_delayer/textures/mesecons_delayer_sides_off.png deleted file mode 100644 index 2c60cbbb409b91ceaef7319c305942289a07682e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`C7v#hAr-fhByi-_m4!~% z?G1h7FJ;Vfo2Oxy^!z9Ll&>=xju$4}HaleCBEa%xd#?AK*SofC|5hvSSkdxU;sbP0l+XkK{J}&d diff --git a/mesecons_delayer/textures/mesecons_delayer_sides_on.png b/mesecons_delayer/textures/mesecons_delayer_sides_on.png deleted file mode 100644 index 4927557a93ab9aa3e85a6377abb07a6b439a360e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`HJ&bxAr-fhByxq&s)5Ec73E9kM-m*K*k_whKFb7Iel;6hyUoHlr`X_FLQmthS#{aEg-#v+mxXyH gT68VC%K3FjkA8m0o}pi>FVdQ&MBb@03=vVlK=n! diff --git a/mesecons_fpga/init.lua b/mesecons_fpga/init.lua index fe86ad4..0af9d1b 100644 --- a/mesecons_fpga/init.lua +++ b/mesecons_fpga/init.lua @@ -20,10 +20,10 @@ plg.register_nodes = function(template) -- build top texture string local texture = "jeija_fpga_top.png" - if a == 1 then texture = texture .. "^jeija_microcontroller_LED_A.png" end - if b == 1 then texture = texture .. "^jeija_microcontroller_LED_B.png" end - if c == 1 then texture = texture .. "^jeija_microcontroller_LED_C.png" end - if d == 1 then texture = texture .. "^jeija_microcontroller_LED_D.png" end + if a == 1 then texture = texture .. "^jeija_luacontroller_LED_A.png" end + if b == 1 then texture = texture .. "^jeija_luacontroller_LED_B.png" end + if c == 1 then texture = texture .. "^jeija_luacontroller_LED_C.png" end + if d == 1 then texture = texture .. "^jeija_luacontroller_LED_D.png" end ndef.tiles[1] = texture ndef.inventory_image = texture diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png deleted file mode 100644 index c6182cc51b0edbe6554df4841dd285e107748ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2196 zcmb_cdrVVT7(Z=M3IhucD82?A4n#ocG~iYQ6{;|$A{re?px^`?mWMcoNFO4PjG`ei z6BiU8Q*pyt(UylmDPX0M&QY?_9mM zQM@tPPVtVw^h+O18JN2H>~QmmbX$W7w(fLW6XoWM3AXN9>4(Ygl~gMA>pfqsUAvY> zqeVqUMMp;`B_(BLW!2Qwh(w~gy1IsjhP!v~HZ?UhH#dvL;+B>ciA2)c+S=CE*52NJ z@7_JBRNB$e(b?JA-2;>=&^G{7gJ5tNs9%8Lm*9mKywm|L1au<+8U-U`V00Xe8NfIU z3`PJ?1EUE{qrij$^sOof)NgJ7GZ`^s^8RwoNvj)JT*8h-F?M15{~~{ry(_`2lc0;dDe6WB-r)9UW5tboj&3H}s0@WJk5Z+R;9=t5Rnbp*+OUBFFTL ziz1VafpxS-8qGLV!T$}akZPqK(vz3jCQ+h51{uHYwN@48Ar&L6$#p`NAv%+NaRSy& z`iP~=A^?6PAOf5#u;2kZfd6ptTkMhGb)z7U?Xx|9_W#+J?%PQ+Ya)fd->>oK|2pW` z^!Z_K(m=Qjd0@nij!OqKE@tQXI_xX7mv{o)T>tOI0ao1^a0pXpDk_@TZIRwr|N<@@&d#n=~df zMmWBp6fkh+Aewo=c`MMtdKL!_@6KjkmBC}I4f(yMs1!(Los5|Hm;T~*osx5?UZo%9 zn<$~YPksMS^--k=fSk5~SqYfMlBXv!MJal;yrkB&QQ6u^ui&CTcMmJ-V3>s#nKtRr zgW3S$P`X8i^}Hx0c?(A}>+OR`ind1?8?c1#!JZ=_?DBR?iegz#z@g&v%um>sU887> z>4g)=$t4G=W0tiVdv7NVVkv};r?EoH#d%3Ln@tNdh#=EGNTn#`T>H_f!)dDQ{^rD2 zmN``^klaWeJ&KKm6R})Zi2Rhe1ys$?|6wv<1?9y-a&2b=axg_pIAaz^_HkMvmAYc+P;}1xlAfdw`o&Q8S1BKzxecNal-18`g{->jH!1_EAnkCAE+)9aGirz-*h@g z-^aa#w0eDV7B#agkZJd`9x1w z5Z7r@NzdgKXms}z(pjv5&6F^aY2!|bmuo2Maky997eANH2cA51KhV;RJbyIrh0%ll zxJnKqFq+O;VqM@EAJ5sbHXWZOMvEzlj_bRDy6;x>u($QwlH|B;J)51gu WxZQF)|0IC}FbStKLT_$n=Klj^Xa5`k diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png deleted file mode 100644 index 04c2da07ce7a35638147c80031008c182d977b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 zcmb_cdrXs86u&KlflDMD$`@@xwg7=q$NtrMgQTBsFTEuW>Y@7u-7!z%l0Cnxujd(Z249zVxK z?{r$|wh#c|6d4f~3jiJ-@xZ|jZn8hT{{jGqkJ+_1eC^t`>m!KkBRn@mcy9dCb7RzM zA4t1a`+Nm?jW6VA$X>owFW(riO_1Qa+iO#-7YPzv_jr>b?e+Ha^V|IO$Nv8Qfq{Xs zv9WP+aY;!@X=!P-wY8ToUlxf(4Gj&Ajg8IC%`Gi0VzF2vkw~S|*4Eaxwls-~1!HCSb>f>6r(pZzRxIRxd4^w{VonwB#7Pd*oc*(URV4#u1@M5fV9x_6sbj2ZJ0;#mdt2S8mA@ zatvL+IBx@B3BZQ{2Y~Yggshp1;FCMOq_T|dAj9Mf@Nd6QeSWzlq%oLtbJD4UPI1x| z=jn7>Ba?;s9g#R{lKbkh(vIPP!vljWr8NNehVto4BJqM;uGXRX-HkMilAS7L^Lsr?V`2GF6WePr8^Js^nZvs)tfeM^`9QF!tdA z_R~ePGFIqdquAKBffT`qG-8zN#dM0ZF1&gGNBb-J39A9;Jo&wVdDNZ#U zXI>WG52is7u|kf!1J|xu48&(CO)@ixN9+AaOOp zmdrf&e2ITn0`8q)+@`_?oJ>C0vR-X88!rlJzagChJ5f-u^pZwXD&!R*QE~EK`<`y* z!x?;)A^fWx zmuG_l!tIgXgwt}lghXZz2QXGCv&sBt4D5!RzQ#jg{2?n>%S;9m{2PX+FH=>9SeOzH zix<*D8$^s)1&{bp(w4bOiReB=m{`g^whNng1F+wlo8OrxjS0r}bO+y7cb^qj_lj!x z_LcI|3U1)m)B*NVr3y7Qb!hk$;&T_M4P4CY6p68O|AED^YrzBQE-!WtJ0Cb>7=w;X zpgfs5Z5VraX;uot_R4#!59tLkfFU_K;f#S*((9&>Ugu$;gWJhjs`PrhcwP^ctbkE5 z#Q571N!om6SZ4=RDEd#{2<$*+i@8Z_?AIcS+%e)cX8hfFOxzm9uz2^_(_xq!=d}Z- zeZ|`}WTh)?Zj%aqnNm{Yeo`=~!2YZXpqu)H)p|{@?4?YIE>p(mE7tUoWZPj)>fRa= zK)M>(=(NcXVkd3f9nmO3xAlnVym5@5quI|V9Y1jQtd^}t9~2_%o+*a79O(!1dY|PX zK6ip)sjC{Hv+d_r?JM}LA(aOKtsAYNx}w6=%Xbq|?^rnN)ZMTa+`lPAd@?P@=B)60 zl8MahiOkcX!dRX1e&Y{yV$__Yw=bJ9&L4@Pb)_6j~mhq7LlrcqAr#uyQ z7qns26P9y3NrgPV;KY0xC4@AKX*G&`+&qJ)j$?WM_X6<>+URFB08(UlbXfI{#2^0! DLhd9v diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png deleted file mode 100644 index 01f6ae48e9b0f279b03dd996ca74d503fe079ee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2191 zcmb_cdrVVT7(Z>9Rvwli7B)m$Q3zBX9Yc&Dttbl9@pLL`Y{7)pYzW9SRFPK0BT^$~ zZqp33>Ne^kERp~fEWM>rsc{H|38XwKwWBI_t(00WZSUP>W{PO}W7(H4=iJBn&hPtv zzjMAbDM{PhoIiF30JtS4Y)JzEk3Hf6k$_F@HLH~X;9OF6?2Hcx2nb5>3re5_Cs1gg zQE1z#YcbnFUHduat3ohO!rVV3**_%3KNK@;O!W^<^AE!e8`D>ZW43cOolgH`*P4ik zi0J6(w6wI0jEwB;?1F-V`uh6D#zwJN+}zyU($XT4NLpK4rBW#bK{A=Ft*uQim$$dK zcXV_p6pGHy&U^Rn_4a|0F`(9fF)h%H1ML$q{uDf!08jN`!T|I}V3-6(%%{Ml8BAG# z83qMr6ri&{G^C!5ogX;$R><7-lHIi%Fm@8ZNlQw{=KseOnOijgEP9r> zWz)_=m40MQ7jwPD6&AruI7%?G3NrK=xzoYg31Mkid-OG5^$CUk zlu9QyiEYkdkvJm2QGgR4xC1;Bync}-tSGMwcY|lPUUI^{=l|^DvsC`$tY0~-TYJAI z_i4hPmkbNJh3-etNiM(WWb^tJH!iDP6u-!ck38n@J{yfeoo!214w$%QMa67J4C&Rk zcd@)T16q6)8cS0xjR{d%bjY~fW|Njv2V4f122vr&mlX|N(A-!bbj5QkxCory3&wU` z7bh)_)E>vdMNEWoYF@eEU+}x`%qrICxG2|?LAD536~lyifiMnHyte^8svEK)7q07N4N7<_XXEK%(3&QXu8+>qcuWR>Sgxj5Z!wZ-w zEw=<~GYg^Xs8Q>Qm75O>yGgZfpH2Z%MaGNdUMW;pX>8zhAFTCkwkIxxu7sa4%FC$+ zk=pIVHNET@CUnfy^j{@@^2-|0c|+6!iC^*xRHVMR;e8yC1WgA}yXKa63wkp?8cnWf zLLDkbd=yh{G2z2hBXZ(gCg)s_yp^~H*nVFz!^}af*@GcRHX?OBqtLQR(}NkikD`I2 zaZ)Tgw(!m?6EOXIiOxTAn;Kf?(JuB7{&&Nk}$!+^W8Kp z>Q`GzqoOQ!#OvNW?*Ou0an+tVC;461^~@?rdZ4&pvJS@%xZHLhCp4P+`ja^m wq<6c6J3svuL$do6gGgs0aG~NzhxIrigrh{62kNKrh8MO`t0B}x9j3okqgqKL*Xai5eYrbLt5O#ZaABfwuX_H@~r(dGimP9ZAWH0|+ zxB%F8;{x`;?i~nw3hX|CsXl>weS%($YvIQgLx{YisM>yLa2#+B!Nq?%%)P)z#JA-Oc0i_Fw|oU{(d@)IhZW)Udw>3ya{j z7A)$4)&TTIU@!wC1k4bC-no2f%YX472d@mv874t6FUhBfDf{91f3iBEGaCSVT~h3h z0~FcZP@9| z-~#D(Pa0?T6zO!-8_B~Si9xbZKUp(5+gJ|G9p#AU%GdIov^#^KuyN;XW=UB#`n3Iz z3WY?mP-^6?iUy7V;RS5zz!e~uKjJ3?PFDROe&%uH>ra1uhzn){N%hsnyqsHOTds-Z zEgobVX(CN*8dM_4dh&cpLkaaz%?*Y>J$+^354+)#!S;XRE-5vu^+v&taMX(8D`M!t zJqGy4c|cSmcLODpJEt_isv3V%!_wHjtkkgN1^uHERa1DNq(<0_76bys=TP8m?q`Qs zgB(U3-iz%b)~>aP7!J!>jo{8d%PV^uKVLfEq`MebT1oDt&9BOQA9k1ucuap%%0K58hA$YnJ9NQ*xMt`LqbG-bJS09zbIF zf7T3SAHHed#m9 z+KeykZo0sl8saeCFm8yFLS6&8!SQ0vPY}p6nti7i>hL-1$a-R-U7?f3HVBT|vmkx} zvyK2A6GNAZP4{fJRkyOA);E?%Dfleu@knO_j_ojpY6kfTixN5f5Rkj5%`8Y;P?Z6B zbM=Usa{4Y&Q!OS&TW}{=gPw*=`Yyo@mXu~yAvqy7xsXapfx_6(F-S$r_}OF&WpbrT z4Z5SuXIg_g6ccp%3lIw3$c!nNgM6#GL>~&f*jUQwD{Qmn7snN792?H7vV)pe|J}zgV03#crxah! zX*zLy)or7LNG?jAuwKF1jieXZ4)>`>wNmVH(M_=)xv?r?Voz=5S@j_bdV#`b zDskGjdj8qQdj6v`R@G-MIY0#e0%SVP8?*k((Kg+6T~qr8DoRn+IgzCcF}mh6r8ViI ztdW`QT!NZwRhx7WUlfglpe(0!9D%J$wRnBtBM97);dq%5q{qq6gi%e&MQg~^it(&w z+B&kK!yK?4i-lRb(>UZ=NVKZJXmBOGVJn+zphb-qNU;``4%dImcNfHu@EXn&Jm2b* zew}(zTt>_1oNtpZY77U3C*jv!W?XftoY#W}h$V79ZM?wyFGw>QW6ox)608DpG&+6v VSVZJ&y(Iv)q_~vW=AAhe{{oQ%0tf&A diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua index d28df2b..3334f68 100644 --- a/mesecons_microcontroller/init.lua +++ b/mesecons_microcontroller/init.lua @@ -12,16 +12,16 @@ for d = 0, 1 do local nodename = "mesecons_microcontroller:microcontroller"..tostring(d)..tostring(c)..tostring(b)..tostring(a) local top = "jeija_microcontroller_top.png" if tostring(a) == "1" then - top = top.."^jeija_microcontroller_LED_A.png" + top = top.."^jeija_luacontroller_LED_A.png" end if tostring(b) == "1" then - top = top.."^jeija_microcontroller_LED_B.png" + top = top.."^jeija_luacontroller_LED_B.png" end if tostring(c) == "1" then - top = top.."^jeija_microcontroller_LED_C.png" + top = top.."^jeija_luacontroller_LED_C.png" end if tostring(d) == "1" then - top = top.."^jeija_microcontroller_LED_D.png" + top = top.."^jeija_luacontroller_LED_D.png" end local groups if tostring(d)..tostring(c)..tostring(b)..tostring(a) ~= "0000" then diff --git a/mesecons_pistons/init.lua b/mesecons_pistons/init.lua index 3d75b35..274258e 100644 --- a/mesecons_pistons/init.lua +++ b/mesecons_pistons/init.lua @@ -270,9 +270,9 @@ minetest.register_node("mesecons_pistons:piston_normal_off", { description = S("Piston"), tiles = { "mesecons_piston_top.png", - "mesecons_piston_bottom.png", - "mesecons_piston_left.png", - "mesecons_piston_right.png", + "mesecons_piston_top.png^[transform2", + "mesecons_piston_top.png^[transform3", + "mesecons_piston_top.png^[transform1", "mesecons_piston_back.png", "mesecons_piston_pusher_front.png" }, @@ -296,9 +296,9 @@ minetest.register_node("mesecons_pistons:piston_normal_on", { drawtype = "nodebox", tiles = { "mesecons_piston_top.png", - "mesecons_piston_bottom.png", - "mesecons_piston_left.png", - "mesecons_piston_right.png", + "mesecons_piston_top.png^[transform2", + "mesecons_piston_top.png^[transform3", + "mesecons_piston_top.png^[transform1", "mesecons_piston_back.png", "mesecons_piston_on_front.png" }, @@ -325,9 +325,9 @@ minetest.register_node("mesecons_pistons:piston_pusher_normal", { drawtype = "nodebox", tiles = { "mesecons_piston_pusher_top.png", - "mesecons_piston_pusher_bottom.png", - "mesecons_piston_pusher_left.png", - "mesecons_piston_pusher_right.png", + "mesecons_piston_pusher_top.png^[transform2", + "mesecons_piston_pusher_top.png^[transform3", + "mesecons_piston_pusher_top.png^[transform1", "mesecons_piston_pusher_back.png", "mesecons_piston_pusher_front.png" }, @@ -349,9 +349,9 @@ minetest.register_node("mesecons_pistons:piston_sticky_off", { description = S("Sticky Piston"), tiles = { "mesecons_piston_top.png", - "mesecons_piston_bottom.png", - "mesecons_piston_left.png", - "mesecons_piston_right.png", + "mesecons_piston_top.png^[transform2", + "mesecons_piston_top.png^[transform3", + "mesecons_piston_top.png^[transform1", "mesecons_piston_back.png", "mesecons_piston_pusher_front_sticky.png" }, @@ -375,9 +375,9 @@ minetest.register_node("mesecons_pistons:piston_sticky_on", { drawtype = "nodebox", tiles = { "mesecons_piston_top.png", - "mesecons_piston_bottom.png", - "mesecons_piston_left.png", - "mesecons_piston_right.png", + "mesecons_piston_top.png^[transform2", + "mesecons_piston_top.png^[transform3", + "mesecons_piston_top.png^[transform1", "mesecons_piston_back.png", "mesecons_piston_on_front.png" }, @@ -404,9 +404,9 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", { drawtype = "nodebox", tiles = { "mesecons_piston_pusher_top.png", - "mesecons_piston_pusher_bottom.png", - "mesecons_piston_pusher_left.png", - "mesecons_piston_pusher_right.png", + "mesecons_piston_pusher_top.png^[transform2", + "mesecons_piston_pusher_top.png^[transform3", + "mesecons_piston_pusher_top.png^[transform1", "mesecons_piston_pusher_back.png", "mesecons_piston_pusher_front_sticky.png" }, diff --git a/mesecons_pistons/textures/mesecons_piston_bottom.png b/mesecons_pistons/textures/mesecons_piston_bottom.png deleted file mode 100644 index d4b2fbf3f6f7dbd9ceb210c20d882fc358192445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 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 P00000NkvXXu0mjf*85iq diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_right.png b/mesecons_pistons/textures/mesecons_piston_pusher_right.png deleted file mode 100644 index af86c0f13c12c6465e5fbe240f721db560c31ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmV0gb z%Wl&^6b4|=#dZ?MO>8%5t_`J4X)7eu6`PhdyZ}o!6-&1CHQ2F2V#yOAAt5A?xGX9m z7W9%{Xp%MwiR0Lg?TPIfn_>Hn^lQ%f4>&kD*x!G2);Wg|w%Z$o5LuRIw(WcV?(Xiz z#W}_z#wZ}9QLlThgPuPweR=m9&$|j6BLBSH-s^sPRodM9@%Hfc*N4f;NBiRQ_TEzn z!M8Uro;-Vr9m~!risc5k!_#)Vh1aK(;TVl4MO{rnB4;uQOU>!jahzOMxg8Af)n%{M zY5)l{Ciru|R;&FaUL40uMKuf-f{P@5CC^Z{EU7L(2 zJKK4vu3{j^5G0I21UUi#y_=z?>A0j)pQKU1NaRS8 z#5x^kI9|ICyWM`mXp$tdEcweF9$}6~p6A1O5hOIi2&IBRNWdQ~b7olJ1Dsni$*p zTrOM$^SO^KE2GGx(J1r+A_O4`vpDAQX_}M`qu1}j-`~GdVn@CedgFy-*6Ot^NC5!4 zrmwf|$S9TJf+H6!MqwC238#)1xgI4H%}Ltt^-eBF)oQhKJ-9LLu{Hl|&Ny;OK*rDw zOet$^G?IunDmt!7MKO-xU@%y%=HqxKqVVqeDiB33Gzzc&TwwrMp`eFhgn*P^DiEX8 zXw{buW3mXaBvxuwh;XJ{QuC@~l=;rU;o;%Et*!BR!taOoKb=mMoWe(RU6*f$PtSkv h2SF~Im4_H82#5$F z&h5nacG7v+9nDJfoB#Y59UUDp#)iY8Wm)(4_nh-m$+GQECYz0;cr;qo<2bf$`}N-5 zx8q|nnM}TZ`Mg}Xf`B+rFvjD_B%jL#L5M}HudNLn=gr%9UJ!o&bnx!|M;t|wL`c1A zaUMysBoeWZ&qK?U!jd==MI1+=`#)sHI`%nkHaEg35E0IrnZ?{)x{JW~F+vJs-qQ0u zpAxERN~_gE2(Mx=7zi9K{V?GI&ySS81CkRZyk{O9cK z_VNm71fCO)CbK!>LdGkSKs1 z2Dv9t13gQA7y=*PsF)EG1)8S2ya_ z^{SO#(-0D<=wDr5<8q}!CAni?j;3=})%uSE!!Y9{d2l8HN4>#NlGR$H(Qda(Wvg1L zpu@vM*lf4kZ8n>5Li<*0^Yq7QHj`0R_2S}UYim16;**n;gM$yhfBpOii9~VX2&0u_ P00000NkvXXu0mjfaiLrA diff --git a/mesecons_torch/init.lua b/mesecons_torch/init.lua index ab2df98..6469d7b 100644 --- a/mesecons_torch/init.lua +++ b/mesecons_torch/init.lua @@ -56,8 +56,8 @@ local torch_selectionbox = } minetest.register_node("mesecons_torch:mesecon_torch_off", { - drawtype = "torchlike", - tiles = {"jeija_torches_off.png", "jeija_torches_off_ceiling.png", "jeija_torches_off_side.png"}, + drawtype = "plantlike", + tiles = {"jeija_torches_off.png"}, inventory_image = "jeija_torches_off.png", paramtype = "light", is_ground_content = false, @@ -75,8 +75,8 @@ minetest.register_node("mesecons_torch:mesecon_torch_off", { }) minetest.register_node("mesecons_torch:mesecon_torch_on", { - drawtype = "torchlike", - tiles = {"jeija_torches_on.png", "jeija_torches_on_ceiling.png", "jeija_torches_on_side.png"}, + drawtype = "plantlike", + tiles = {"jeija_torches_on.png"}, inventory_image = "jeija_torches_on.png", wield_image = "jeija_torches_on.png", paramtype = "light", diff --git a/mesecons_torch/textures/jeija_torches_off_ceiling.png b/mesecons_torch/textures/jeija_torches_off_ceiling.png deleted file mode 100644 index 033d2b404ba296b0ed9916c11323a07a165477ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^f;L~tmpGIl!ocwRn9=S9TAsx~TNpfD{an^LB{Ts5$E7>m diff --git a/mesecons_torch/textures/jeija_torches_on_side.png b/mesecons_torch/textures/jeija_torches_on_side.png deleted file mode 100644 index 895a4e32d3086675ee8dc6555ebc5e705880f341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt!3HF+tk*dLq=GzM978H@B};ru5c%`_`}_a* z_t*cg|NrZy{mWVZ|NZ{|{QUg?@pkpU{{Q^D`v385XMV{)O#gcS{LKgT6IMU0w`YI* qKknM9|D3xXe1CsmK%6Jt0BD<&(eKi0cVvO4GkCiCxvX Date: Tue, 2 Jul 2024 18:32:19 +0800 Subject: [PATCH 08/17] Check for digiline message field type (#670) --- mesecons_detector/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua index ad8705e..6ed16bf 100644 --- a/mesecons_detector/init.lua +++ b/mesecons_detector/init.lua @@ -223,10 +223,10 @@ local node_detector_digiline = { if type(msg) == "table" then if msg.distance or msg.scanname then - if msg.distance then + if type(msg.distance) == "string" then meta:set_string("distance", msg.distance) end - if msg.scanname then + if type(msg.scanname) == "string" then meta:set_string("scanname", msg.scanname) end node_detector_make_formspec(pos) @@ -240,7 +240,7 @@ local node_detector_digiline = { else if msg == GET_COMMAND then node_detector_send_node_name(pos, node, channel, meta) - else + elseif type(msg) == "string" then meta:set_string("scanname", msg) node_detector_make_formspec(pos) end From e71cdb6f08220c7cdc40557e6b0cd2f1722967c5 Mon Sep 17 00:00:00 2001 From: Bebibio <95770149+Bebibio@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:19:49 +0200 Subject: [PATCH 09/17] Add French translation (#675) --- mesecons/locale/mesecons.fr.tr | 4 ++++ .../locale/mesecons_blinkyplant.fr.tr | 4 ++++ mesecons_button/locale/mesecons_button.fr.tr | 4 ++++ .../locale/mesecons_commandblock.fr.tr | 7 +++++++ .../locale/mesecons_delayer.fr.tr | 5 +++++ .../locale/mesecons_detector.fr.tr | 5 +++++ .../locale/mesecons_extrawires.fr.tr | 20 +++++++++++++++++++ mesecons_fpga/locale/mesecons_fpga.fr.tr | 7 +++++++ .../locale/mesecons_hydroturbine.fr.tr | 4 ++++ .../locale/mesecons_insulated.fr.tr | 4 ++++ mesecons_lamp/locale/mesecons_lamp.fr.tr | 4 ++++ .../locale/mesecons_lightstone.fr.tr | 15 ++++++++++++++ .../locale/mesecons_luacontroller.fr.tr | 4 ++++ .../locale/mesecons_materials.fr.tr | 6 ++++++ .../locale/mesecons_microcontroller.fr.tr | 4 ++++ .../locale/mesecons_movestone.fr.tr | 7 +++++++ .../locale/mesecons_noteblock.fr.tr | 4 ++++ .../locale/mesecons_pistons.fr.tr | 9 +++++++++ .../locale/mesecons_powerplant.fr.tr | 4 ++++ .../locale/mesecons_pressureplates.fr.tr | 5 +++++ mesecons_random/locale/mesecons_random.fr.tr | 5 +++++ .../locale/mesecons_solarpanel.fr.tr | 4 ++++ .../locale/mesecons_stickyblocks.fr.tr | 4 ++++ mesecons_switch/locale/mesecons_switch.fr.tr | 4 ++++ mesecons_torch/locale/mesecons_torch.fr.tr | 4 ++++ .../locale/mesecons_walllever.fr.tr | 4 ++++ mesecons_wires/locale/mesecons_wires.fr.tr | 4 ++++ 27 files changed, 155 insertions(+) create mode 100644 mesecons/locale/mesecons.fr.tr create mode 100644 mesecons_blinkyplant/locale/mesecons_blinkyplant.fr.tr create mode 100644 mesecons_button/locale/mesecons_button.fr.tr create mode 100644 mesecons_commandblock/locale/mesecons_commandblock.fr.tr create mode 100644 mesecons_delayer/locale/mesecons_delayer.fr.tr create mode 100644 mesecons_detector/locale/mesecons_detector.fr.tr create mode 100644 mesecons_extrawires/locale/mesecons_extrawires.fr.tr create mode 100644 mesecons_fpga/locale/mesecons_fpga.fr.tr create mode 100644 mesecons_hydroturbine/locale/mesecons_hydroturbine.fr.tr create mode 100644 mesecons_insulated/locale/mesecons_insulated.fr.tr create mode 100644 mesecons_lamp/locale/mesecons_lamp.fr.tr create mode 100644 mesecons_lightstone/locale/mesecons_lightstone.fr.tr create mode 100644 mesecons_luacontroller/locale/mesecons_luacontroller.fr.tr create mode 100644 mesecons_materials/locale/mesecons_materials.fr.tr create mode 100644 mesecons_microcontroller/locale/mesecons_microcontroller.fr.tr create mode 100644 mesecons_movestones/locale/mesecons_movestone.fr.tr create mode 100644 mesecons_noteblock/locale/mesecons_noteblock.fr.tr create mode 100644 mesecons_pistons/locale/mesecons_pistons.fr.tr create mode 100644 mesecons_powerplant/locale/mesecons_powerplant.fr.tr create mode 100644 mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr create mode 100644 mesecons_random/locale/mesecons_random.fr.tr create mode 100644 mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr create mode 100644 mesecons_stickyblocks/locale/mesecons_stickyblocks.fr.tr create mode 100644 mesecons_switch/locale/mesecons_switch.fr.tr create mode 100644 mesecons_torch/locale/mesecons_torch.fr.tr create mode 100644 mesecons_walllever/locale/mesecons_walllever.fr.tr create mode 100644 mesecons_wires/locale/mesecons_wires.fr.tr diff --git a/mesecons/locale/mesecons.fr.tr b/mesecons/locale/mesecons.fr.tr new file mode 100644 index 0000000..2b51d69 --- /dev/null +++ b/mesecons/locale/mesecons.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons + +### oldwires.lua ### +Mesecons=Mesecons diff --git a/mesecons_blinkyplant/locale/mesecons_blinkyplant.fr.tr b/mesecons_blinkyplant/locale/mesecons_blinkyplant.fr.tr new file mode 100644 index 0000000..410d744 --- /dev/null +++ b/mesecons_blinkyplant/locale/mesecons_blinkyplant.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_blinkyplant + +### init.lua ### +Blinky Plant=Plante clignotante diff --git a/mesecons_button/locale/mesecons_button.fr.tr b/mesecons_button/locale/mesecons_button.fr.tr new file mode 100644 index 0000000..9ef7de5 --- /dev/null +++ b/mesecons_button/locale/mesecons_button.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_button + +### init.lua ### +Button=Bouton diff --git a/mesecons_commandblock/locale/mesecons_commandblock.fr.tr b/mesecons_commandblock/locale/mesecons_commandblock.fr.tr new file mode 100644 index 0000000..fa97d76 --- /dev/null +++ b/mesecons_commandblock/locale/mesecons_commandblock.fr.tr @@ -0,0 +1,7 @@ +# textdomain: mesecons_commandblock + +### init.lua ### +Say as the server=Dire au serveur +Say to privately=Dire à en privé +Set health of to hitpoints=Définir la vie de sur cœurs +Command Block=Bloc de commandes diff --git a/mesecons_delayer/locale/mesecons_delayer.fr.tr b/mesecons_delayer/locale/mesecons_delayer.fr.tr new file mode 100644 index 0000000..c4ff30e --- /dev/null +++ b/mesecons_delayer/locale/mesecons_delayer.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_delayer + +### init.lua ### +Delayer=Retardateur +You hacker you=Vous êtes un pirate informatique diff --git a/mesecons_detector/locale/mesecons_detector.fr.tr b/mesecons_detector/locale/mesecons_detector.fr.tr new file mode 100644 index 0000000..dadfa90 --- /dev/null +++ b/mesecons_detector/locale/mesecons_detector.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_detector + +### init.lua ### +Player Detector=Détecteur de joueur +Node Detector=Détecteur de bloc diff --git a/mesecons_extrawires/locale/mesecons_extrawires.fr.tr b/mesecons_extrawires/locale/mesecons_extrawires.fr.tr new file mode 100644 index 0000000..46992a6 --- /dev/null +++ b/mesecons_extrawires/locale/mesecons_extrawires.fr.tr @@ -0,0 +1,20 @@ +# textdomain: mesecons_extrawires + +### corner.lua ### +Insulated Mesecon Corner=Coin de Mesecon isolé + +### crossover.lua ### +Insulated Mesecon Crossover=Croisement de Mesecon isolé +You hacker you!=Vous êtes un pirate informatique ! + +### doublecorner.lua ### +Insulated Mesecon Double Corner=Double coin de Mesecon isolé + +### mesewire.lua ### +Mese Wire=Câble de Mesecon + +### tjunction.lua ### +Insulated Mesecon T-junction=Croisement en T de Mesecon isolé + +### vertical.lua ### +Vertical Mesecon=Mesecon vertical diff --git a/mesecons_fpga/locale/mesecons_fpga.fr.tr b/mesecons_fpga/locale/mesecons_fpga.fr.tr new file mode 100644 index 0000000..c0fccab --- /dev/null +++ b/mesecons_fpga/locale/mesecons_fpga.fr.tr @@ -0,0 +1,7 @@ +# textdomain: mesecons_fpga + +### init.lua ### +FPGA=Circuit logique programmable (FPGA) + +### tool.lua ### +FPGA Programmer=Programmateur de circuit logique diff --git a/mesecons_hydroturbine/locale/mesecons_hydroturbine.fr.tr b/mesecons_hydroturbine/locale/mesecons_hydroturbine.fr.tr new file mode 100644 index 0000000..14e1267 --- /dev/null +++ b/mesecons_hydroturbine/locale/mesecons_hydroturbine.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_hydroturbine + +### init.lua ### +Water Turbine=Détecteur de courant diff --git a/mesecons_insulated/locale/mesecons_insulated.fr.tr b/mesecons_insulated/locale/mesecons_insulated.fr.tr new file mode 100644 index 0000000..82faee9 --- /dev/null +++ b/mesecons_insulated/locale/mesecons_insulated.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_insulated + +### init.lua ### +Straight Insulated Mesecon=Mesecon isolé droit diff --git a/mesecons_lamp/locale/mesecons_lamp.fr.tr b/mesecons_lamp/locale/mesecons_lamp.fr.tr new file mode 100644 index 0000000..a85896e --- /dev/null +++ b/mesecons_lamp/locale/mesecons_lamp.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_lamp + +### init.lua ### +Mesecon Lamp=Lampe de Mesecon diff --git a/mesecons_lightstone/locale/mesecons_lightstone.fr.tr b/mesecons_lightstone/locale/mesecons_lightstone.fr.tr new file mode 100644 index 0000000..6e44c57 --- /dev/null +++ b/mesecons_lightstone/locale/mesecons_lightstone.fr.tr @@ -0,0 +1,15 @@ +# textdomain: mesecons_lightstone + +### init.lua ### +Red Lightstone=Pierre lumineuse rouge +Green Lightstone=Pierre lumineuse verte +Blue Lightstone=Pierre lumineuse bleue +Grey Lightstone=Pierre lumineuse grise +Dark Grey Lightstone=Pierre lumineuse gris foncée +Yellow Lightstone=Pierre lumineuse jaune +Orange Lightstone=Pierre lumineuse orange +White Lightstone=Pierre lumineuse blanche +Pink Lightstone=Pierre lumineuse rose +Magenta Lightstone=Pierre lumineuse magenta +Cyan Lightstone=Pierre lumineuse bleu clair +Violet Lightstone=Pierre lumineuse violette diff --git a/mesecons_luacontroller/locale/mesecons_luacontroller.fr.tr b/mesecons_luacontroller/locale/mesecons_luacontroller.fr.tr new file mode 100644 index 0000000..30fabac --- /dev/null +++ b/mesecons_luacontroller/locale/mesecons_luacontroller.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_luacontroller + +### init.lua ### +Luacontroller=Programmateur LUA diff --git a/mesecons_materials/locale/mesecons_materials.fr.tr b/mesecons_materials/locale/mesecons_materials.fr.tr new file mode 100644 index 0000000..ddec829 --- /dev/null +++ b/mesecons_materials/locale/mesecons_materials.fr.tr @@ -0,0 +1,6 @@ +# textdomain: mesecons_materials + +### init.lua ### +Glue=Colle +Fiber=Fibre +Silicon=Silicone diff --git a/mesecons_microcontroller/locale/mesecons_microcontroller.fr.tr b/mesecons_microcontroller/locale/mesecons_microcontroller.fr.tr new file mode 100644 index 0000000..c81a75b --- /dev/null +++ b/mesecons_microcontroller/locale/mesecons_microcontroller.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_microcontroller + +### init.lua ### +Microcontroller=Micro-controlleur diff --git a/mesecons_movestones/locale/mesecons_movestone.fr.tr b/mesecons_movestones/locale/mesecons_movestone.fr.tr new file mode 100644 index 0000000..3547c93 --- /dev/null +++ b/mesecons_movestones/locale/mesecons_movestone.fr.tr @@ -0,0 +1,7 @@ +# textdomain: mesecons_movestones + +### init.lua ### +Movestone=Pierre mouvante +Sticky Movestone=Pierre collante mouvante +Vertical Movestone=Pierre mouvante verticalement +Vertical Sticky Movestone=Pierre collante mouvante verticalement diff --git a/mesecons_noteblock/locale/mesecons_noteblock.fr.tr b/mesecons_noteblock/locale/mesecons_noteblock.fr.tr new file mode 100644 index 0000000..8a2d632 --- /dev/null +++ b/mesecons_noteblock/locale/mesecons_noteblock.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_noteblock + +### init.lua ### +Noteblock=Bloc de musique diff --git a/mesecons_pistons/locale/mesecons_pistons.fr.tr b/mesecons_pistons/locale/mesecons_pistons.fr.tr new file mode 100644 index 0000000..5be2ea3 --- /dev/null +++ b/mesecons_pistons/locale/mesecons_pistons.fr.tr @@ -0,0 +1,9 @@ +# textdomain: mesecons_pistons + +### init.lua ### +Piston=Piston +Activated Piston Base=Base de piston activé +Piston Pusher=Bras de piston +Sticky Piston=Piston collant +Activated Sticky Piston Base=Base de piston collant activé +Sticky Piston Pusher=Bras de piston collant diff --git a/mesecons_powerplant/locale/mesecons_powerplant.fr.tr b/mesecons_powerplant/locale/mesecons_powerplant.fr.tr new file mode 100644 index 0000000..5098d63 --- /dev/null +++ b/mesecons_powerplant/locale/mesecons_powerplant.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_powerplant + +### init.lua ### +Power Plant=Centrale à signal actif \ No newline at end of file diff --git a/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr b/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr new file mode 100644 index 0000000..23d0c5b --- /dev/null +++ b/mesecons_pressureplates/locale/mesecons_pressureplates.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_pressureplates + +### init.lua ### +Wooden Pressure Plate=Plaque de pression en bois +Stone Pressure Plate=Plaque de pression en pierre diff --git a/mesecons_random/locale/mesecons_random.fr.tr b/mesecons_random/locale/mesecons_random.fr.tr new file mode 100644 index 0000000..15bdb0c --- /dev/null +++ b/mesecons_random/locale/mesecons_random.fr.tr @@ -0,0 +1,5 @@ +# textdomain: mesecons_random + +### init.lua ### +Removestone=Pierre de suppression +Ghoststone=Pierre fantôme diff --git a/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr b/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr new file mode 100644 index 0000000..ed41452 --- /dev/null +++ b/mesecons_solarpanel/locale/mesecons_solarpanel.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_solarpanel + +### init.lua ### +Solar Panel=Détecteur solaire diff --git a/mesecons_stickyblocks/locale/mesecons_stickyblocks.fr.tr b/mesecons_stickyblocks/locale/mesecons_stickyblocks.fr.tr new file mode 100644 index 0000000..9dc82d7 --- /dev/null +++ b/mesecons_stickyblocks/locale/mesecons_stickyblocks.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_stickyblocks + +### init.lua ### +Sticky Block=Bloc collant diff --git a/mesecons_switch/locale/mesecons_switch.fr.tr b/mesecons_switch/locale/mesecons_switch.fr.tr new file mode 100644 index 0000000..6c07c64 --- /dev/null +++ b/mesecons_switch/locale/mesecons_switch.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_switch + +### init.lua ### +Switch=Commutateur diff --git a/mesecons_torch/locale/mesecons_torch.fr.tr b/mesecons_torch/locale/mesecons_torch.fr.tr new file mode 100644 index 0000000..50687b3 --- /dev/null +++ b/mesecons_torch/locale/mesecons_torch.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_torch + +### init.lua ### +Mesecon Torch=Torche de Mesecon diff --git a/mesecons_walllever/locale/mesecons_walllever.fr.tr b/mesecons_walllever/locale/mesecons_walllever.fr.tr new file mode 100644 index 0000000..4821709 --- /dev/null +++ b/mesecons_walllever/locale/mesecons_walllever.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_walllever + +### init.lua ### +Lever=Levier diff --git a/mesecons_wires/locale/mesecons_wires.fr.tr b/mesecons_wires/locale/mesecons_wires.fr.tr new file mode 100644 index 0000000..cc8386c --- /dev/null +++ b/mesecons_wires/locale/mesecons_wires.fr.tr @@ -0,0 +1,4 @@ +# textdomain: mesecons_wires + +### init.lua ### +Mesecon=Mesecon From e2c8a81e7be63cb5fecd5e7d2dbe3252170ecc5a Mon Sep 17 00:00:00 2001 From: Olivier Dragon Date: Thu, 1 Aug 2024 12:02:20 -0400 Subject: [PATCH 10/17] Move textures to correct dependency issue between delayer and gates (#676) --- .../textures/jeija_gate_output_off.png | Bin .../textures/jeija_gate_output_on.png | Bin .../textures/jeija_gate_side_output_off.png | Bin .../textures/jeija_gate_side_output_on.png | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_output_off.png (100%) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_output_on.png (100%) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_side_output_off.png (100%) rename {mesecons_gates => mesecons_delayer}/textures/jeija_gate_side_output_on.png (100%) diff --git a/mesecons_gates/textures/jeija_gate_output_off.png b/mesecons_delayer/textures/jeija_gate_output_off.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_output_off.png rename to mesecons_delayer/textures/jeija_gate_output_off.png diff --git a/mesecons_gates/textures/jeija_gate_output_on.png b/mesecons_delayer/textures/jeija_gate_output_on.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_output_on.png rename to mesecons_delayer/textures/jeija_gate_output_on.png diff --git a/mesecons_gates/textures/jeija_gate_side_output_off.png b/mesecons_delayer/textures/jeija_gate_side_output_off.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_side_output_off.png rename to mesecons_delayer/textures/jeija_gate_side_output_off.png diff --git a/mesecons_gates/textures/jeija_gate_side_output_on.png b/mesecons_delayer/textures/jeija_gate_side_output_on.png similarity index 100% rename from mesecons_gates/textures/jeija_gate_side_output_on.png rename to mesecons_delayer/textures/jeija_gate_side_output_on.png From d52eac5a4afec3d68f39224a8da541b3ba52b561 Mon Sep 17 00:00:00 2001 From: DS Date: Thu, 1 Aug 2024 18:03:30 +0200 Subject: [PATCH 11/17] Add documentation for Microcontroller (#603) --- documentation.json | 1 + .../doc/microcontroller/description.html | 64 ++++++++++++++++++ .../doc/microcontroller/description.md | 59 ++++++++++++++++ .../doc/microcontroller/preview.png | Bin 0 -> 19204 bytes .../doc/microcontroller/recipe.png | Bin 0 -> 2954 bytes mesecons_microcontroller/init.lua | 2 +- 6 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 mesecons_microcontroller/doc/microcontroller/description.html create mode 100644 mesecons_microcontroller/doc/microcontroller/description.md create mode 100644 mesecons_microcontroller/doc/microcontroller/preview.png create mode 100644 mesecons_microcontroller/doc/microcontroller/recipe.png diff --git a/documentation.json b/documentation.json index f318501..b12dc6d 100644 --- a/documentation.json +++ b/documentation.json @@ -42,6 +42,7 @@ }, "Logic" : { "Luacontroller" : "mesecons_luacontroller/doc/luacontroller", + "Microcontroller" : "mesecons_microcontroller/doc/microcontroler", "FPGA" : "mesecons_fpga/doc/fpga", "FPGA Programmer" : "mesecons_fpga/doc/programmer", "Torch" : "mesecons_torch/doc/torch", diff --git a/mesecons_microcontroller/doc/microcontroller/description.html b/mesecons_microcontroller/doc/microcontroller/description.html new file mode 100644 index 0000000..af1e5c3 --- /dev/null +++ b/mesecons_microcontroller/doc/microcontroller/description.html @@ -0,0 +1,64 @@ + +

The Microcontroller is a semi-advanced programmable component with a persistent +256 bit EEPROM memory.

+

Warning: This device is largely considered deprecated and might contain bugs. It +is recommended to use a Luacontroller instead.

+

Detailed documentation can be found below:

+
    +
  • The Microcontroller's code is executed whenever any of the following events +happens:
      +
    • The Microcontroller is programmed. In this case the EEPROM and ports are all +reset to 0 before.
    • +
    • An incoming signal changes its state.
    • +
    • An after event happens (see command after below).
    • +
    +
  • +
  • There are 4 I/O ports (ABCD) and 256 EEPROM bits (1 to 256).
  • +
  • The code consists of a sequence of commands.
  • +
  • Everything after : is a comment.
  • +
  • Strings are enclosed in "s.
  • +
  • Spaces and tabs outside of strings are ignored.
  • +
  • Basic command syntax:
        command_name`(`param1`,` param2`,` ...`)`
    +
    +
  • +
  • Commands:
      +
    • if(condition) commands [> else_commands];: +Evaluates the given condition and takes the corresponding branch. +The else branch is optional (as indicated by the [ and ]). The > is part +of the syntax and indicates the start of the else branch. The ; marks the +end of the if command.
    • +
    • on(port1, port2, ...): +Sets the given ports to 1.
    • +
    • off(port1, port2, ...): +Sets the given ports to 0.
    • +
    • print("string" or codition, ...): +Evaluates the conditions and prints the concatenation of all params to stdout +(only useful in singleplayer).
    • +
    • after(time, "more commands"): +Executes the commands in the string after the given time in seconds. +There can only be one waiting after event at once. +Warning: This is not reliable, ie. minetest.after is used.
    • +
    • sbi(port_or_eeprom, condition): +Evaluates the condition and sets the port or EEPROM bit to the resulting value. +Note: EEPROM indices don't use # here, ie. it's sbi(1, #2), not sbi(#1, #2).
    • +
    +
  • +
  • Conditions (sorted by descending precedence; they are all evaluated from left +to right):
      +
    • 0, 1: constant
    • +
    • A, ..., D: value of a port. Takes writes that already happened during the +current execution into account.
    • +
    • #1, ..., #256: value of an EEPROM bit. Takes writes that already happened +during the current execution into account.
    • +
    • !condition: negation (can only be applied once, ie. not !!1)
    • +
    • condition1 = condition2: XNOR (equality)
    • +
    • condition1 op condition2 where op is one of:
        +
      • &: AND
      • +
      • |: OR
      • +
      • ~: XOR (inequality)
      • +
      +
    • +
    • Note: Explicit precedence using parentheses is not supported.
    • +
    +
  • +
diff --git a/mesecons_microcontroller/doc/microcontroller/description.md b/mesecons_microcontroller/doc/microcontroller/description.md new file mode 100644 index 0000000..a723537 --- /dev/null +++ b/mesecons_microcontroller/doc/microcontroller/description.md @@ -0,0 +1,59 @@ + + +The Microcontroller is a semi-advanced programmable component with a persistent +256 bit EEPROM memory. + +Warning: This device is largely considered deprecated and might contain bugs. It +is recommended to use a Luacontroller instead. + +Detailed documentation can be found below: + +* The Microcontroller's code is executed whenever any of the following events + happens: + * The Microcontroller is programmed. In this case the EEPROM and ports are all + reset to `0` before. + * An incoming signal changes its state. + * An `after` event happens (see command `after` below). +* There are 4 I/O ports (ABCD) and 256 EEPROM bits (1 to 256). +* The code consists of a sequence of commands. +* Everything after `:` is a comment. +* Strings are enclosed in `"`s. +* Spaces and tabs outside of strings are ignored. +* Basic command syntax: + ``` + command_name`(`param1`,` param2`,` ...`)` + ``` +* Commands: + * `if(condition) commands [> else_commands];`: + Evaluates the given condition and takes the corresponding branch. + The else branch is optional (as indicated by the `[` and `]`). The `>` is part + of the syntax and indicates the start of the else branch. The `;` marks the + end of the if command. + * `on(port1, port2, ...)`: + Sets the given ports to `1`. + * `off(port1, port2, ...)`: + Sets the given ports to `0`. + * `print("string" or codition, ...)`: + Evaluates the conditions and prints the concatenation of all params to stdout + (only useful in singleplayer). + * `after(time, "more commands")`: + Executes the commands in the string after the given time in seconds. + There can only be one waiting `after` event at once. + Warning: This is not reliable, ie. `minetest.after` is used. + * `sbi(port_or_eeprom, condition)`: + Evaluates the condition and sets the port or EEPROM bit to the resulting value. + Note: EEPROM indices don't use `#` here, ie. it's `sbi(1, #2)`, not `sbi(#1, #2)`. +* Conditions (sorted by descending precedence; they are all evaluated from left + to right): + * `0`, `1`: constant + * `A`, ..., `D`: value of a port. Takes writes that already happened during the + current execution into account. + * `#1`, ..., `#256`: value of an EEPROM bit. Takes writes that already happened + during the current execution into account. + * `!condition`: negation (can only be applied once, ie. not `!!1`) + * `condition1 = condition2`: XNOR (equality) + * `condition1 op condition2` where `op` is one of: + * `&`: AND + * `|`: OR + * `~`: XOR (inequality) + * Note: Explicit precedence using parentheses is not supported. diff --git a/mesecons_microcontroller/doc/microcontroller/preview.png b/mesecons_microcontroller/doc/microcontroller/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..cf158824bbd51d2eb1b2a385446b80e8f5a4b23f GIT binary patch literal 19204 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 VJ7!-!^I&!>aG2@McyKW6>fZ$L%U=Kh literal 0 HcmV?d00001 diff --git a/mesecons_microcontroller/doc/microcontroller/recipe.png b/mesecons_microcontroller/doc/microcontroller/recipe.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6ebd33f1e70c9f33b308d10be49b217bf84abc GIT binary patch literal 2954 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 nTh35C3r1@?_P3AmWjz1dw8AHshD^0aks literal 0 HcmV?d00001 diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua index 3334f68..271b17d 100644 --- a/mesecons_microcontroller/init.lua +++ b/mesecons_microcontroller/init.lua @@ -122,7 +122,7 @@ minetest.register_node(nodename, { elseif fields.bnand then fields.code = "sbi(C, !A|!B) :A and B are inputs, C is output" elseif fields.btflop then - fields.code = "if(A)sbi(1,1);if(!A)sbi(B,!B)sbi(1,0); if(C)off(B,1); :A is input, B is output (Q), C is reset, toggles with falling edge" + fields.code = "if(A)sbi(1,1);if(!A)sbi(B,!B)sbi(1,0); if(C)off(B); :A is input, B is output (Q), C is reset, toggles with falling edge" elseif fields.brsflop then fields.code = "if(A)on(C);if(B)off(C); :A is S (Set), B is R (Reset), C is output (R dominates)" end From fe57adec26e4d4123e4c3b30ecaf094ed9d6ad4b Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 15 Aug 2024 15:10:14 +0200 Subject: [PATCH 12/17] Permit number type for 'distance' in digiline message again fixes #680 --- mesecons_detector/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua index 6ed16bf..a8d0300 100644 --- a/mesecons_detector/init.lua +++ b/mesecons_detector/init.lua @@ -223,7 +223,7 @@ local node_detector_digiline = { if type(msg) == "table" then if msg.distance or msg.scanname then - if type(msg.distance) == "string" then + if type(msg.distance) == "number" or type(msg.distance) == "string" then meta:set_string("distance", msg.distance) end if type(msg.scanname) == "string" then From 368b294c706cd17ff9448b3e67852ac51e4389b7 Mon Sep 17 00:00:00 2001 From: Zemtzov7 <72821250+zmv7@users.noreply.github.com> Date: Fri, 16 Aug 2024 14:37:44 +0500 Subject: [PATCH 13/17] Fix mesecons displayed as unknown(??) mod in the profiler (#679) --- mesecons/actionqueue.lua | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/mesecons/actionqueue.lua b/mesecons/actionqueue.lua index 72b464d..b3118f0 100644 --- a/mesecons/actionqueue.lua +++ b/mesecons/actionqueue.lua @@ -70,7 +70,17 @@ end -- However, even that does not work in some cases, that's why we delay the time the globalsteps -- start to be execute by 4 seconds +local m_time = 0 +local resumetime = mesecon.setting("resumetime", 4) + local function globalstep_func(dtime) + -- don't even try if server has not been running for XY seconds; resumetime = time to wait + -- after starting the server before processing the ActionQueue, don't set this too low + if m_time < resumetime then + m_time = m_time + dtime + return + end + local actions = queue.actions -- split into two categories: -- actions_now: actions to execute now @@ -112,23 +122,7 @@ local function globalstep_func(dtime) end end --- delay the time the globalsteps start to be execute by 4 seconds -do - local m_time = 0 - local resumetime = mesecon.setting("resumetime", 4) - local globalstep_func_index = #minetest.registered_globalsteps + 1 - - minetest.register_globalstep(function(dtime) - m_time = m_time + dtime - -- don't even try if server has not been running for XY seconds; resumetime = time to wait - -- after starting the server before processing the ActionQueue, don't set this too low - if m_time < resumetime then - return - end - -- replace this globalstep function - minetest.registered_globalsteps[globalstep_func_index] = globalstep_func - end) -end +minetest.register_globalstep(globalstep_func) function queue:execute(action) -- ignore if action queue function name doesn't exist, From 9ff3ab100798958c6ad854baf738b226342f6345 Mon Sep 17 00:00:00 2001 From: "Github is a non-free platform owned by Microsoft. Reasonable alternatives exist, such as Gitea, Sourcehut. We need a federated, mastodon-like forge based on ForgeFed. See: https://forgefed.org" Date: Fri, 16 Aug 2024 16:15:10 +0200 Subject: [PATCH 14/17] MineClonia compat (#677) --- .luacheckrc | 2 ++ mesecons_gamecompat/compat_mcl.lua | 43 ++++++++++++++++++++++++++++++ mesecons_gamecompat/init.lua | 5 ++++ mesecons_gamecompat/mod.conf | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 mesecons_gamecompat/compat_mcl.lua diff --git a/.luacheckrc b/.luacheckrc index f2445a0..d079c76 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -27,6 +27,8 @@ read_globals = { "table.insert_all", "vector", "VoxelArea", + "mcl_dyes", + "mcl_sounds", } globals = {"mesecon"} diff --git a/mesecons_gamecompat/compat_mcl.lua b/mesecons_gamecompat/compat_mcl.lua new file mode 100644 index 0000000..10e1a8a --- /dev/null +++ b/mesecons_gamecompat/compat_mcl.lua @@ -0,0 +1,43 @@ + +--Aliases + +minetest.register_alias("mesecons_gamecompat:chest", "mcl_chests:chest") +minetest.register_alias("mesecons_gamecompat:chest_locked", "mcl_chests:chest") +minetest.register_alias("mesecons_gamecompat:coalblock", "mcl_core:coalblock") +minetest.register_alias("mesecons_gamecompat:cobble", "mcl_core:cobble") +minetest.register_alias("mesecons_gamecompat:glass", "mcl_core:glass") +minetest.register_alias("mesecons_gamecompat:lava_source", "mcl_core:lava_source") +minetest.register_alias("mesecons_gamecompat:mese", "mesecons:redstoneblock") +minetest.register_alias("mesecons_gamecompat:mese_crystal", "mesecoms:redstone") +minetest.register_alias("mesecons_gamecompat:mese_crystal_fragment", "mesecons:redstone") +minetest.register_alias("mesecons_gamecompat:obsidian_glass", "mcl_core:glass") +minetest.register_alias("mesecons_gamecompat:stone", "mcl_core:stone") +minetest.register_alias("mesecons_gamecompat:steel_ingot", "mcl_core:iron_ingot") +minetest.register_alias("mesecons_gamecompat:steelblock", "mcl_core:steelblock") +minetest.register_alias("mesecons_gamecompat:torch", "mcl_torches:torch") + +if minetest.get_modpath("mcl_dyes") then + for color, def in ipairs(mcl_dyes.colors) do + minetest.register_alias("mesecons_gamecompat:dye_" .. def.mcl2, "mcl_dyes:" .. color) + end +end + +-- Sounds + +mesecon.node_sound.default = mcl_sounds.node_sound_defaults() +mesecon.node_sound.glass = mcl_sounds.node_sound_glass_defaults() +mesecon.node_sound.leaves = mcl_sounds.node_sound_leaves_defaults() +mesecon.node_sound.stone = mcl_sounds.node_sound_stone_defaults() +mesecon.node_sound.wood = mcl_sounds.node_sound_wood_defaults() + +if minetest.get_modpath("mcl_fire") then + mesecon.sound_name.fire = "fire_fire" +end + +if minetest.get_modpath("mcl_tnt") then + mesecon.sound_name.explode = "tnt_explode" +end + +-- Textures + +mesecon.texture.steel_block = "default_steel_block.png" diff --git a/mesecons_gamecompat/init.lua b/mesecons_gamecompat/init.lua index 2fc44d1..95c088e 100644 --- a/mesecons_gamecompat/init.lua +++ b/mesecons_gamecompat/init.lua @@ -13,3 +13,8 @@ if minetest.get_modpath("default") then minetest.log("info", "Mesecons: detected Minetest Game for game compatibility") dofile(minetest.get_modpath("mesecons_gamecompat").."/compat_mtg.lua") end + +if minetest.get_modpath("mcl_core") then + minetest.log("info", "Mesecons: detected MineClonia Game for game compatibility") + dofile(minetest.get_modpath("mesecons_gamecompat").."/compat_mcl.lua") +end diff --git a/mesecons_gamecompat/mod.conf b/mesecons_gamecompat/mod.conf index c683108..997f41f 100644 --- a/mesecons_gamecompat/mod.conf +++ b/mesecons_gamecompat/mod.conf @@ -1,3 +1,3 @@ name = mesecons_gamecompat depends = mesecons -optional_depends = fire, default, dye, mesecons_mvps, tnt +optional_depends = fire, default, dye, mesecons_mvps, tnt, mcl_fire, mcl_core, mcl_dye, mcl_tnt From f718816ceaaf34a770a07a589e6a4b42d2796fee Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 16 Aug 2024 16:45:33 +0200 Subject: [PATCH 15/17] Modernize readme --- README.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b198ccc..4e40e98 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ MESECONS by Jeija and contributors Mezzee-what? ------------ + [Mesecons](https://mesecons.net/)! They're yellow, they're conductive, and they'll add a whole new dimension to Minetest's gameplay. Mesecons is a mod for [Minetest](https://www.minetest.net/) that implements a ton of items related to digital circuitry, such as wires, buttons, lights, and even programmable controllers. Among other things, there are also pistons, solar panels, pressure plates, and note blocks. @@ -20,15 +21,18 @@ Mesecons has a similar goal to Redstone in Minecraft, but works in its own way, OK, I want in. -------------- + Go get it! -[DOWNLOAD IT NOW](https://github.com/minetest-mods/mesecons/archive/master.zip) +[![ContentDB](https://content.minetest.net/packages/Jeija/mesecons/shields/downloads/)](https://content.minetest.net/packages/Jeija/mesecons/) -Now go ahead and install it like any other Minetest mod. Don't know how? Check out [the wonderful page about it](https://wiki.minetest.net/Mods) over at the official Minetest Wiki. For your convenience, here's a quick summary: +Install it directly from your client by searching it in the Online Content tab. + +**Or** if you've downloaded a ZIP file check out [this page](https://wiki.minetest.net/Mods) over at the official Minetest Wiki. For your convenience, here's a quick summary: 1. If Mesecons is still in a ZIP file, extract the folder inside to somewhere on the computer. 2. Make sure that when you open the folder, you can directly find `README.md` in the listing. If you just see another folder, move that folder up one level and delete the old one. -3. Open up the Minetest mods folder - usually `/mods/`. If you see the `minetest` or folder inside of that, that is your mod folder instead. +3. Open up the Minetest mods folder - called `mods`. 4. Copy the Mesecons folder into the mods folder. Don't like some parts of Mesecons? Open up the Mesecons folder and delete the subfolder containing the mod you don't want. If you didn't want movestones, for example, all you have to do is delete the `mesecons_movestones` folder and they will no longer be available. @@ -37,21 +41,21 @@ There are no dependencies - it will work right after installing! How do I use this thing? ------------------------ + How about a [quick overview video](https://www.youtube.com/watch?v=6kmeQj6iW5k)? -Or maybe a [comprehensive reference](http://mesecons.net/items.html) is your style? +Or maybe a [comprehensive reference](https://mesecons.net/items.html) is your style? -An overview for the very newest of new beginners? How does [this one](http://uberi.mesecons.net/projects/MeseconsBasics/index.html) look? +An overview for the very newest of new beginners? How does [this one](https://uberi.mesecons.net/projects/MeseconsBasics/index.html) look? -There is also a [wiki page](https://wiki.minetest.net/Mods/Mesecons) dedicated to this mod. - -Want to get more into building? Why not check out the [Mesecons Laboratory](http://uberi.mesecons.net/), a website dedicated to advanced Mesecons builders? +Want to get more into building? Why not check out the [Mesecons Laboratory](https://uberi.mesecons.net/), a website dedicated to advanced Mesecons builders? Want to contribute to Mesecons itself? Check out the [source code](https://github.com/minetest-mods/mesecons)! Who wrote it anyways? --------------------- -These awesome people made Mesecons possible! + +These awesome people made Mesecons possible! (as of 2016) | Contributor | Contribution | | --------------- | -------------------------------- | @@ -72,8 +76,11 @@ These awesome people made Mesecons possible! There are also a whole bunch of other people helping with everything from code to testing and feedback. Mesecons would also not be possible without their help! +Check out the [entire contributor list](https://github.com/minetest-mods/mesecons/graphs/contributors) on GitHub. + Alright, how can I use it? -------------------------- + All textures in this project are licensed under the CC-BY-SA 3.0 (Creative Commons Attribution-ShareAlike 3.0 Generic). That means you can distribute and remix them as much as you want to, under the condition that you give credit to the authors and the project, and that if you remix and release them, they must be under the same or similar license to this one. From 096df65cc6b0baeecc0d0353adc8952c1a6566eb Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 16 Aug 2024 17:40:27 +0200 Subject: [PATCH 16/17] Update modpack.conf --- modpack.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modpack.conf b/modpack.conf index 5c56920..2878aae 100644 --- a/modpack.conf +++ b/modpack.conf @@ -1 +1,3 @@ name = mesecons +description = Mod that implements a ton of items related to digital circuitry. +min_minetest_version = 5.0 From ff87cf3162750d50b74ae04b2298b896dad165e0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 16 Aug 2024 17:10:25 +0200 Subject: [PATCH 17/17] Add smoke test with engine using Docker --- .../{check-release.yml => check.yml} | 8 ++--- .github/workflows/test.yml | 26 ++++++++++++++++ .test/minetest.conf | 3 ++ .test/run.sh | 31 +++++++++++++++++++ mesecons/init.lua | 8 +++++ 5 files changed, 72 insertions(+), 4 deletions(-) rename .github/workflows/{check-release.yml => check.yml} (94%) create mode 100644 .github/workflows/test.yml create mode 100644 .test/minetest.conf create mode 100755 .test/run.sh diff --git a/.github/workflows/check-release.yml b/.github/workflows/check.yml similarity index 94% rename from .github/workflows/check-release.yml rename to .github/workflows/check.yml index 616adb3..3353325 100644 --- a/.github/workflows/check-release.yml +++ b/.github/workflows/check.yml @@ -1,10 +1,10 @@ on: [push, pull_request] -name: Check & Release +name: "Check" jobs: lint: runs-on: ubuntu-latest - + name: "Luacheck" steps: - uses: actions/checkout@main - name: apt @@ -14,9 +14,9 @@ jobs: - name: luacheck run run: $HOME/.luarocks/bin/luacheck ./ - test: + mineunit: runs-on: ubuntu-latest - + name: "Mineunit tests" steps: - uses: actions/checkout@main - name: apt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..300025e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,26 @@ +on: [push, pull_request] +name: "Test" + +jobs: + test: + name: "Smoke Test ${{ matrix.cfg.image }}" + runs-on: ubuntu-latest + timeout-minutes: 5 + strategy: + matrix: + cfg: + - { image: 'registry.gitlab.com/minetest/minetest/server:5.0.1', mtg: false } + - { image: 'ghcr.io/minetest/minetest:5.9.0', mtg: true } + steps: + - uses: actions/checkout@main + + - uses: actions/checkout@main + with: + repository: 'minetest/minetest_game' + path: ./.test/minetest_game + if: ${{ matrix.cfg.mtg }} + + - name: Run tests + run: ./.test/run.sh + env: + DOCKER_IMAGE: "${{ matrix.cfg.image }}" diff --git a/.test/minetest.conf b/.test/minetest.conf new file mode 100644 index 0000000..7e7b767 --- /dev/null +++ b/.test/minetest.conf @@ -0,0 +1,3 @@ +mg_name = singlenode +mesecon.internal_test = true +random_mod_load_order = true diff --git a/.test/run.sh b/.test/run.sh new file mode 100755 index 0000000..eb8c198 --- /dev/null +++ b/.test/run.sh @@ -0,0 +1,31 @@ +#!/bin/bash +tempdir=$(mktemp -d) +confpath=$tempdir/minetest.conf +worldpath=$tempdir/world +trap 'rm -rf "$tempdir" || :' EXIT + +[ -f mesecons/mod.conf ] || { echo "Must be run in modpack root folder." >&2; exit 1; } + +command -v docker >/dev/null || { echo "Docker is not installed." >&2; exit 1; } +mtg=.test/minetest_game +[ -d $mtg ] || echo "A source checkout of minetest_game was not found. This can fail if your docker image does not ship a game." >&2 + +mkdir "$worldpath" +cp -v .test/minetest.conf "$confpath" +chmod -R 777 "$tempdir" + +args=( + -v "$confpath":/etc/minetest/minetest.conf + -v "$tempdir":/var/lib/minetest/.minetest + -v "$PWD":/var/lib/minetest/.minetest/world/worldmods/mesecons +) +[ -d $mtg ] && args+=( + -v "$(realpath $mtg)":/var/lib/minetest/.minetest/games/minetest_game +) +args+=("$DOCKER_IMAGE") +[ -d $mtg ] && args+=(--gameid minetest) +docker run --rm -i "${args[@]}" + +ls -la "$worldpath" +test -f "$worldpath/mesecon_actionqueue" || exit 1 +exit 0 diff --git a/mesecons/init.lua b/mesecons/init.lua index 3446004..9a45a40 100644 --- a/mesecons/init.lua +++ b/mesecons/init.lua @@ -123,3 +123,11 @@ dofile(minetest.get_modpath("mesecons").."/legacy.lua"); --Services like turnoff receptor on dignode and so on dofile(minetest.get_modpath("mesecons").."/services.lua"); + +-- Automated test run +if mesecon.setting("internal_test", false) then + -- currently does nothing, we only fail if some error happens right on startup + minetest.after(5, function() + minetest.request_shutdown() + end) +end