From 5605ed7a5e556999bf73d2bc762645a73be14335 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:15:37 +0100 Subject: [PATCH 001/130] change /technic.conf:enable_wrench_crafting -> minetest.conf:wrench.enable_crafting --- settingtypes.txt | 1 + tool.lua | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 settingtypes.txt diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..00989c5 --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1 @@ +wrench.enable_crafting (enable recipe for wrench) bool true diff --git a/tool.lua b/tool.lua index 653f762..cb13fdb 100644 --- a/tool.lua +++ b/tool.lua @@ -25,13 +25,15 @@ minetest.register_tool("wrench:wrench", { end, }) -if minetest.get_modpath("technic") and technic.config:get_bool("enable_wrench_crafting") then - minetest.register_craft({ - output = "wrench:wrench", - recipe = { - {"technic:carbon_steel_ingot", "", "technic:carbon_steel_ingot"}, - {"", "technic:carbon_steel_ingot", ""}, - {"", "technic:carbon_steel_ingot", ""} - } - }) +if minetest.settings:get_bool("wrench.enable_crafting", true) then + if minetest.get_modpath("technic") then + minetest.register_craft({ + output = "wrench:wrench", + recipe = { + {"technic:carbon_steel_ingot", "", "technic:carbon_steel_ingot"}, + {"", "technic:carbon_steel_ingot", ""}, + {"", "technic:carbon_steel_ingot", ""} + } + }) + end end From 8590d7ba42ce9da1b04933a4b15480ca5337263f Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:20:35 +0100 Subject: [PATCH 002/130] add bones support --- init.lua | 1 + mod.conf | 2 +- nodes/bones.lua | 13 +++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 nodes/bones.lua diff --git a/init.lua b/init.lua index 2b0e2bd..a9bc9ab 100644 --- a/init.lua +++ b/init.lua @@ -43,6 +43,7 @@ function wrench.blacklist_item(name) end local mods = { + "bones", "default", "digtron", "drawers", diff --git a/mod.conf b/mod.conf index b0261bb..32758b4 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,2 @@ name = wrench -optional_depends = technic, technic_chests, technic_worldgen, intllib, drawers, default, digtron +optional_depends = bones, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen diff --git a/nodes/bones.lua b/nodes/bones.lua new file mode 100644 index 0000000..0d5ff01 --- /dev/null +++ b/nodes/bones.lua @@ -0,0 +1,13 @@ + +-- Register wrench support for bones + +wrench.register_node("bones:bones", { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + time = wrench.META_TYPE_INT, + }, + owned = true, +}) From 7ceec2a8b9d7addae3f453303dfd046cb625474f Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:23:06 +0100 Subject: [PATCH 003/130] add connected_chests support --- init.lua | 1 + mod.conf | 2 +- nodes/connected_chests.lua | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 nodes/connected_chests.lua diff --git a/init.lua b/init.lua index a9bc9ab..8c33c26 100644 --- a/init.lua +++ b/init.lua @@ -44,6 +44,7 @@ end local mods = { "bones", + "connected_chests", "default", "digtron", "drawers", diff --git a/mod.conf b/mod.conf index 32758b4..c24cf30 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,2 @@ name = wrench -optional_depends = bones, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen +optional_depends = bones, connected_chests, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen diff --git a/nodes/connected_chests.lua b/nodes/connected_chests.lua new file mode 100644 index 0000000..76a17f2 --- /dev/null +++ b/nodes/connected_chests.lua @@ -0,0 +1,29 @@ + +-- Register wrench support for connected_chests + +wrench.register_node("default:chest_connected_left", { + lists = {"main"}, +}) + +wrench.register_node("default:chest_connected_right", { + lists = {"main"}, +}) + +wrench.register_node("default:chest_locked_connected_left", { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING + }, + owned = true, +}) + +wrench.register_node("default:chest_locked_connected_right", { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING + }, + owned = true, + +}) From c784eb9444d9ac715d5dc5b5eea3f8aa8d9c6dca Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:38:03 +0100 Subject: [PATCH 004/130] add xdecor support --- init.lua | 1 + mod.conf | 2 +- nodes/xdecor.lua | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 nodes/xdecor.lua diff --git a/init.lua b/init.lua index 8c33c26..1b6b870 100644 --- a/init.lua +++ b/init.lua @@ -51,6 +51,7 @@ local mods = { "technic", "technic_chests", "technic_cnc", + "xdecor", } for _, modname in pairs(mods) do diff --git a/mod.conf b/mod.conf index c24cf30..67fde6e 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,2 @@ name = wrench -optional_depends = bones, connected_chests, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen +optional_depends = bones, connected_chests, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen, xdecor diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua new file mode 100644 index 0000000..8109fd2 --- /dev/null +++ b/nodes/xdecor.lua @@ -0,0 +1,115 @@ + +-- Register wrench support for xdecor + +xdecor:register_repairable("wrench:wrench") + +local nodes = { + "xdecor:cabinet", + "xdecor:cabinet_half", + "xdecor:empty_shelf", + "xdecor:multishelf", +} + +for _, nodename in pairs(nodes) do + wrench.register_node(nodename, { + lists = {"main"}, + }) +end + +-- cauldron + +nodes = { + "xdecor:cauldron_empty", + "xdecor:cauldron_idle", + "xdecor:cauldron_boiling", + "xdecor:cauldron_soup", +} + +local function translated(player, text) + local player_name = player:get_player_name() + local lang_code = minetest.get_player_information(player_name).lang_code + return minetest.get_translated_string(lang_code, text) +end + +for _, nodename in pairs(nodes) do + wrench.register_node(nodename, { + metas = { + infotext = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + local str = translated(player, minetest.registered_nodes[node.name].infotext) + local i = string.find(str, "-") + return (i and i > 0) and string.sub(str, 1, i - 1) or str + end, + + }) +end + +-- enchantment_table + +wrench.register_node("xdecor:enchantment_table", { + lists = { "tool", "mese" }, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, +}) + +-- itemframe + +wrench.register_node("xdecor:itemframe", { + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + item = wrench.META_TYPE_STRING, + }, + owned = true, + after_place = function(pos, player, stack) + -- force item update + local timer = minetest.get_node_timer(pos) + timer:start(0) + end, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + local item = meta:get_string("item") + if item and item ~= "" then + local d = ItemStack(item):get_short_description() + return string.format("%s with \"%s\"", desc, d or item) + else + return desc + end + end, +}) + +-- mailbox + +local mailbox_metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, +} + +for i = 1, 7 do + mailbox_metas["giver" .. i] = wrench.META_TYPE_STRING + mailbox_metas["stack" .. i] = wrench.META_TYPE_STRING +end + +wrench.register_node("xdecor:mailbox", { + lists = {"mailbox", "drop"}, + metas = mailbox_metas, + owned = true, +}) + +-- workbench + +wrench.register_node("xdecor:workbench", { + lists = { "tool", "input", "hammer", "forms", "storage" }, + metas = { + infotext = wrench.META_TYPE_STRING, + }, + owned = true, + after_place = function(pos, player, stack) + local timer = minetest.get_node_timer(pos) + timer:start(3.0) + end, +}) From 9e99f5db3184af75cc3472c9ab698320cd3309e5 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:40:47 +0100 Subject: [PATCH 005/130] add pipeworks support [WIP] --- init.lua | 1 + mod.conf | 2 +- nodes/pipeworks.lua | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 nodes/pipeworks.lua diff --git a/init.lua b/init.lua index 1b6b870..29f94be 100644 --- a/init.lua +++ b/init.lua @@ -48,6 +48,7 @@ local mods = { "default", "digtron", "drawers", + "pipeworks", "technic", "technic_chests", "technic_cnc", diff --git a/mod.conf b/mod.conf index 67fde6e..74cb4f6 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,2 @@ name = wrench -optional_depends = bones, connected_chests, default, digtron, drawers, intllib, technic, technic_chests, technic_worldgen, xdecor +optional_depends = bones, connected_chests, default, digtron, drawers, intllib, pipeworks, technic, technic_chests, technic_worldgen, xdecor diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua new file mode 100644 index 0000000..70fe059 --- /dev/null +++ b/nodes/pipeworks.lua @@ -0,0 +1,38 @@ + +-- Register wrench support for pipeworks + +wrench.register_node("pipeworks:autocrafter", { + lists = { "src", "dst", "recipe", "output" }, + metas = { + enabled = wrench.META_TYPE_INT, + channel = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + return meta:get_string("infotext") + end, + after_place = function(pos, player, stack) + local meta = minetest.get_meta(pos) + if meta and meta:get_int("enabled") == 1 then + local timer = minetest.get_node_timer(pos) + timer:start(1) -- craft_time = 1 + end + end, +}) + +local wielder_data = { + lists = { "main" }, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, +} + +-- TODO: convert *_on to *_off nodes before pickpup? +wrench.register_node("pipeworks:deployer_off", wielder_data) +wrench.register_node("pipeworks:deployer_on", wielder_data) + +wrench.register_node("pipeworks:dispenser_off", wielder_data) +wrench.register_node("pipeworks:dispenser_on", wielder_data) From b776d6ec89291ff52fa28b25326ff1c89d05fbc7 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 29 Nov 2021 18:45:05 +0100 Subject: [PATCH 006/130] add "technic:injector" support --- nodes/technic.lua | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nodes/technic.lua b/nodes/technic.lua index 288b857..a831fa8 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -91,3 +91,24 @@ for _, tier in pairs({"LV", "MV", "HV"}) do }) end end + +-- other machines + +wrench.register_node("technic:injector", { + lists = { "main" }, + metas = { + splitstacks = wrench.META_TYPE_INT, + mode = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, + after_place = function(pos, player, stack) + local meta = minetest.get_meta(pos) + local form = meta and meta:get_string("formspec") + -- disabled when formspec contains 'enable' button + if form and string.find(form, "button[4,1;4,1;enable;", 1, true) then + local timer = minetest.get_node_timer(pos) + timer:stop() + end + end, +}) From e67ce4dcc324a9f820e2ba5d5d70a66899e18f80 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 00:01:42 +0100 Subject: [PATCH 007/130] update luacheck --- .luacheckrc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index da8f149..1d1d329 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -3,14 +3,20 @@ allow_defined_top = true max_line_length = 999 globals = { - "technic", "minetest", + "minetest", } read_globals = { - string = {fields = {"split", "trim"}}, - table = {fields = {"copy", "getn"}}, + string = {fields = {"split", "trim"}}, + table = {fields = {"copy", "getn"}}, - "intllib", "ItemStack", "drawers", + -- Minetest + "ItemStack", + + -- Mods + "drawers", + "intllib", + "xdecor", } files["init.lua"].ignore = { "name", "stack" } From 803d39166a233740d32dd565807020aa4e5db6b9 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 00:30:00 +0100 Subject: [PATCH 008/130] update README.md --- README.md | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/README.md b/README.md index 1cc8872..d69a699 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,80 @@ ![](https://github.com/mt-mods/wrench/workflows/luacheck/badge.svg) [![License](https://img.shields.io/badge/license-LGPLv2.0%2B-purple.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html) + + + +# Wrench + + + +The wrench tool allows you to left-click on nodes with inventories to pick them up. + +This mod is a fork from wrench/ in https://github.com/mt-mods/technic + +# Supported Mods and Nodes + +* https://github.com/minetest/minetest_game + - bones:bones + - default:chest + - default:chest_locked + - default:furnace + - default:sign_wall_wood + - default:sign_wall_steel +* https://github.com/HybridDog/connected_chests +* https://github.com/minetest-mods/digtron + - digtron:battery_holder + - digtron:inventory + - digtron:fuelstore + - digtron:combined_storage +* https://github.com/minetest-mods/drawers + - drawers:wood + - drawers:acacia_wood + - drawers:aspen_wood + - drawers:junglewood + - drawers:pine_wood +* https://github.com/mt-mods/pipeworks + - pipeworks:autocrafter + - pipeworks:deployer_* + - pipeworks:dispenser_* +* https://github.com/mt-mods/technic +* https://github.com/minetest-mods/xdecor + - xdecor:cabinet + - xdecor:cabinet_half + - xdecor:empty_shelf + - xdecor:multishelf + - xdecor:cauldron_* + - xdecor:enchantment_table + - xdecor:itemframe + - xdecor:mailbox + +# Settings + +in `minetest.conf` +```ini +# enable recipe for wrench (default: true) +wrench.enable_crafting = true +``` + +# Contributors (originally technic modpack) + +* kpoppel +* Nekogloop +* Nore/Ekdohibs +* ShadowNinja +* VanessaE +* BuckarooBanzay +* OgelGames +* int-ua +* S-S-X +* H-V-Smacker +* groxxda +* SwissalpS +* And many others... + +# License (originally technic modpack) + +Unless otherwise stated, all components of this modpack are licensed under the +LGPL, V2 or later. See also the individual mod folders for their +secondary/alternate licenses, if any. From f646673f074853c76c6dd7e2235c906897347ae4 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 01:25:01 +0100 Subject: [PATCH 009/130] add "pipeworks:nodebreaker_*" support --- README.md | 1 + nodes/pipeworks.lua | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/README.md b/README.md index d69a699..bb105a9 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - pipeworks:autocrafter - pipeworks:deployer_* - pipeworks:dispenser_* + - pipeworks:nodebreaker_* * https://github.com/mt-mods/technic * https://github.com/minetest-mods/xdecor - xdecor:cabinet diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 70fe059..48b573a 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -31,8 +31,14 @@ local wielder_data = { } -- TODO: convert *_on to *_off nodes before pickpup? + wrench.register_node("pipeworks:deployer_off", wielder_data) wrench.register_node("pipeworks:deployer_on", wielder_data) wrench.register_node("pipeworks:dispenser_off", wielder_data) wrench.register_node("pipeworks:dispenser_on", wielder_data) + +table.insert(wielder_data.lists, "pick"); +table.insert(wielder_data.lists, "ghost_pick"); +wrench.register_node("pipeworks:nodebreaker_off", wielder_data) +wrench.register_node("pipeworks:nodebreaker_on", wielder_data) From c0fb5e05f1b51e1828ea2625ce223fa41113705b Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Wed, 1 Dec 2021 02:15:06 +0100 Subject: [PATCH 010/130] Update README.md crafting only in combination with technic modpack https://github.com/mt-mods/wrench/issues/1 --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bb105a9..78091e0 100644 --- a/README.md +++ b/README.md @@ -50,11 +50,10 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - xdecor:itemframe - xdecor:mailbox -# Settings - -in `minetest.conf` +# Settings in `minetest.conf` ```ini -# enable recipe for wrench (default: true) +# Only in combination with technic modpack: +# enable recipe for wrench (default: true) wrench.enable_crafting = true ``` From 2581e19add67fa8764a0b386657d336c6693f41e Mon Sep 17 00:00:00 2001 From: OgelGames Date: Wed, 1 Dec 2021 18:10:08 +1100 Subject: [PATCH 011/130] support node timers --- functions.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/functions.lua b/functions.lua index 78ece2d..d7cc402 100644 --- a/functions.lua +++ b/functions.lua @@ -78,6 +78,16 @@ function wrench.pickup_node(pos, player) data.metas[name] = meta:get_int(name) end end + if def.timer then + local timer = minetest.get_node_timer(pos) + local timeout = timer:get_timeout() + if timeout > 0 then + data.timer = { + timeout = timeout, + elapsed = timer:get_elapsed() + } + end + end local stack = ItemStack(node.name) local item_meta = stack:get_meta() item_meta:set_string("data", minetest.serialize(data)) @@ -121,6 +131,10 @@ function wrench.restore_node(pos, player, stack) meta:set_string(name, value) end end + if data.timer then + local timer = minetest.get_node_timer(pos) + timer:set(data.timer.timeout, data.timer.elapsed) + end if def.after_place then def.after_place(pos, player, stack) end From 93c3806af21b9b4aad37f6b00e149c6e0bbe7a26 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Wed, 1 Dec 2021 18:29:32 +1100 Subject: [PATCH 012/130] adjust craft recipe --- settingtypes.txt | 3 ++- tool.lua | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/settingtypes.txt b/settingtypes.txt index 00989c5..0e545e5 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1 +1,2 @@ -wrench.enable_crafting (enable recipe for wrench) bool true +# Allows the wrench to be crafted if either the 'technic' or 'default' mod is installed. +wrench.enable_crafting (Enable crafting recipe) bool true diff --git a/tool.lua b/tool.lua index cb13fdb..fc70818 100644 --- a/tool.lua +++ b/tool.lua @@ -30,9 +30,18 @@ if minetest.settings:get_bool("wrench.enable_crafting", true) then minetest.register_craft({ output = "wrench:wrench", recipe = { - {"technic:carbon_steel_ingot", "", "technic:carbon_steel_ingot"}, - {"", "technic:carbon_steel_ingot", ""}, - {"", "technic:carbon_steel_ingot", ""} + {"technic:stainless_steel_ingot", "", "technic:stainless_steel_ingot"}, + {"", "technic:stainless_steel_ingot", ""}, + {"", "technic:stainless_steel_ingot", ""} + } + }) + elseif minetest.get_modpath("default") then + minetest.register_craft({ + output = "wrench:wrench", + recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"", "default:steel_ingot", ""}, + {"", "default:steel_ingot", ""} } }) end From 45edd1bd61f70fd24fc16b0c06b7beb9bbf0cb47 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Wed, 1 Dec 2021 19:36:14 +1100 Subject: [PATCH 013/130] fixes --- .luacheckrc | 7 ++----- init.lua | 2 +- mod.conf | 14 +++++++++++++- nodes/bones.lua | 14 +++++++------- nodes/connected_chests.lua | 21 ++++++++++----------- nodes/pipeworks.lua | 18 ++++++------------ nodes/technic.lua | 18 +++++------------- nodes/technic_chests.lua | 30 +++++++++++++++--------------- nodes/xdecor.lua | 27 ++++++++++++--------------- 9 files changed, 71 insertions(+), 80 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 1d1d329..d12dbed 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,14 +1,13 @@ unused_args = false allow_defined_top = true -max_line_length = 999 globals = { "minetest", } read_globals = { - string = {fields = {"split", "trim"}}, - table = {fields = {"copy", "getn"}}, + string = {fields = {"split"}}, + table = {fields = {"copy"}}, -- Minetest "ItemStack", @@ -18,5 +17,3 @@ read_globals = { "intllib", "xdecor", } - -files["init.lua"].ignore = { "name", "stack" } diff --git a/init.lua b/init.lua index 29f94be..c0b73a0 100644 --- a/init.lua +++ b/init.lua @@ -48,7 +48,7 @@ local mods = { "default", "digtron", "drawers", - "pipeworks", + "pipeworks", "technic", "technic_chests", "technic_cnc", diff --git a/mod.conf b/mod.conf index 74cb4f6..e9f6e58 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,14 @@ name = wrench -optional_depends = bones, connected_chests, default, digtron, drawers, intllib, pipeworks, technic, technic_chests, technic_worldgen, xdecor +optional_depends = """ + bones, + connected_chests, + default, + digtron, + drawers, + intllib, + pipeworks, + technic, + technic_chests, + technic_worldgen, + xdecor, +""" diff --git a/nodes/bones.lua b/nodes/bones.lua index 0d5ff01..1b05bd4 100644 --- a/nodes/bones.lua +++ b/nodes/bones.lua @@ -3,11 +3,11 @@ wrench.register_node("bones:bones", { lists = {"main"}, - metas = { - owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, - time = wrench.META_TYPE_INT, - }, - owned = true, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + time = wrench.META_TYPE_INT, + }, + owned = true, }) diff --git a/nodes/connected_chests.lua b/nodes/connected_chests.lua index 76a17f2..1b7d8ad 100644 --- a/nodes/connected_chests.lua +++ b/nodes/connected_chests.lua @@ -11,19 +11,18 @@ wrench.register_node("default:chest_connected_right", { wrench.register_node("default:chest_locked_connected_left", { lists = {"main"}, - metas = { - owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING - }, - owned = true, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING + }, + owned = true, }) wrench.register_node("default:chest_locked_connected_right", { lists = {"main"}, - metas = { - owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING - }, - owned = true, - + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING + }, + owned = true, }) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 48b573a..9a41f9a 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -2,27 +2,21 @@ -- Register wrench support for pipeworks wrench.register_node("pipeworks:autocrafter", { - lists = { "src", "dst", "recipe", "output" }, + lists = {"src", "dst", "recipe", "output"}, metas = { enabled = wrench.META_TYPE_INT, channel = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - description = function(pos, meta, node, player) + description = function(pos, meta, node, player) return meta:get_string("infotext") end, - after_place = function(pos, player, stack) - local meta = minetest.get_meta(pos) - if meta and meta:get_int("enabled") == 1 then - local timer = minetest.get_node_timer(pos) - timer:start(1) -- craft_time = 1 - end - end, + timer = true, }) local wielder_data = { - lists = { "main" }, + lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, @@ -38,7 +32,7 @@ wrench.register_node("pipeworks:deployer_on", wielder_data) wrench.register_node("pipeworks:dispenser_off", wielder_data) wrench.register_node("pipeworks:dispenser_on", wielder_data) -table.insert(wielder_data.lists, "pick"); -table.insert(wielder_data.lists, "ghost_pick"); +table.insert(wielder_data.lists, "pick") +table.insert(wielder_data.lists, "ghost_pick") wrench.register_node("pipeworks:nodebreaker_off", wielder_data) wrench.register_node("pipeworks:nodebreaker_on", wielder_data) diff --git a/nodes/technic.lua b/nodes/technic.lua index a831fa8..f60690c 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -17,8 +17,8 @@ local function register_machine_node(nodename, tier) wrench.register_node(nodename, {lists = lists, metas = metas}) end --- base_machines table row format: name = { extra meta fields } -local defaults = { tiers = {"LV", "MV", "HV"} } +-- base_machines table row format: name = {extra meta fields} +local defaults = {tiers = {"LV", "MV", "HV"}} local base_machines = { electric_furnace = defaults, grinder = defaults, @@ -92,23 +92,15 @@ for _, tier in pairs({"LV", "MV", "HV"}) do end end --- other machines +-- Other machines wrench.register_node("technic:injector", { - lists = { "main" }, + lists = {"main"}, metas = { splitstacks = wrench.META_TYPE_INT, mode = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - after_place = function(pos, player, stack) - local meta = minetest.get_meta(pos) - local form = meta and meta:get_string("formspec") - -- disabled when formspec contains 'enable' button - if form and string.find(form, "button[4,1;4,1;enable;", 1, true) then - local timer = minetest.get_node_timer(pos) - timer:stop() - end - end, + timer = true, }) diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index 9e97b14..277e0d7 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -75,21 +75,21 @@ end -- Register extra nodes with color marking for gold chest local chest_mark_colors = { - '_black', - '_blue', - '_brown', - '_cyan', - '_dark_green', - '_dark_grey', - '_green', - '_grey', - '_magenta', - '_orange', - '_pink', - '_red', - '_violet', - '_white', - '_yellow', + "_black", + "_blue", + "_brown", + "_cyan", + "_dark_green", + "_dark_grey", + "_green", + "_grey", + "_magenta", + "_orange", + "_pink", + "_red", + "_violet", + "_white", + "_yellow", } for i = 1, 15 do diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 8109fd2..2c7660a 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -16,7 +16,7 @@ for _, nodename in pairs(nodes) do }) end --- cauldron +-- Cauldron nodes = { "xdecor:cauldron_empty", @@ -27,7 +27,7 @@ nodes = { local function translated(player, text) local player_name = player:get_player_name() - local lang_code = minetest.get_player_information(player_name).lang_code + local lang_code = minetest.get_player_information(player_name).lang_code return minetest.get_translated_string(lang_code, text) end @@ -45,17 +45,17 @@ for _, nodename in pairs(nodes) do }) end --- enchantment_table +-- Enchantment Table wrench.register_node("xdecor:enchantment_table", { - lists = { "tool", "mese" }, + lists = {"tool", "mese"}, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, }) --- itemframe +-- Item Frame wrench.register_node("xdecor:itemframe", { metas = { @@ -65,7 +65,7 @@ wrench.register_node("xdecor:itemframe", { }, owned = true, after_place = function(pos, player, stack) - -- force item update + -- Force item update local timer = minetest.get_node_timer(pos) timer:start(0) end, @@ -81,7 +81,7 @@ wrench.register_node("xdecor:itemframe", { end, }) --- mailbox +-- Mailbox local mailbox_metas = { owner = wrench.META_TYPE_STRING, @@ -90,8 +90,8 @@ local mailbox_metas = { } for i = 1, 7 do - mailbox_metas["giver" .. i] = wrench.META_TYPE_STRING - mailbox_metas["stack" .. i] = wrench.META_TYPE_STRING + mailbox_metas["giver" .. i] = wrench.META_TYPE_STRING + mailbox_metas["stack" .. i] = wrench.META_TYPE_STRING end wrench.register_node("xdecor:mailbox", { @@ -100,16 +100,13 @@ wrench.register_node("xdecor:mailbox", { owned = true, }) --- workbench +-- Workbench wrench.register_node("xdecor:workbench", { - lists = { "tool", "input", "hammer", "forms", "storage" }, + lists = {"tool", "input", "hammer", "forms", "storage" }, metas = { infotext = wrench.META_TYPE_STRING, }, owned = true, - after_place = function(pos, player, stack) - local timer = minetest.get_node_timer(pos) - timer:start(3.0) - end, + timer = true, }) From ca83ab2166d4794ba97ed8266942c1402224079c Mon Sep 17 00:00:00 2001 From: OgelGames Date: Wed, 1 Dec 2021 20:25:19 +1100 Subject: [PATCH 014/130] `more_chests` support --- init.lua | 1 + nodes/more_chests.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 nodes/more_chests.lua diff --git a/init.lua b/init.lua index c0b73a0..e1d2398 100644 --- a/init.lua +++ b/init.lua @@ -48,6 +48,7 @@ local mods = { "default", "digtron", "drawers", + "more_chests", "pipeworks", "technic", "technic_chests", diff --git a/nodes/more_chests.lua b/nodes/more_chests.lua new file mode 100644 index 0000000..adac115 --- /dev/null +++ b/nodes/more_chests.lua @@ -0,0 +1,40 @@ + +-- Register wrench support for more_chests + +local basic_chests = { + "more_chests:cobble", + "more_chests:dropbox", + "more_chests:fridge", + "more_chests:big_fridge", + "more_chests:secret", + "more_chests:toolbox_acacia", + "more_chests:toolbox_aspen", + "more_chests:toolbox_jungle", + "more_chests:toolbox_pine", + "more_chests:toolbox_steel", + "more_chests:toolbox_wood", +} + +for _,chest in pairs(basic_chests) do + wrench.register_node(chest, { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + }, + owned = true, + }) +end + +-- Shared Chest + +wrench.register_node("more_chests:shared", { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + shared = wrench.META_TYPE_STRING, + }, + owned = true, +}) From 61b3b62a2566a07230d789bf9f15c7094eead034 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 18:41:26 +0100 Subject: [PATCH 015/130] remove the use of translated() --- nodes/xdecor.lua | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 2c7660a..63f33d4 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -25,21 +25,14 @@ nodes = { "xdecor:cauldron_soup", } -local function translated(player, text) - local player_name = player:get_player_name() - local lang_code = minetest.get_player_information(player_name).lang_code - return minetest.get_translated_string(lang_code, text) -end - for _, nodename in pairs(nodes) do wrench.register_node(nodename, { metas = { infotext = wrench.META_TYPE_STRING, }, description = function(pos, meta, node, player) - local str = translated(player, minetest.registered_nodes[node.name].infotext) - local i = string.find(str, "-") - return (i and i > 0) and string.sub(str, 1, i - 1) or str + local desc = minetest.registered_nodes[node.name].description + return desc ~= "" and desc or minetest.registered_nodes[node.name].infotext end, }) From 468ac9c8171227c2777f2e8461363bac44985a7c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 19:12:11 +0100 Subject: [PATCH 016/130] update README.md --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 78091e0..698d2f3 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,14 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - drawers:aspen_wood - drawers:junglewood - drawers:pine_wood +* https://github.com/minetest-mods/more_chests + - more_chests:cobble + - more_chests:dropbox + - more_chests:fridge + - more_chests:big_fridge + - more_chests:shared + - more_chests:secret + - more_chests:toolbox_* * https://github.com/mt-mods/pipeworks - pipeworks:autocrafter - pipeworks:deployer_* @@ -52,8 +60,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic # Settings in `minetest.conf` ```ini -# Only in combination with technic modpack: -# enable recipe for wrench (default: true) +# Allows the wrench to be crafted if either the 'technic' or 'default' mod is installed. wrench.enable_crafting = true ``` From b4063a5b05667f6b27a59faa6b22bc6034f383d0 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 20:23:32 +0100 Subject: [PATCH 017/130] fix node timers --- functions.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/functions.lua b/functions.lua index d7cc402..4bd1aa2 100644 --- a/functions.lua +++ b/functions.lua @@ -81,7 +81,7 @@ function wrench.pickup_node(pos, player) if def.timer then local timer = minetest.get_node_timer(pos) local timeout = timer:get_timeout() - if timeout > 0 then + if timeout then data.timer = { timeout = timeout, elapsed = timer:get_elapsed() @@ -133,7 +133,11 @@ function wrench.restore_node(pos, player, stack) end if data.timer then local timer = minetest.get_node_timer(pos) - timer:set(data.timer.timeout, data.timer.elapsed) + if data.timer.timeout == 0 then + timer:stop() + else + timer:set(data.timer.timeout, data.timer.elapsed) + end end if def.after_place then def.after_place(pos, player, stack) From 545312275104f1e294641a86a08853fffbf2b9ee Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 1 Dec 2021 22:15:33 +0100 Subject: [PATCH 018/130] add "pipeworks:*filter" support --- README.md | 1 + nodes/pipeworks.lua | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/README.md b/README.md index 698d2f3..c2bb681 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - pipeworks:deployer_* - pipeworks:dispenser_* - pipeworks:nodebreaker_* + - pipeworks:*filter * https://github.com/mt-mods/technic * https://github.com/minetest-mods/xdecor - xdecor:cabinet diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 9a41f9a..cd2d1e3 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -36,3 +36,38 @@ table.insert(wielder_data.lists, "pick") table.insert(wielder_data.lists, "ghost_pick") wrench.register_node("pipeworks:nodebreaker_off", wielder_data) wrench.register_node("pipeworks:nodebreaker_on", wielder_data) + +-- Filters + +local filter_data = { + lists = {"main"}, + metas = { + slotseq_mode = wrench.META_TYPE_INT, + slotseq_index = wrench.META_TYPE_INT, + exmatch_mode = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with configuration", desc) + end, +} + +wrench.register_node("pipeworks:filter", filter_data) +wrench.register_node("pipeworks:mese_filter", filter_data) + +filter_data.metas["channel"] = wrench.META_TYPE_STRING +wrench.register_node("pipeworks:digiline_filter", filter_data) + +-- TODO: Tubes + +--[[ +local nodes = { + "pipeworks:teleport_tube", + "pipeworks:mese_tube_000010", + "pipeworks:lua_tube_000000", + "pipeworks:mese_sand_tube_2", +} +]]-- From 23af4f019eca79d0ff0c8f74b88b0d362091ab2c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 04:29:51 +0100 Subject: [PATCH 019/130] if timeout then --- functions.lua | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/functions.lua b/functions.lua index 4bd1aa2..d055d99 100644 --- a/functions.lua +++ b/functions.lua @@ -81,12 +81,10 @@ function wrench.pickup_node(pos, player) if def.timer then local timer = minetest.get_node_timer(pos) local timeout = timer:get_timeout() - if timeout then - data.timer = { - timeout = timeout, - elapsed = timer:get_elapsed() - } - end + data.timer = { + timeout = timeout, + elapsed = timer:get_elapsed() + } end local stack = ItemStack(node.name) local item_meta = stack:get_meta() From 1fe5ea33a6090b6c8afc93694a88eaf36819e7a6 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 2 Dec 2021 14:41:40 +1100 Subject: [PATCH 020/130] `3d_armor_stand` support --- init.lua | 1 + nodes/3d_armor_stand.lua | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 nodes/3d_armor_stand.lua diff --git a/init.lua b/init.lua index e1d2398..53e292d 100644 --- a/init.lua +++ b/init.lua @@ -43,6 +43,7 @@ function wrench.blacklist_item(name) end local mods = { + "3d_armor_stand", "bones", "connected_chests", "default", diff --git a/nodes/3d_armor_stand.lua b/nodes/3d_armor_stand.lua new file mode 100644 index 0000000..5098b19 --- /dev/null +++ b/nodes/3d_armor_stand.lua @@ -0,0 +1,41 @@ + +-- Register wrench support for armor stands + +local def = minetest.registered_nodes["3d_armor_stand:armor_stand"] + +local add_entity_and_node = def and def.after_place_node +local update_entity = def and def.on_metadata_inventory_put + +local lists = { + "armor_head", + "armor_torso", + "armor_legs", + "armor_feet", +} + +local function after_place(pos, player) + add_entity_and_node(pos, player) + update_entity(pos) +end + +local function description(pos, meta, node) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with armor", desc) +end + +wrench.register_node("3d_armor_stand:armor_stand", { + lists = lists, + after_place = after_place, + description = description, +}) + +wrench.register_node("3d_armor_stand:locked_armor_stand", { + lists = lists, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + }, + owned = true, + after_place = after_place, + description = description, +}) From 8cf6a7a5831639d83c5b46f9ad740bc4e58b5c01 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 2 Dec 2021 14:41:45 +1100 Subject: [PATCH 021/130] add missing optional deps --- mod.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mod.conf b/mod.conf index e9f6e58..a148f05 100644 --- a/mod.conf +++ b/mod.conf @@ -1,14 +1,17 @@ name = wrench optional_depends = """ + 3d_armor_stand, bones, connected_chests, default, digtron, drawers, intllib, + more_chests, pipeworks, technic, technic_chests, + technic_cnc, technic_worldgen, xdecor, """ From 56d39bbdf33ebc853485b58142f22d1e409bf446 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 06:11:34 +0100 Subject: [PATCH 022/130] support node drop --- functions.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/functions.lua b/functions.lua index d055d99..a5424e3 100644 --- a/functions.lua +++ b/functions.lua @@ -47,6 +47,11 @@ function wrench.pickup_node(pos, player) return false, errors.owned:format(owner) end end + local drop = def.drop and minetest.registered_nodes[node.name].drop + if drop then + -- drop node name like digging + node.name = drop + end local data = { name = node.name, version = SERIALIZATION_VERSION, From 6a4550bdc072b0cb7397ff9500ee418da6268455 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 06:13:07 +0100 Subject: [PATCH 023/130] drop pipeworks wielder in state "off" like digging --- nodes/pipeworks.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index cd2d1e3..99dc981 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -22,10 +22,10 @@ local wielder_data = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, + -- drop node in state 'off' like digging + drop = true, } --- TODO: convert *_on to *_off nodes before pickpup? - wrench.register_node("pipeworks:deployer_off", wielder_data) wrench.register_node("pipeworks:deployer_on", wielder_data) From d449bda93fd7f9fe4c68547d1cf692aeef76b944 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 08:19:32 +0100 Subject: [PATCH 024/130] add some "pipeworks:*tube*" support --- nodes/pipeworks.lua | 99 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 84 insertions(+), 15 deletions(-) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 99dc981..8ffdd71 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -1,6 +1,17 @@ -- Register wrench support for pipeworks +local desc_ghost_items = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with configuration", desc) +end + +local desc_infotext = function(pos, meta, node, player) + return meta:get_string("infotext") +end + +-- Autocrafter + wrench.register_node("pipeworks:autocrafter", { lists = {"src", "dst", "recipe", "output"}, metas = { @@ -9,9 +20,7 @@ wrench.register_node("pipeworks:autocrafter", { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - description = function(pos, meta, node, player) - return meta:get_string("infotext") - end, + description = desc_infotext, timer = true, }) @@ -49,10 +58,7 @@ local filter_data = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - description = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description - return string.format("%s with configuration", desc) - end, + description = desc_ghost_items, } wrench.register_node("pipeworks:filter", filter_data) @@ -61,13 +67,76 @@ wrench.register_node("pipeworks:mese_filter", filter_data) filter_data.metas["channel"] = wrench.META_TYPE_STRING wrench.register_node("pipeworks:digiline_filter", filter_data) --- TODO: Tubes +-- Tubes (6d style): 'mese_sand_tube' and 'teleport_tube' + +for i = 1, 10 do + wrench.register_node("pipeworks:mese_sand_tube_"..i, { + drop = 1, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + dist = wrench.META_TYPE_INT, + }, + description = desc_infotext, + }) + wrench.register_node("pipeworks:teleport_tube_"..i, { + drop = 1, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + can_receive = wrench.META_TYPE_INT, + }, + description = desc_infotext, + }) +end + +-- Tubes (old style): 'lua_tube' and 'mese_tube' + +local lua_tube_data = { + drop = 1, + metas = { + formspec = wrench.META_TYPE_STRING, + code = wrench.META_TYPE_STRING, + ignore_offevents = wrench.META_TYPE_STRING, + lc_memory = wrench.META_TYPE_STRING, + luac_id = wrench.META_TYPE_INT, + real_portstates = wrench.META_TYPE_INT, + }, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with program", desc) + end, +} ---[[ -local nodes = { - "pipeworks:teleport_tube", - "pipeworks:mese_tube_000010", - "pipeworks:lua_tube_000000", - "pipeworks:mese_sand_tube_2", +local mese_tube_data = { + drop = 1, + lists = {}, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, + description = desc_ghost_items, } -]]-- + +for i = 1, 6 do + mese_tube_data.metas["l"..i.."s"] = wrench.META_TYPE_INT + table.insert(mese_tube_data.lists, "line"..i) +end + +for xm = 0, 1 do +for xp = 0, 1 do +for ym = 0, 1 do +for yp = 0, 1 do +for zm = 0, 1 do +for zp = 0, 1 do + local tname = xm..xp..ym..yp..zm..zp + wrench.register_node("pipeworks:lua_tube"..tname, lua_tube_data) + wrench.register_node("pipeworks:lua_tube"..tname.."_burnt", lua_tube_data) + wrench.register_node("pipeworks:mese_tube_"..tname, mese_tube_data) +end +end +end +end +end +end From 91f9a8a01fe0f07200866e68254406d3a267853a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 21:39:17 +0100 Subject: [PATCH 025/130] `def.drop` can be a string or a boolean --- functions.lua | 17 ++++++++++++----- nodes/pipeworks.lua | 8 ++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/functions.lua b/functions.lua index a5424e3..ecfd79c 100644 --- a/functions.lua +++ b/functions.lua @@ -47,10 +47,18 @@ function wrench.pickup_node(pos, player) return false, errors.owned:format(owner) end end - local drop = def.drop and minetest.registered_nodes[node.name].drop - if drop then + -- TODO: Move handling for 'def.drop' to wrench.register_node()? + -- Unsupported types are then already noticed when registering + if type(def.drop) == "string" then + node.name = def.drop + elseif type(def.drop) == "boolean" then -- drop node name like digging - node.name = drop + local drop = def.drop and minetest.registered_nodes[node.name].drop + if type(drop) == "string" then + node.name = drop + end + elseif def.drop then + minetest.log("warning", "wrench.pickup_node '"..node.name.."' invalid type for def.drop") end local data = { name = node.name, @@ -85,9 +93,8 @@ function wrench.pickup_node(pos, player) end if def.timer then local timer = minetest.get_node_timer(pos) - local timeout = timer:get_timeout() data.timer = { - timeout = timeout, + timeout = timer:get_timeout(), elapsed = timer:get_elapsed() } end diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 8ffdd71..ada6480 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -71,7 +71,7 @@ wrench.register_node("pipeworks:digiline_filter", filter_data) for i = 1, 10 do wrench.register_node("pipeworks:mese_sand_tube_"..i, { - drop = 1, + drop = true, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -80,7 +80,7 @@ for i = 1, 10 do description = desc_infotext, }) wrench.register_node("pipeworks:teleport_tube_"..i, { - drop = 1, + drop = true, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -94,7 +94,7 @@ end -- Tubes (old style): 'lua_tube' and 'mese_tube' local lua_tube_data = { - drop = 1, + drop = true, metas = { formspec = wrench.META_TYPE_STRING, code = wrench.META_TYPE_STRING, @@ -110,7 +110,7 @@ local lua_tube_data = { } local mese_tube_data = { - drop = 1, + drop = true, lists = {}, metas = { infotext = wrench.META_TYPE_STRING, From 166d073da81911a2cc3f256498ac23255af30c17 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 22:36:28 +0100 Subject: [PATCH 026/130] nodes/pipeworks.lua bugfix: call pipeworks.after_place() to connect (with) tubes correctly --- nodes/pipeworks.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index ada6480..269a7f9 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -13,6 +13,7 @@ end -- Autocrafter wrench.register_node("pipeworks:autocrafter", { + after_place = pipeworks.after_place, lists = {"src", "dst", "recipe", "output"}, metas = { enabled = wrench.META_TYPE_INT, @@ -25,6 +26,7 @@ wrench.register_node("pipeworks:autocrafter", { }) local wielder_data = { + after_place = pipeworks.after_place, lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -49,6 +51,7 @@ wrench.register_node("pipeworks:nodebreaker_on", wielder_data) -- Filters local filter_data = { + after_place = pipeworks.after_place, lists = {"main"}, metas = { slotseq_mode = wrench.META_TYPE_INT, @@ -72,6 +75,7 @@ wrench.register_node("pipeworks:digiline_filter", filter_data) for i = 1, 10 do wrench.register_node("pipeworks:mese_sand_tube_"..i, { drop = true, + after_place = pipeworks.after_place, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -81,6 +85,7 @@ for i = 1, 10 do }) wrench.register_node("pipeworks:teleport_tube_"..i, { drop = true, + after_place = pipeworks.after_place, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -95,6 +100,7 @@ end local lua_tube_data = { drop = true, + after_place = pipeworks.after_place, metas = { formspec = wrench.META_TYPE_STRING, code = wrench.META_TYPE_STRING, @@ -111,6 +117,7 @@ local lua_tube_data = { local mese_tube_data = { drop = true, + after_place = pipeworks.after_place, lists = {}, metas = { infotext = wrench.META_TYPE_STRING, @@ -124,6 +131,8 @@ for i = 1, 6 do table.insert(mese_tube_data.lists, "line"..i) end +wrench.register_node("pipeworks:lua_tube_burnt", lua_tube_data) + for xm = 0, 1 do for xp = 0, 1 do for ym = 0, 1 do @@ -132,7 +141,6 @@ for zm = 0, 1 do for zp = 0, 1 do local tname = xm..xp..ym..yp..zm..zp wrench.register_node("pipeworks:lua_tube"..tname, lua_tube_data) - wrench.register_node("pipeworks:lua_tube"..tname.."_burnt", lua_tube_data) wrench.register_node("pipeworks:mese_tube_"..tname, mese_tube_data) end end From f73a8da001d9f4d10bd37b05bd34a9064ea66ecc Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Thu, 2 Dec 2021 22:39:09 +0100 Subject: [PATCH 027/130] update luacheck --- .luacheckrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.luacheckrc b/.luacheckrc index d12dbed..b577ab1 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -15,5 +15,6 @@ read_globals = { -- Mods "drawers", "intllib", + "pipeworks", "xdecor", } From 26aa3a30772a2e502a354820b22acf7a28f45b97 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 3 Dec 2021 14:10:18 +1100 Subject: [PATCH 028/130] move handling for `def.drop` to `wrench.register_node()` --- functions.lua | 12 +----------- init.lua | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/functions.lua b/functions.lua index ecfd79c..c8ad561 100644 --- a/functions.lua +++ b/functions.lua @@ -47,18 +47,8 @@ function wrench.pickup_node(pos, player) return false, errors.owned:format(owner) end end - -- TODO: Move handling for 'def.drop' to wrench.register_node()? - -- Unsupported types are then already noticed when registering - if type(def.drop) == "string" then + if def.drop then node.name = def.drop - elseif type(def.drop) == "boolean" then - -- drop node name like digging - local drop = def.drop and minetest.registered_nodes[node.name].drop - if type(drop) == "string" then - node.name = drop - end - elseif def.drop then - minetest.log("warning", "wrench.pickup_node '"..node.name.."' invalid type for def.drop") end local data = { name = node.name, diff --git a/init.lua b/init.lua index 53e292d..a3b7ba9 100644 --- a/init.lua +++ b/init.lua @@ -18,7 +18,6 @@ function wrench.register_node(name, def) assert(type(def) == "table", "wrench.register_node invalid type for def") local node_def = minetest.registered_nodes[name] if node_def then - wrench.registered_nodes[name] = table.copy(def) local old_after_place = node_def.after_place_node minetest.override_item(name, { after_place_node = function(...) @@ -27,6 +26,20 @@ function wrench.register_node(name, def) end end }) + def = table.copy(def) + if def.drop == true and type(node_def.drop) == "string" then + def.drop = node_def.drop + elseif def.drop and type(def.drop) ~= "string" then + minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) + def.drop = nil + end + if def.drop and not wrench.registered_nodes[def.drop] then + if def.drop ~= name then + minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) + end + def.drop = nil + end + wrench.registered_nodes[name] = def else minetest.log("warning", "Attempt to register unknown node for wrench: "..name) end From 42c6585e8ebe3682c1f9269548bd5c1b62dea7f2 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 3 Dec 2021 16:53:36 +1100 Subject: [PATCH 029/130] add `def.after_pickup` and always update tube nodes --- functions.lua | 11 +++++++++++ nodes/pipeworks.lua | 7 ------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/functions.lua b/functions.lua index c8ad561..9bc0b79 100644 --- a/functions.lua +++ b/functions.lua @@ -3,6 +3,8 @@ local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end local SERIALIZATION_VERSION = 1 +local has_pipeworks = minetest.get_modpath("pipeworks") + local errors = { owned = S("Cannot pickup node. Owned by %s."), full_inv = S("Not enough room in inventory to pickup node."), @@ -101,6 +103,12 @@ function wrench.pickup_node(pos, player) end player_inv:add_item("main", stack) minetest.remove_node(pos) + if def.after_pickup then + def.after_pickup(pos, node, meta:to_table(), player) + end + if has_pipeworks and minetest.registered_nodes[node.name].tube then + pipeworks.after_dig(pos) + end return true end @@ -142,5 +150,8 @@ function wrench.restore_node(pos, player, stack) if def.after_place then def.after_place(pos, player, stack) end + if has_pipeworks and minetest.registered_nodes[data.name].tube then + pipeworks.after_place(pos) + end return true end diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 269a7f9..c140ae0 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -13,7 +13,6 @@ end -- Autocrafter wrench.register_node("pipeworks:autocrafter", { - after_place = pipeworks.after_place, lists = {"src", "dst", "recipe", "output"}, metas = { enabled = wrench.META_TYPE_INT, @@ -26,7 +25,6 @@ wrench.register_node("pipeworks:autocrafter", { }) local wielder_data = { - after_place = pipeworks.after_place, lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -51,7 +49,6 @@ wrench.register_node("pipeworks:nodebreaker_on", wielder_data) -- Filters local filter_data = { - after_place = pipeworks.after_place, lists = {"main"}, metas = { slotseq_mode = wrench.META_TYPE_INT, @@ -75,7 +72,6 @@ wrench.register_node("pipeworks:digiline_filter", filter_data) for i = 1, 10 do wrench.register_node("pipeworks:mese_sand_tube_"..i, { drop = true, - after_place = pipeworks.after_place, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -85,7 +81,6 @@ for i = 1, 10 do }) wrench.register_node("pipeworks:teleport_tube_"..i, { drop = true, - after_place = pipeworks.after_place, metas = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, @@ -100,7 +95,6 @@ end local lua_tube_data = { drop = true, - after_place = pipeworks.after_place, metas = { formspec = wrench.META_TYPE_STRING, code = wrench.META_TYPE_STRING, @@ -117,7 +111,6 @@ local lua_tube_data = { local mese_tube_data = { drop = true, - after_place = pipeworks.after_place, lists = {}, metas = { infotext = wrench.META_TYPE_STRING, From 62f05cb80f928dc2fb188f49a73cf1df173ff40d Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 3 Dec 2021 17:00:32 +1100 Subject: [PATCH 030/130] move api functions to api.lua --- api.lua | 42 ++++++++++++++++++++++++++++++++++++++++++ init.lua | 43 +------------------------------------------ 2 files changed, 43 insertions(+), 42 deletions(-) create mode 100644 api.lua diff --git a/api.lua b/api.lua new file mode 100644 index 0000000..0e83388 --- /dev/null +++ b/api.lua @@ -0,0 +1,42 @@ + +function wrench.register_node(name, def) + assert(type(name) == "string", "wrench.register_node invalid type for name") + assert(type(def) == "table", "wrench.register_node invalid type for def") + local node_def = minetest.registered_nodes[name] + if node_def then + local old_after_place = node_def.after_place_node + minetest.override_item(name, { + after_place_node = function(...) + if not wrench.restore_node(...) and old_after_place then + return old_after_place(...) + end + end + }) + def = table.copy(def) + if def.drop == true and type(node_def.drop) == "string" then + def.drop = node_def.drop + elseif def.drop and type(def.drop) ~= "string" then + minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) + def.drop = nil + end + if def.drop and not wrench.registered_nodes[def.drop] then + if def.drop ~= name then + minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) + end + def.drop = nil + end + wrench.registered_nodes[name] = def + else + minetest.log("warning", "Attempt to register unknown node for wrench: "..name) + end +end + +function wrench.blacklist_item(name) + assert(type(name) == "string", "wrench:blacklist_item invalid type for name") + local node_def = minetest.registered_items[name] + if node_def then + wrench.blacklisted_items[name] = true + else + minetest.log("warning", "Attempt to blacklist unknown item for wrench: "..name) + end +end diff --git a/init.lua b/init.lua index a3b7ba9..bb75942 100644 --- a/init.lua +++ b/init.lua @@ -12,48 +12,7 @@ wrench = { dofile(modpath.."/legacy.lua") dofile(modpath.."/functions.lua") dofile(modpath.."/tool.lua") - -function wrench.register_node(name, def) - assert(type(name) == "string", "wrench.register_node invalid type for name") - assert(type(def) == "table", "wrench.register_node invalid type for def") - local node_def = minetest.registered_nodes[name] - if node_def then - local old_after_place = node_def.after_place_node - minetest.override_item(name, { - after_place_node = function(...) - if not wrench.restore_node(...) and old_after_place then - return old_after_place(...) - end - end - }) - def = table.copy(def) - if def.drop == true and type(node_def.drop) == "string" then - def.drop = node_def.drop - elseif def.drop and type(def.drop) ~= "string" then - minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) - def.drop = nil - end - if def.drop and not wrench.registered_nodes[def.drop] then - if def.drop ~= name then - minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) - end - def.drop = nil - end - wrench.registered_nodes[name] = def - else - minetest.log("warning", "Attempt to register unknown node for wrench: "..name) - end -end - -function wrench.blacklist_item(name) - assert(type(name) == "string", "wrench:blacklist_item invalid type for name") - local node_def = minetest.registered_items[name] - if node_def then - wrench.blacklisted_items[name] = true - else - minetest.log("warning", "Attempt to blacklist unknown item for wrench: "..name) - end -end +dofile(modpath.."/api.lua") local mods = { "3d_armor_stand", From 25a0965e7e9eb7b6737f05d2cbd6035890e604d1 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 3 Dec 2021 17:12:04 +1100 Subject: [PATCH 031/130] little code fixes --- .luacheckrc | 2 +- legacy.lua | 2 +- nodes/drawers.lua | 22 +++++++++++----------- nodes/more_chests.lua | 2 +- nodes/pipeworks.lua | 1 - nodes/technic.lua | 5 ++--- nodes/xdecor.lua | 7 +++---- 7 files changed, 19 insertions(+), 22 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index b577ab1..a3f100d 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -15,6 +15,6 @@ read_globals = { -- Mods "drawers", "intllib", - "pipeworks", + "pipeworks", "xdecor", } diff --git a/legacy.lua b/legacy.lua index 01b2c07..abef66e 100644 --- a/legacy.lua +++ b/legacy.lua @@ -119,7 +119,7 @@ local all_nodes = { for mod, nodes in pairs(all_nodes) do if minetest.get_modpath(mod) then - for _,n in pairs(nodes) do + for _, n in pairs(nodes) do minetest.register_alias("wrench:picked_up_"..n:gsub(":", "_"), n) end end diff --git a/nodes/drawers.lua b/nodes/drawers.lua index e5c4e85..5990993 100644 --- a/nodes/drawers.lua +++ b/nodes/drawers.lua @@ -20,17 +20,17 @@ for _, drawer_type in ipairs({1, 2, 4}) do suffix = i end - def.metas["name" .. suffix] = STRING - def.metas["count" .. suffix] = INT - def.metas["max_count" .. suffix] = INT - def.metas["base_stack_max" .. suffix] = INT - def.metas["entity_infotext" .. suffix] = STRING - def.metas["stack_max_factor" .. suffix] = INT + def.metas["name"..suffix] = STRING + def.metas["count"..suffix] = INT + def.metas["max_count"..suffix] = INT + def.metas["base_stack_max"..suffix] = INT + def.metas["entity_infotext"..suffix] = STRING + def.metas["stack_max_factor"..suffix] = INT end - wrench.register_node("drawers:wood" .. drawer_type, def) - wrench.register_node("drawers:acacia_wood" .. drawer_type, def) - wrench.register_node("drawers:aspen_wood" .. drawer_type, def) - wrench.register_node("drawers:junglewood" .. drawer_type, def) - wrench.register_node("drawers:pine_wood" .. drawer_type, def) + wrench.register_node("drawers:wood"..drawer_type, def) + wrench.register_node("drawers:acacia_wood"..drawer_type, def) + wrench.register_node("drawers:aspen_wood"..drawer_type, def) + wrench.register_node("drawers:junglewood"..drawer_type, def) + wrench.register_node("drawers:pine_wood"..drawer_type, def) end diff --git a/nodes/more_chests.lua b/nodes/more_chests.lua index adac115..dee69a5 100644 --- a/nodes/more_chests.lua +++ b/nodes/more_chests.lua @@ -15,7 +15,7 @@ local basic_chests = { "more_chests:toolbox_wood", } -for _,chest in pairs(basic_chests) do +for _, chest in pairs(basic_chests) do wrench.register_node(chest, { lists = {"main"}, metas = { diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index c140ae0..c228423 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -31,7 +31,6 @@ local wielder_data = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - -- drop node in state 'off' like digging drop = true, } diff --git a/nodes/technic.lua b/nodes/technic.lua index f60690c..14ec5bb 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -17,8 +17,8 @@ local function register_machine_node(nodename, tier) wrench.register_node(nodename, {lists = lists, metas = metas}) end --- base_machines table row format: name = {extra meta fields} local defaults = {tiers = {"LV", "MV", "HV"}} + local base_machines = { electric_furnace = defaults, grinder = defaults, @@ -30,7 +30,7 @@ local base_machines = { } for name, data in pairs(base_machines) do - for _,tier in ipairs(data.tiers) do + for _, tier in ipairs(data.tiers) do local nodename = "technic:"..tier:lower().."_"..name register_machine_node(nodename, tier) if minetest.registered_nodes[nodename.."_active"] then @@ -39,7 +39,6 @@ for name, data in pairs(base_machines) do end end ---------------------------------------------------------------------- -- Special nodes wrench.register_node("technic:coal_alloy_furnace", { diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 63f33d4..31861dd 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -34,7 +34,6 @@ for _, nodename in pairs(nodes) do local desc = minetest.registered_nodes[node.name].description return desc ~= "" and desc or minetest.registered_nodes[node.name].infotext end, - }) end @@ -83,8 +82,8 @@ local mailbox_metas = { } for i = 1, 7 do - mailbox_metas["giver" .. i] = wrench.META_TYPE_STRING - mailbox_metas["stack" .. i] = wrench.META_TYPE_STRING + mailbox_metas["giver"..i] = wrench.META_TYPE_STRING + mailbox_metas["stack"..i] = wrench.META_TYPE_STRING end wrench.register_node("xdecor:mailbox", { @@ -96,7 +95,7 @@ wrench.register_node("xdecor:mailbox", { -- Workbench wrench.register_node("xdecor:workbench", { - lists = {"tool", "input", "hammer", "forms", "storage" }, + lists = {"tool", "input", "hammer", "forms", "storage"}, metas = { infotext = wrench.META_TYPE_STRING, }, From 5992fe1ac3558555752d41b1a1a1da8cc85fdab1 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 3 Dec 2021 17:13:47 +1100 Subject: [PATCH 032/130] `biofuel` refinery support --- init.lua | 1 + mod.conf | 1 + nodes/biofuel.lua | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 nodes/biofuel.lua diff --git a/init.lua b/init.lua index bb75942..5c40ccb 100644 --- a/init.lua +++ b/init.lua @@ -16,6 +16,7 @@ dofile(modpath.."/api.lua") local mods = { "3d_armor_stand", + "biofuel", "bones", "connected_chests", "default", diff --git a/mod.conf b/mod.conf index a148f05..88cd213 100644 --- a/mod.conf +++ b/mod.conf @@ -1,6 +1,7 @@ name = wrench optional_depends = """ 3d_armor_stand, + biofuel, bones, connected_chests, default, diff --git a/nodes/biofuel.lua b/nodes/biofuel.lua new file mode 100644 index 0000000..c4845b7 --- /dev/null +++ b/nodes/biofuel.lua @@ -0,0 +1,21 @@ + +-- Register wrench support for biofuel refinery + +wrench.register_node("biofuel:refinery", { + lists = {"src", "dst"}, + metas = { + infotext = wrench.META_TYPE_STRING, + progress = wrench.META_TYPE_INT, + }, + timer = true, +}) + +wrench.register_node("biofuel:refinery_active", { + lists = {"src", "dst"}, + metas = { + infotext = wrench.META_TYPE_STRING, + progress = wrench.META_TYPE_INT, + }, + timer = true, + drop = "biofuel:refinery", +}) From b90694e451b983acbd1e8924a3e611d81c5a24fd Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 16:28:35 +0100 Subject: [PATCH 033/130] add setting wrench.enable_debug (very experimental) --- debug.lua | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ init.lua | 4 +++ settingtypes.txt | 3 ++ 3 files changed, 82 insertions(+) create mode 100644 debug.lua diff --git a/debug.lua b/debug.lua new file mode 100644 index 0000000..20b22f8 --- /dev/null +++ b/debug.lua @@ -0,0 +1,75 @@ + +local get_keys = function(list) + local keys = {} + for k, _ in pairs(list) do + keys[#keys+1] = k + end + return keys +end + +local orig_wrench_pickup_node = wrench.pickup_node +wrench.pickup_node = function(pos, player) + if not player:get_player_control().sneak then + return orig_wrench_pickup_node(pos, player) + end + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + print("wrench.register_node(\"" .. node.name .. "\", {"); + -- timer + local timer = minetest.get_node_timer(pos) + if timer:get_timeout() ~= 0 then + print("\ttimer = true,") + end + -- drop + if def.drop then + if type(def.drop) ~= "string" then + print("\t-- has drop " .. type(def.drop) .. "!") + elseif def.drop == node.name or def.drop == node.name .. " 1" then + print("\t-- drop = \"" .. def.drop .. "\",") + else + print("\tdrop = \"" .. def.drop .. "\",") + end + end + if def.after_place_node then + print("\t-- has after_place " .. type(def.after_place_node)) + end + if def.after_dig_node then + print("\t-- has after_dig " .. type(def.after_dig_node)) + end + local meta = minetest.get_meta(pos) + -- owner + local owner = meta:get_string("owner") + if owner and owner ~= "" then + print("\towner = true, -- '" .. owner .. "' FIXME:?") + end + -- lists + local inventory = meta:get_inventory() +-- print(dump(inventory)) + local lists = get_keys(inventory:get_lists()) + if #lists > 0 then + print("\tlists = {\"" .. table.concat(lists, "\", \"") .. "\"},") + end + -- metas + local metatable = meta:to_table() + local metas = get_keys(metatable.fields) +-- print(dump(metatable)) + if #metas > 0 then + print("\tmetas = {") + for k, v in pairs(metatable.fields) do + local t = "--[[FIXME:!]]--" + if meta:get_int(k) .. "" == v .. "" then + t = "wrench.META_TYPE_INT" + elseif meta:get_float(k) .. "" == v .. "" then + t = "wrench.META_TYPE_FLOAT" + elseif meta:get_string(k) == v then + t = "wrench.META_TYPE_STRING" + end + local x = (k ~= "infotext" and k ~= "formspec") and + (" -- " .. v) or "" + print("\t\t" .. k .. " = " .. t .. "," .. x) + end + print("\t},") + end + print("})") +end + diff --git a/init.lua b/init.lua index 5c40ccb..c5430f2 100644 --- a/init.lua +++ b/init.lua @@ -35,3 +35,7 @@ for _, modname in pairs(mods) do dofile(modpath.."/nodes/"..modname..".lua") end end + +if minetest.settings:get_bool("wrench.enable_debug", false) then + dofile(modpath.."/debug.lua") +end diff --git a/settingtypes.txt b/settingtypes.txt index 0e545e5..010d590 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -1,2 +1,5 @@ # Allows the wrench to be crafted if either the 'technic' or 'default' mod is installed. wrench.enable_crafting (Enable crafting recipe) bool true + +# Shows debug info in the console when the wrench is used with 'sneak' (very experimental) +wrench.enable_debug (Shows debug info) bool false From 538488f851b485d14edc152e28d70c0ff48eb520 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 16:32:23 +0100 Subject: [PATCH 034/130] add `xdecor:hive` support --- nodes/xdecor.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 31861dd..49b3794 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -47,6 +47,17 @@ wrench.register_node("xdecor:enchantment_table", { }, }) +-- Hive + +wrench.register_node("xdecor:hive", { + timer = true, + lists = {"honey"}, + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + }, +}) + -- Item Frame wrench.register_node("xdecor:itemframe", { From 179ac80f0fdfe0b0f4069d52f2bb2d0be6991328 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 16:37:26 +0100 Subject: [PATCH 035/130] add `bees:hive_wild` support --- init.lua | 1 + nodes/bees.lua | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 nodes/bees.lua diff --git a/init.lua b/init.lua index c5430f2..241facc 100644 --- a/init.lua +++ b/init.lua @@ -16,6 +16,7 @@ dofile(modpath.."/api.lua") local mods = { "3d_armor_stand", + "bees", "biofuel", "bones", "connected_chests", diff --git a/nodes/bees.lua b/nodes/bees.lua new file mode 100644 index 0000000..19fc42a --- /dev/null +++ b/nodes/bees.lua @@ -0,0 +1,10 @@ + +-- Register wrench support for bees + +wrench.register_node("bees:hive_wild", { + timer = true, + lists = {"combs", "queen"}, + metas = { + agressive = wrench.META_TYPE_INT, + }, +}) From bfba1b84a0214855de9b71ed17bad67c172a4aa3 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 16:40:13 +0100 Subject: [PATCH 036/130] add `vessels:shelf` support --- init.lua | 1 + nodes/vessels.lua | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 nodes/vessels.lua diff --git a/init.lua b/init.lua index 241facc..a483e7b 100644 --- a/init.lua +++ b/init.lua @@ -28,6 +28,7 @@ local mods = { "technic", "technic_chests", "technic_cnc", + "vessels", "xdecor", } diff --git a/nodes/vessels.lua b/nodes/vessels.lua new file mode 100644 index 0000000..1aeb416 --- /dev/null +++ b/nodes/vessels.lua @@ -0,0 +1,10 @@ + +-- Register wrench support for vessels + +wrench.register_node("vessels:shelf", { + lists = { "vessels" }, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, +}) From aaf97772ccb0ed5b038d5406f8f0e6c2b8229639 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 19:04:26 +0100 Subject: [PATCH 037/130] add `mesecons` support (WIP) --- init.lua | 1 + nodes/mesecons.lua | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 nodes/mesecons.lua diff --git a/init.lua b/init.lua index a483e7b..cac5439 100644 --- a/init.lua +++ b/init.lua @@ -23,6 +23,7 @@ local mods = { "default", "digtron", "drawers", + "mesecons", "more_chests", "pipeworks", "technic", diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua new file mode 100644 index 0000000..49670ff --- /dev/null +++ b/nodes/mesecons.lua @@ -0,0 +1,80 @@ + +-- Register wrench support for mesecons + +-- TODO: update neighboring mesecons:wire or nodes (via after_dig_node?) + +local function register_node_on_off(name, def) + wrench.register_node(name .. "_off", def) + def.drop = true + wrench.register_node(name .. "_on", def) +end + +-- Commandblock + +register_node_on_off("mesecons_commandblock:commandblock", { + -- ignore after_place function: sets owner + owner = true, + metas = { + infotext = wrench.META_TYPE_STRING, + commands = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + owner = wrench.META_TYPE_STRING, + }, +}) + +-- Detectors + +register_node_on_off("mesecons_detector:node_detector", { + metas = { + formspec = wrench.META_TYPE_STRING, + distance = wrench.META_TYPE_STRING, + digiline_channel = wrench.META_TYPE_STRING, + scanname = wrench.META_TYPE_STRING, + }, +}) + +register_node_on_off("mesecons_detector:object_detector", { + metas = { + formspec = wrench.META_TYPE_STRING, + digiline_channel = wrench.META_TYPE_STRING, + scanname = wrench.META_TYPE_STRING, + }, +}) + +-- Controllers + +local luacontroller_defs = { + drop = true, + metas = { + code = wrench.META_TYPE_STRING, + lc_memory = wrench.META_TYPE_STRING, + luac_id = wrench.META_TYPE_INT, + formspec = wrench.META_TYPE_STRING, + real_portstates = wrench.META_TYPE_INT, + }, +} + +for a = 0, 1 do +for b = 0, 1 do +for c = 0, 1 do +for d = 0, 1 do + local state = d .. c .. b .. a + wrench.register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) + + wrench.register_node("mesecons_microcontroller:microcontroller" .. state, { + drop = "mesecons_microcontroller:microcontroller0000", + metas = { + infotext = wrench.META_TYPE_STRING, + code = wrench.META_TYPE_STRING, + afterid = wrench.META_TYPE_INT, + eeprom = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + real_portstates = wrench.META_TYPE_INT, + }, + }) +end +end +end +end + +wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) From 3cc3fafcbaf9d64cfaff1bae68df408f2f6e1606 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 20:43:46 +0100 Subject: [PATCH 038/130] fix mesecons disconnection --- functions.lua | 11 ++++++----- nodes/mesecons.lua | 2 -- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/functions.lua b/functions.lua index 9bc0b79..27d8b8d 100644 --- a/functions.lua +++ b/functions.lua @@ -4,6 +4,7 @@ local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end local SERIALIZATION_VERSION = 1 local has_pipeworks = minetest.get_modpath("pipeworks") +local has_mesecons = minetest.get_modpath("mesecons") local errors = { owned = S("Cannot pickup node. Owned by %s."), @@ -49,11 +50,8 @@ function wrench.pickup_node(pos, player) return false, errors.owned:format(owner) end end - if def.drop then - node.name = def.drop - end local data = { - name = node.name, + name = def.drop or node.name, version = SERIALIZATION_VERSION, lists = {}, metas = {}, @@ -90,7 +88,7 @@ function wrench.pickup_node(pos, player) elapsed = timer:get_elapsed() } end - local stack = ItemStack(node.name) + local stack = ItemStack(def.drop or node.name) local item_meta = stack:get_meta() item_meta:set_string("data", minetest.serialize(data)) item_meta:set_string("description", get_description(def, pos, meta, node, player)) @@ -109,6 +107,9 @@ function wrench.pickup_node(pos, player) if has_pipeworks and minetest.registered_nodes[node.name].tube then pipeworks.after_dig(pos) end + if has_mesecons and minetest.registered_nodes[node.name].mesecons then + mesecon.on_dignode(pos, node) + end return true end diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index 49670ff..f4441eb 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -1,8 +1,6 @@ -- Register wrench support for mesecons --- TODO: update neighboring mesecons:wire or nodes (via after_dig_node?) - local function register_node_on_off(name, def) wrench.register_node(name .. "_off", def) def.drop = true From 15a472998c2e9ae69e043a187599748b4fae2036 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 20:47:52 +0100 Subject: [PATCH 039/130] update luacheck --- .luacheckrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.luacheckrc b/.luacheckrc index a3f100d..01e87e5 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -15,6 +15,7 @@ read_globals = { -- Mods "drawers", "intllib", + "mesecon", "pipeworks", "xdecor", } From 836ab3f20b22e241bc1640a6b35b86a3e1ee9d8f Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 22:46:24 +0100 Subject: [PATCH 040/130] add `digilines` support --- .luacheckrc | 3 ++- functions.lua | 4 ++++ init.lua | 1 + nodes/digilines.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 nodes/digilines.lua diff --git a/.luacheckrc b/.luacheckrc index 01e87e5..249a8ef 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -13,9 +13,10 @@ read_globals = { "ItemStack", -- Mods + "digilines", "drawers", "intllib", - "mesecon", + "mesecon", "pipeworks", "xdecor", } diff --git a/functions.lua b/functions.lua index 27d8b8d..7b9d2db 100644 --- a/functions.lua +++ b/functions.lua @@ -5,6 +5,7 @@ local SERIALIZATION_VERSION = 1 local has_pipeworks = minetest.get_modpath("pipeworks") local has_mesecons = minetest.get_modpath("mesecons") +local has_digilines = minetest.get_modpath("digilines") local errors = { owned = S("Cannot pickup node. Owned by %s."), @@ -110,6 +111,9 @@ function wrench.pickup_node(pos, player) if has_mesecons and minetest.registered_nodes[node.name].mesecons then mesecon.on_dignode(pos, node) end + if has_digilines and digilines.getspec(node) then + digilines.update_autoconnect(pos) + end return true end diff --git a/init.lua b/init.lua index cac5439..d0f0215 100644 --- a/init.lua +++ b/init.lua @@ -21,6 +21,7 @@ local mods = { "bones", "connected_chests", "default", + "digilines", "digtron", "drawers", "mesecons", diff --git a/nodes/digilines.lua b/nodes/digilines.lua new file mode 100644 index 0000000..b52c8f1 --- /dev/null +++ b/nodes/digilines.lua @@ -0,0 +1,40 @@ + +-- Register wrench support for digilines + +local desc_channel = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s channel: %s", desc, meta:get_string("channel") or "") +end + +wrench.register_node("digilines:chest", { + lists = {"main"}, + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digilines:lightsensor", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, + description = desc_channel, +}) + +wrench.register_node("digilines:rtc", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, + description = desc_channel, +}) + +wrench.register_node("digilines:lcd", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, + description = desc_channel, +}) From c4ba022cbdbaf96e510201088b975ad9aba31520 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 3 Dec 2021 22:49:30 +0100 Subject: [PATCH 041/130] add `mobs:spawner` support --- init.lua | 1 + nodes/mobs.lua | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 nodes/mobs.lua diff --git a/init.lua b/init.lua index d0f0215..cd6b17c 100644 --- a/init.lua +++ b/init.lua @@ -25,6 +25,7 @@ local mods = { "digtron", "drawers", "mesecons", + "mobs", "more_chests", "pipeworks", "technic", diff --git a/nodes/mobs.lua b/nodes/mobs.lua new file mode 100644 index 0000000..6d25658 --- /dev/null +++ b/nodes/mobs.lua @@ -0,0 +1,13 @@ + +-- Register wrench support for mobs_redo + +wrench.register_node("mobs:spawner", { + metas = { + command = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + return meta:get_string("infotext") + end, +}) From 3878f16d200320fbccf67ea95b3e2cce7861896d Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sat, 4 Dec 2021 16:39:31 +1100 Subject: [PATCH 042/130] also update connections on place --- functions.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/functions.lua b/functions.lua index 7b9d2db..9c294f5 100644 --- a/functions.lua +++ b/functions.lua @@ -105,13 +105,14 @@ function wrench.pickup_node(pos, player) if def.after_pickup then def.after_pickup(pos, node, meta:to_table(), player) end - if has_pipeworks and minetest.registered_nodes[node.name].tube then + local node_def = minetest.registered_nodes[node.name] + if has_pipeworks and node_def.tube then pipeworks.after_dig(pos) end - if has_mesecons and minetest.registered_nodes[node.name].mesecons then + if has_mesecons and node_def.mesecons then mesecon.on_dignode(pos, node) end - if has_digilines and digilines.getspec(node) then + if has_digilines and node_def.digiline or node_def.digilines then digilines.update_autoconnect(pos) end return true @@ -155,8 +156,15 @@ function wrench.restore_node(pos, player, stack) if def.after_place then def.after_place(pos, player, stack) end - if has_pipeworks and minetest.registered_nodes[data.name].tube then + local node_def = minetest.registered_nodes[data.name] + if has_pipeworks and node_def.tube then pipeworks.after_place(pos) end + if has_mesecons and node_def.mesecons then + mesecon.on_placenode(pos, minetest.get_node(pos)) + end + if has_digilines and node_def.digiline or node_def.digilines then + digilines.update_autoconnect(pos) + end return true end From fddfbe40cbc7aa101d122e0f1e21fb0f8cbebe99 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sat, 4 Dec 2021 16:43:36 +1100 Subject: [PATCH 043/130] meta:get_string always returns a string --- nodes/digilines.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/digilines.lua b/nodes/digilines.lua index b52c8f1..28fafe3 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -3,7 +3,7 @@ local desc_channel = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s channel: %s", desc, meta:get_string("channel") or "") + return string.format("%s with channel \"%s\"", desc, meta:get_string("channel")) end wrench.register_node("digilines:chest", { From 9e2e68da637c717e5d7bf699bffc9502872fff4a Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sat, 4 Dec 2021 18:51:06 +1100 Subject: [PATCH 044/130] fix metas --- nodes/biofuel.lua | 1 - nodes/default.lua | 21 +++++++++++++++++---- nodes/pipeworks.lua | 5 +---- nodes/technic.lua | 4 ++-- nodes/technic_chests.lua | 8 ++++++++ nodes/technic_cnc.lua | 3 +++ 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/nodes/biofuel.lua b/nodes/biofuel.lua index c4845b7..0f451f0 100644 --- a/nodes/biofuel.lua +++ b/nodes/biofuel.lua @@ -17,5 +17,4 @@ wrench.register_node("biofuel:refinery_active", { progress = wrench.META_TYPE_INT, }, timer = true, - drop = "biofuel:refinery", }) diff --git a/nodes/default.lua b/nodes/default.lua index 17902e0..f91ffc3 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -1,15 +1,25 @@ -- Register nodes from default / minetest_game +local has_pipeworks = minetest.get_modpath("pipeworks") +local splitstacks = has_pipeworks and wrench.META_TYPE_INT +local formspec = has_pipeworks and wrench.META_TYPE_STRING + wrench.register_node("default:chest", { lists = {"main"}, + metas = { + splitstacks = splitstacks, + formspec = formspec, + } }) wrench.register_node("default:chest_locked", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING + infotext = wrench.META_TYPE_STRING, + splitstacks = splitstacks, + formspec = formspec, }, owned = true, }) @@ -21,7 +31,9 @@ wrench.register_node("default:furnace", { fuel_totaltime = wrench.META_TYPE_FLOAT, fuel_time = wrench.META_TYPE_FLOAT, src_totaltime = wrench.META_TYPE_FLOAT, - src_time = wrench.META_TYPE_FLOAT + src_time = wrench.META_TYPE_FLOAT, + splitstacks = splitstacks, + formspec = formspec, }, }) @@ -32,9 +44,10 @@ wrench.register_node("default:furnace_active", { fuel_totaltime = wrench.META_TYPE_FLOAT, fuel_time = wrench.META_TYPE_FLOAT, src_totaltime = wrench.META_TYPE_FLOAT, - src_time = wrench.META_TYPE_FLOAT + src_time = wrench.META_TYPE_FLOAT, + splitstacks = splitstacks, + formspec = formspec, }, - store_meta_always = true, }) local function get_sign_description(pos, meta, node) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index c228423..7e4a193 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -19,6 +19,7 @@ wrench.register_node("pipeworks:autocrafter", { channel = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, + splitstacks = wrench.META_TYPE_INT, }, description = desc_infotext, timer = true, @@ -28,8 +29,6 @@ local wielder_data = { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, }, drop = true, } @@ -73,7 +72,6 @@ for i = 1, 10 do drop = true, metas = { infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, dist = wrench.META_TYPE_INT, }, description = desc_infotext, @@ -112,7 +110,6 @@ local mese_tube_data = { drop = true, lists = {}, metas = { - infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, description = desc_ghost_items, diff --git a/nodes/technic.lua b/nodes/technic.lua index 14ec5bb..4790999 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -8,7 +8,8 @@ local function register_machine_node(nodename, tier) local lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist local metas = { infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, + formspec = tier ~= "LV" and wrench.META_TYPE_STRING or nil, + splitstacks = tier ~= "LV" and wrench.META_TYPE_INT or nil, [tier.."_EU_demand"] = wrench.META_TYPE_INT, [tier.."_EU_input"] = wrench.META_TYPE_INT, tube_time = tier ~= "LV" and wrench.META_TYPE_INT or nil, @@ -67,7 +68,6 @@ wrench.register_node("technic:tool_workshop", { lists = {"src", "upgrade1", "upgrade2"}, metas = { infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, MV_EU_demand = wrench.META_TYPE_INT, MV_EU_input = wrench.META_TYPE_INT, tube_time = wrench.META_TYPE_INT diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index 277e0d7..43fe3cb 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -1,6 +1,9 @@ -- Register wrench support for technic_chests +local has_pipeworks = minetest.get_modpath("pipeworks") +local splitstacks = has_pipeworks and wrench.META_TYPE_INT + local function get_chest_description(pos, meta, node) local desc = minetest.registered_nodes[node.name].description local text = meta:get_string("infotext") @@ -20,24 +23,28 @@ local chests_meta = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, sort_mode = wrench.META_TYPE_INT, + splitstacks = splitstacks, }, copper = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, sort_mode = wrench.META_TYPE_INT, autosort = wrench.META_TYPE_INT, + splitstacks = splitstacks, }, silver = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, sort_mode = wrench.META_TYPE_INT, autosort = wrench.META_TYPE_INT, + splitstacks = splitstacks, }, gold = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, sort_mode = wrench.META_TYPE_INT, autosort = wrench.META_TYPE_INT, + splitstacks = splitstacks, }, mithril = { infotext = wrench.META_TYPE_STRING, @@ -50,6 +57,7 @@ local chests_meta = { send_inject = wrench.META_TYPE_INT, send_pull = wrench.META_TYPE_INT, send_overflow = wrench.META_TYPE_INT, + splitstacks = splitstacks, }, } diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index 3adf8bb..ddd3ef9 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -1,6 +1,8 @@ -- Register wrench support for Technic CNC +local has_pipeworks = minetest.get_modpath("pipeworks") + local function register_cnc(name, def) wrench.register_node(name, def) if minetest.registered_nodes[name.."_active"] then @@ -35,6 +37,7 @@ if minetest.registered_nodes["technic:cnc_mk2"] then size = wrench.META_TYPE_INT, program = wrench.META_TYPE_STRING, cnc_user = wrench.META_TYPE_STRING, + splitstacks = has_pipeworks and wrench.META_TYPE_INT, }, }) end From b53d9ceaede50b191fe7c16ce50e4c9afcc1104a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 15:39:15 +0100 Subject: [PATCH 045/130] use `drop_node` in get_description() --- functions.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/functions.lua b/functions.lua index 9c294f5..291d5da 100644 --- a/functions.lua +++ b/functions.lua @@ -89,10 +89,15 @@ function wrench.pickup_node(pos, player) elapsed = timer:get_elapsed() } end - local stack = ItemStack(def.drop or node.name) + local drop_node = node + if def.drop then + drop_node = table.copy(node) + drop_node.name = def.drop + end + local stack = ItemStack(drop_node.name) local item_meta = stack:get_meta() item_meta:set_string("data", minetest.serialize(data)) - item_meta:set_string("description", get_description(def, pos, meta, node, player)) + item_meta:set_string("description", get_description(def, pos, meta, drop_node, player)) if #stack:to_string() > 65000 then return false, errors.metadata end From 17644a7a9291d8a82359d685d0bec316b41bbab7 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 15:42:21 +0100 Subject: [PATCH 046/130] fix luacontroller* and descriptions added --- nodes/mesecons.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index f4441eb..1007631 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -7,6 +7,11 @@ local function register_node_on_off(name, def) wrench.register_node(name .. "_on", def) end +local desc_conf = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with configuration", desc) +end + -- Commandblock register_node_on_off("mesecons_commandblock:commandblock", { @@ -18,6 +23,7 @@ register_node_on_off("mesecons_commandblock:commandblock", { formspec = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, + description = desc_conf, }) -- Detectors @@ -29,6 +35,7 @@ register_node_on_off("mesecons_detector:node_detector", { digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, }, + description = desc_conf, }) register_node_on_off("mesecons_detector:object_detector", { @@ -37,6 +44,7 @@ register_node_on_off("mesecons_detector:object_detector", { digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, }, + description = desc_conf, }) -- Controllers @@ -49,7 +57,12 @@ local luacontroller_defs = { luac_id = wrench.META_TYPE_INT, formspec = wrench.META_TYPE_STRING, real_portstates = wrench.META_TYPE_INT, + ignore_offevents = wrench.META_TYPE_STRING, }, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s with code", desc) + end, } for a = 0, 1 do @@ -69,10 +82,14 @@ for d = 0, 1 do formspec = wrench.META_TYPE_STRING, real_portstates = wrench.META_TYPE_INT, }, + description = function(pos, meta, node, player) + return meta:get_string("infotext") + end, }) end end end end +luacontroller_defs.drop = nil wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) From 7e5cfaeddca340131022f24a9845d8ab38951442 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 15:43:13 +0100 Subject: [PATCH 047/130] add `realchess:chessboard` support --- nodes/xdecor.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 49b3794..715b9a2 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -37,6 +37,37 @@ for _, nodename in pairs(nodes) do }) end +-- Chessboard + +wrench.register_node("realchess:chessboard", { + lists = {"board"}, + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + + playerBlack = wrench.META_TYPE_STRING, + playerWhite = wrench.META_TYPE_STRING, + lastMove = wrench.META_TYPE_STRING, + + blackAttacked = wrench.META_TYPE_STRING, + whiteAttacked = wrench.META_TYPE_STRING, + + lastMoveTime = wrench.META_TYPE_INT, + castlingBlackL = wrench.META_TYPE_INT, + castlingBlackR = wrench.META_TYPE_INT, + castlingWhiteL = wrench.META_TYPE_INT, + castlingWhiteR = wrench.META_TYPE_INT, + + moves = wrench.META_TYPE_STRING, + eaten = wrench.META_TYPE_STRING, + mode = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return string.format("%s '%s' vs '%s'", desc, meta:get_string("playerWhite"), meta:get_sting("playerBlack")) + end +}) + -- Enchantment Table wrench.register_node("xdecor:enchantment_table", { From 99851e3b939a1e24e453b7b9726076705da1d66e Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 15:55:12 +0100 Subject: [PATCH 048/130] fix typo --- nodes/mesecons.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index 1007631..e3f406e 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -16,7 +16,7 @@ end register_node_on_off("mesecons_commandblock:commandblock", { -- ignore after_place function: sets owner - owner = true, + owned = true, metas = { infotext = wrench.META_TYPE_STRING, commands = wrench.META_TYPE_STRING, From 3c1d8ba1222854cec509c1c548f5538e54aaae38 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 19:29:43 +0100 Subject: [PATCH 049/130] rename functions "wrench.*" to "wrench:*" (#3) --- api.lua | 16 ++++++++-------- debug.lua | 13 ++++++++++--- functions.lua | 10 +++++----- nodes/3d_armor_stand.lua | 4 ++-- nodes/bees.lua | 2 +- nodes/biofuel.lua | 4 ++-- nodes/bones.lua | 2 +- nodes/connected_chests.lua | 8 ++++---- nodes/default.lua | 12 ++++++------ nodes/digilines.lua | 8 ++++---- nodes/digtron.lua | 12 ++++++------ nodes/drawers.lua | 10 +++++----- nodes/mesecons.lua | 10 +++++----- nodes/mobs.lua | 2 +- nodes/more_chests.lua | 4 ++-- nodes/pipeworks.lua | 30 +++++++++++++++--------------- nodes/technic.lua | 12 ++++++------ nodes/technic_chests.lua | 12 ++++++------ nodes/technic_cnc.lua | 4 ++-- nodes/vessels.lua | 2 +- nodes/xdecor.lua | 16 ++++++++-------- tool.lua | 2 +- 22 files changed, 101 insertions(+), 94 deletions(-) diff --git a/api.lua b/api.lua index 0e83388..a081874 100644 --- a/api.lua +++ b/api.lua @@ -1,13 +1,13 @@ -function wrench.register_node(name, def) - assert(type(name) == "string", "wrench.register_node invalid type for name") - assert(type(def) == "table", "wrench.register_node invalid type for def") +function wrench:register_node(name, def) + assert(type(name) == "string", "wrench:register_node invalid type for name") + assert(type(def) == "table", "wrench:register_node invalid type for def") local node_def = minetest.registered_nodes[name] if node_def then local old_after_place = node_def.after_place_node minetest.override_item(name, { after_place_node = function(...) - if not wrench.restore_node(...) and old_after_place then + if not wrench:restore_node(...) and old_after_place then return old_after_place(...) end end @@ -19,23 +19,23 @@ function wrench.register_node(name, def) minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) def.drop = nil end - if def.drop and not wrench.registered_nodes[def.drop] then + if def.drop and not self.registered_nodes[def.drop] then if def.drop ~= name then minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) end def.drop = nil end - wrench.registered_nodes[name] = def + self.registered_nodes[name] = def else minetest.log("warning", "Attempt to register unknown node for wrench: "..name) end end -function wrench.blacklist_item(name) +function wrench:blacklist_item(name) assert(type(name) == "string", "wrench:blacklist_item invalid type for name") local node_def = minetest.registered_items[name] if node_def then - wrench.blacklisted_items[name] = true + self.blacklisted_items[name] = true else minetest.log("warning", "Attempt to blacklist unknown item for wrench: "..name) end diff --git a/debug.lua b/debug.lua index 20b22f8..16a75e0 100644 --- a/debug.lua +++ b/debug.lua @@ -7,14 +7,14 @@ local get_keys = function(list) return keys end -local orig_wrench_pickup_node = wrench.pickup_node -wrench.pickup_node = function(pos, player) +local orig_wrench_pickup_node = wrench:pickup_node +wrench:pickup_node = function(pos, player) if not player:get_player_control().sneak then return orig_wrench_pickup_node(pos, player) end local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] - print("wrench.register_node(\"" .. node.name .. "\", {"); + print("wrench:register_node(\"" .. node.name .. "\", {"); -- timer local timer = minetest.get_node_timer(pos) if timer:get_timeout() ~= 0 then @@ -36,6 +36,13 @@ wrench.pickup_node = function(pos, player) if def.after_dig_node then print("\t-- has after_dig " .. type(def.after_dig_node)) end + if def.can_dig then + print("\t-- has can_dig " .. type(def.can_dig) .. " " .. + ((type(def.can_dig) == "function") and + (def.can_dig(pos, player) and ', returns rue' or 'returns false') or "" + ) + ) + end local meta = minetest.get_meta(pos) -- owner local owner = meta:get_string("owner") diff --git a/functions.lua b/functions.lua index 291d5da..7e13f0c 100644 --- a/functions.lua +++ b/functions.lua @@ -38,9 +38,9 @@ local function get_description(def, pos, meta, node, player) return S("%s with items"):format(minetest.registered_nodes[node.name].description) end -function wrench.pickup_node(pos, player) +function wrench:pickup_node(pos, player) local node = minetest.get_node(pos) - local def = wrench.registered_nodes[node.name] + local def = self.registered_nodes[node.name] if not def then return end @@ -61,7 +61,7 @@ function wrench.pickup_node(pos, player) for _, listname in pairs(def.lists or {}) do local list = inv:get_list(listname) for i, stack in pairs(list) do - if wrench.blacklisted_items[stack:get_name()] then + if self.blacklisted_items[stack:get_name()] then local desc = stack:get_definition().description return false, errors.bad_item:format(desc) end @@ -123,7 +123,7 @@ function wrench.pickup_node(pos, player) return true end -function wrench.restore_node(pos, player, stack) +function wrench:restore_node(pos, player, stack) if not stack then return end @@ -131,7 +131,7 @@ function wrench.restore_node(pos, player, stack) if not data then return end - local def = wrench.registered_nodes[data.name] + local def = self.registered_nodes[data.name] if not def then return end diff --git a/nodes/3d_armor_stand.lua b/nodes/3d_armor_stand.lua index 5098b19..9186f7d 100644 --- a/nodes/3d_armor_stand.lua +++ b/nodes/3d_armor_stand.lua @@ -23,13 +23,13 @@ local function description(pos, meta, node) return string.format("%s with armor", desc) end -wrench.register_node("3d_armor_stand:armor_stand", { +wrench:register_node("3d_armor_stand:armor_stand", { lists = lists, after_place = after_place, description = description, }) -wrench.register_node("3d_armor_stand:locked_armor_stand", { +wrench:register_node("3d_armor_stand:locked_armor_stand", { lists = lists, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/bees.lua b/nodes/bees.lua index 19fc42a..8c98f18 100644 --- a/nodes/bees.lua +++ b/nodes/bees.lua @@ -1,7 +1,7 @@ -- Register wrench support for bees -wrench.register_node("bees:hive_wild", { +wrench:register_node("bees:hive_wild", { timer = true, lists = {"combs", "queen"}, metas = { diff --git a/nodes/biofuel.lua b/nodes/biofuel.lua index 0f451f0..29f3231 100644 --- a/nodes/biofuel.lua +++ b/nodes/biofuel.lua @@ -1,7 +1,7 @@ -- Register wrench support for biofuel refinery -wrench.register_node("biofuel:refinery", { +wrench:register_node("biofuel:refinery", { lists = {"src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -10,7 +10,7 @@ wrench.register_node("biofuel:refinery", { timer = true, }) -wrench.register_node("biofuel:refinery_active", { +wrench:register_node("biofuel:refinery_active", { lists = {"src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/nodes/bones.lua b/nodes/bones.lua index 1b05bd4..041f625 100644 --- a/nodes/bones.lua +++ b/nodes/bones.lua @@ -1,7 +1,7 @@ -- Register wrench support for bones -wrench.register_node("bones:bones", { +wrench:register_node("bones:bones", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/connected_chests.lua b/nodes/connected_chests.lua index 1b7d8ad..b636988 100644 --- a/nodes/connected_chests.lua +++ b/nodes/connected_chests.lua @@ -1,15 +1,15 @@ -- Register wrench support for connected_chests -wrench.register_node("default:chest_connected_left", { +wrench:register_node("default:chest_connected_left", { lists = {"main"}, }) -wrench.register_node("default:chest_connected_right", { +wrench:register_node("default:chest_connected_right", { lists = {"main"}, }) -wrench.register_node("default:chest_locked_connected_left", { +wrench:register_node("default:chest_locked_connected_left", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -18,7 +18,7 @@ wrench.register_node("default:chest_locked_connected_left", { owned = true, }) -wrench.register_node("default:chest_locked_connected_right", { +wrench:register_node("default:chest_locked_connected_right", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/default.lua b/nodes/default.lua index f91ffc3..97f27b4 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -5,7 +5,7 @@ local has_pipeworks = minetest.get_modpath("pipeworks") local splitstacks = has_pipeworks and wrench.META_TYPE_INT local formspec = has_pipeworks and wrench.META_TYPE_STRING -wrench.register_node("default:chest", { +wrench:register_node("default:chest", { lists = {"main"}, metas = { splitstacks = splitstacks, @@ -13,7 +13,7 @@ wrench.register_node("default:chest", { } }) -wrench.register_node("default:chest_locked", { +wrench:register_node("default:chest_locked", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -24,7 +24,7 @@ wrench.register_node("default:chest_locked", { owned = true, }) -wrench.register_node("default:furnace", { +wrench:register_node("default:furnace", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -37,7 +37,7 @@ wrench.register_node("default:furnace", { }, }) -wrench.register_node("default:furnace_active", { +wrench:register_node("default:furnace_active", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -59,7 +59,7 @@ local function get_sign_description(pos, meta, node) return string.format("%s with text \"%s\"", desc, text) end -wrench.register_node("default:sign_wall_wood", { +wrench:register_node("default:sign_wall_wood", { metas = { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING @@ -67,7 +67,7 @@ wrench.register_node("default:sign_wall_wood", { description = get_sign_description, }) -wrench.register_node("default:sign_wall_steel", { +wrench:register_node("default:sign_wall_steel", { metas = { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 28fafe3..1101268 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -6,7 +6,7 @@ local desc_channel = function(pos, meta, node, player) return string.format("%s with channel \"%s\"", desc, meta:get_string("channel")) end -wrench.register_node("digilines:chest", { +wrench:register_node("digilines:chest", { lists = {"main"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -15,7 +15,7 @@ wrench.register_node("digilines:chest", { }, }) -wrench.register_node("digilines:lightsensor", { +wrench:register_node("digilines:lightsensor", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, @@ -23,7 +23,7 @@ wrench.register_node("digilines:lightsensor", { description = desc_channel, }) -wrench.register_node("digilines:rtc", { +wrench:register_node("digilines:rtc", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, @@ -31,7 +31,7 @@ wrench.register_node("digilines:rtc", { description = desc_channel, }) -wrench.register_node("digilines:lcd", { +wrench:register_node("digilines:lcd", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, diff --git a/nodes/digtron.lua b/nodes/digtron.lua index 2273d66..de1410b 100644 --- a/nodes/digtron.lua +++ b/nodes/digtron.lua @@ -1,23 +1,23 @@ -- Register wrench support for digtron -wrench.register_node("digtron:battery_holder", { +wrench:register_node("digtron:battery_holder", { lists = {"batteries"} }) -wrench.register_node("digtron:inventory", { +wrench:register_node("digtron:inventory", { lists = {"main"} }) -wrench.register_node("digtron:fuelstore", { +wrench:register_node("digtron:fuelstore", { lists = {"fuel"} }) -wrench.register_node("digtron:combined_storage", { +wrench:register_node("digtron:combined_storage", { lists = {"main", "fuel"} }) -- Blacklist loaded crates to prevent nesting of inventories -wrench.blacklist_item("digtron:loaded_crate") -wrench.blacklist_item("digtron:loaded_locked_crate") +wrench:blacklist_item("digtron:loaded_crate") +wrench:blacklist_item("digtron:loaded_locked_crate") diff --git a/nodes/drawers.lua b/nodes/drawers.lua index 5990993..9a8ab82 100644 --- a/nodes/drawers.lua +++ b/nodes/drawers.lua @@ -28,9 +28,9 @@ for _, drawer_type in ipairs({1, 2, 4}) do def.metas["stack_max_factor"..suffix] = INT end - wrench.register_node("drawers:wood"..drawer_type, def) - wrench.register_node("drawers:acacia_wood"..drawer_type, def) - wrench.register_node("drawers:aspen_wood"..drawer_type, def) - wrench.register_node("drawers:junglewood"..drawer_type, def) - wrench.register_node("drawers:pine_wood"..drawer_type, def) + wrench:register_node("drawers:wood"..drawer_type, def) + wrench:register_node("drawers:acacia_wood"..drawer_type, def) + wrench:register_node("drawers:aspen_wood"..drawer_type, def) + wrench:register_node("drawers:junglewood"..drawer_type, def) + wrench:register_node("drawers:pine_wood"..drawer_type, def) end diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index e3f406e..fa9ef13 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -2,9 +2,9 @@ -- Register wrench support for mesecons local function register_node_on_off(name, def) - wrench.register_node(name .. "_off", def) + wrench:register_node(name .. "_off", def) def.drop = true - wrench.register_node(name .. "_on", def) + wrench:register_node(name .. "_on", def) end local desc_conf = function(pos, meta, node, player) @@ -70,9 +70,9 @@ for b = 0, 1 do for c = 0, 1 do for d = 0, 1 do local state = d .. c .. b .. a - wrench.register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) + wrench:register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) - wrench.register_node("mesecons_microcontroller:microcontroller" .. state, { + wrench:register_node("mesecons_microcontroller:microcontroller" .. state, { drop = "mesecons_microcontroller:microcontroller0000", metas = { infotext = wrench.META_TYPE_STRING, @@ -92,4 +92,4 @@ end end luacontroller_defs.drop = nil -wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) +wrench:register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) diff --git a/nodes/mobs.lua b/nodes/mobs.lua index 6d25658..1e80338 100644 --- a/nodes/mobs.lua +++ b/nodes/mobs.lua @@ -1,7 +1,7 @@ -- Register wrench support for mobs_redo -wrench.register_node("mobs:spawner", { +wrench:register_node("mobs:spawner", { metas = { command = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, diff --git a/nodes/more_chests.lua b/nodes/more_chests.lua index dee69a5..7545cab 100644 --- a/nodes/more_chests.lua +++ b/nodes/more_chests.lua @@ -16,7 +16,7 @@ local basic_chests = { } for _, chest in pairs(basic_chests) do - wrench.register_node(chest, { + wrench:register_node(chest, { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -28,7 +28,7 @@ end -- Shared Chest -wrench.register_node("more_chests:shared", { +wrench:register_node("more_chests:shared", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 7e4a193..ca64534 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -12,7 +12,7 @@ end -- Autocrafter -wrench.register_node("pipeworks:autocrafter", { +wrench:register_node("pipeworks:autocrafter", { lists = {"src", "dst", "recipe", "output"}, metas = { enabled = wrench.META_TYPE_INT, @@ -33,16 +33,16 @@ local wielder_data = { drop = true, } -wrench.register_node("pipeworks:deployer_off", wielder_data) -wrench.register_node("pipeworks:deployer_on", wielder_data) +wrench:register_node("pipeworks:deployer_off", wielder_data) +wrench:register_node("pipeworks:deployer_on", wielder_data) -wrench.register_node("pipeworks:dispenser_off", wielder_data) -wrench.register_node("pipeworks:dispenser_on", wielder_data) +wrench:register_node("pipeworks:dispenser_off", wielder_data) +wrench:register_node("pipeworks:dispenser_on", wielder_data) table.insert(wielder_data.lists, "pick") table.insert(wielder_data.lists, "ghost_pick") -wrench.register_node("pipeworks:nodebreaker_off", wielder_data) -wrench.register_node("pipeworks:nodebreaker_on", wielder_data) +wrench:register_node("pipeworks:nodebreaker_off", wielder_data) +wrench:register_node("pipeworks:nodebreaker_on", wielder_data) -- Filters @@ -59,16 +59,16 @@ local filter_data = { description = desc_ghost_items, } -wrench.register_node("pipeworks:filter", filter_data) -wrench.register_node("pipeworks:mese_filter", filter_data) +wrench:register_node("pipeworks:filter", filter_data) +wrench:register_node("pipeworks:mese_filter", filter_data) filter_data.metas["channel"] = wrench.META_TYPE_STRING -wrench.register_node("pipeworks:digiline_filter", filter_data) +wrench:register_node("pipeworks:digiline_filter", filter_data) -- Tubes (6d style): 'mese_sand_tube' and 'teleport_tube' for i = 1, 10 do - wrench.register_node("pipeworks:mese_sand_tube_"..i, { + wrench:register_node("pipeworks:mese_sand_tube_"..i, { drop = true, metas = { infotext = wrench.META_TYPE_STRING, @@ -76,7 +76,7 @@ for i = 1, 10 do }, description = desc_infotext, }) - wrench.register_node("pipeworks:teleport_tube_"..i, { + wrench:register_node("pipeworks:teleport_tube_"..i, { drop = true, metas = { infotext = wrench.META_TYPE_STRING, @@ -120,7 +120,7 @@ for i = 1, 6 do table.insert(mese_tube_data.lists, "line"..i) end -wrench.register_node("pipeworks:lua_tube_burnt", lua_tube_data) +wrench:register_node("pipeworks:lua_tube_burnt", lua_tube_data) for xm = 0, 1 do for xp = 0, 1 do @@ -129,8 +129,8 @@ for yp = 0, 1 do for zm = 0, 1 do for zp = 0, 1 do local tname = xm..xp..ym..yp..zm..zp - wrench.register_node("pipeworks:lua_tube"..tname, lua_tube_data) - wrench.register_node("pipeworks:mese_tube_"..tname, mese_tube_data) + wrench:register_node("pipeworks:lua_tube"..tname, lua_tube_data) + wrench:register_node("pipeworks:mese_tube_"..tname, mese_tube_data) end end end diff --git a/nodes/technic.lua b/nodes/technic.lua index 4790999..06ce1ce 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -15,7 +15,7 @@ local function register_machine_node(nodename, tier) tube_time = tier ~= "LV" and wrench.META_TYPE_INT or nil, src_time = wrench.META_TYPE_INT, } - wrench.register_node(nodename, {lists = lists, metas = metas}) + wrench:register_node(nodename, {lists = lists, metas = metas}) end local defaults = {tiers = {"LV", "MV", "HV"}} @@ -42,7 +42,7 @@ end -- Special nodes -wrench.register_node("technic:coal_alloy_furnace", { +wrench:register_node("technic:coal_alloy_furnace", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -53,7 +53,7 @@ wrench.register_node("technic:coal_alloy_furnace", { }, }) -wrench.register_node("technic:coal_alloy_furnace_active", { +wrench:register_node("technic:coal_alloy_furnace_active", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -64,7 +64,7 @@ wrench.register_node("technic:coal_alloy_furnace_active", { }, }) -wrench.register_node("technic:tool_workshop", { +wrench:register_node("technic:tool_workshop", { lists = {"src", "upgrade1", "upgrade2"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -76,7 +76,7 @@ wrench.register_node("technic:tool_workshop", { for _, tier in pairs({"LV", "MV", "HV"}) do for i = 0, 8 do - wrench.register_node("technic:"..tier:lower().."_battery_box"..i, { + wrench:register_node("technic:"..tier:lower().."_battery_box"..i, { lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist, metas = { infotext = wrench.META_TYPE_STRING, @@ -93,7 +93,7 @@ end -- Other machines -wrench.register_node("technic:injector", { +wrench:register_node("technic:injector", { lists = {"main"}, metas = { splitstacks = wrench.META_TYPE_INT, diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index 43fe3cb..251c3b3 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -62,17 +62,17 @@ local chests_meta = { } for name, metas in pairs(chests_meta) do - wrench.register_node("technic:"..name.."_chest", { + wrench:register_node("technic:"..name.."_chest", { lists = {"main"}, metas = metas, description = get_chest_description, }) - wrench.register_node("technic:"..name.."_protected_chest", { + wrench:register_node("technic:"..name.."_protected_chest", { lists = {"main"}, metas = metas, description = get_chest_description, }) - wrench.register_node("technic:"..name.."_locked_chest", { + wrench:register_node("technic:"..name.."_locked_chest", { lists = {"main"}, metas = with_owner_field(metas), description = get_chest_description, @@ -101,17 +101,17 @@ local chest_mark_colors = { } for i = 1, 15 do - wrench.register_node("technic:gold_chest"..chest_mark_colors[i], { + wrench:register_node("technic:gold_chest"..chest_mark_colors[i], { lists = {"main"}, metas = chests_meta.gold, description = get_chest_description, }) - wrench.register_node("technic:gold_protected_chest"..chest_mark_colors[i], { + wrench:register_node("technic:gold_protected_chest"..chest_mark_colors[i], { lists = {"main"}, metas = chests_meta.gold, description = get_chest_description, }) - wrench.register_node("technic:gold_locked_chest"..chest_mark_colors[i], { + wrench:register_node("technic:gold_locked_chest"..chest_mark_colors[i], { lists = {"main"}, metas = with_owner_field(chests_meta.gold), description = get_chest_description, diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index ddd3ef9..25f1f2f 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -4,10 +4,10 @@ local has_pipeworks = minetest.get_modpath("pipeworks") local function register_cnc(name, def) - wrench.register_node(name, def) + wrench:register_node(name, def) if minetest.registered_nodes[name.."_active"] then -- Only available if technic is active - wrench.register_node(name.."_active", def) + wrench:register_node(name.."_active", def) end end diff --git a/nodes/vessels.lua b/nodes/vessels.lua index 1aeb416..557487b 100644 --- a/nodes/vessels.lua +++ b/nodes/vessels.lua @@ -1,7 +1,7 @@ -- Register wrench support for vessels -wrench.register_node("vessels:shelf", { +wrench:register_node("vessels:shelf", { lists = { "vessels" }, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 715b9a2..bd081c4 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -11,7 +11,7 @@ local nodes = { } for _, nodename in pairs(nodes) do - wrench.register_node(nodename, { + wrench:register_node(nodename, { lists = {"main"}, }) end @@ -26,7 +26,7 @@ nodes = { } for _, nodename in pairs(nodes) do - wrench.register_node(nodename, { + wrench:register_node(nodename, { metas = { infotext = wrench.META_TYPE_STRING, }, @@ -39,7 +39,7 @@ end -- Chessboard -wrench.register_node("realchess:chessboard", { +wrench:register_node("realchess:chessboard", { lists = {"board"}, metas = { formspec = wrench.META_TYPE_STRING, @@ -70,7 +70,7 @@ wrench.register_node("realchess:chessboard", { -- Enchantment Table -wrench.register_node("xdecor:enchantment_table", { +wrench:register_node("xdecor:enchantment_table", { lists = {"tool", "mese"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -80,7 +80,7 @@ wrench.register_node("xdecor:enchantment_table", { -- Hive -wrench.register_node("xdecor:hive", { +wrench:register_node("xdecor:hive", { timer = true, lists = {"honey"}, metas = { @@ -91,7 +91,7 @@ wrench.register_node("xdecor:hive", { -- Item Frame -wrench.register_node("xdecor:itemframe", { +wrench:register_node("xdecor:itemframe", { metas = { owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, @@ -128,7 +128,7 @@ for i = 1, 7 do mailbox_metas["stack"..i] = wrench.META_TYPE_STRING end -wrench.register_node("xdecor:mailbox", { +wrench:register_node("xdecor:mailbox", { lists = {"mailbox", "drop"}, metas = mailbox_metas, owned = true, @@ -136,7 +136,7 @@ wrench.register_node("xdecor:mailbox", { -- Workbench -wrench.register_node("xdecor:workbench", { +wrench:register_node("xdecor:workbench", { lists = {"tool", "input", "hammer", "forms", "storage"}, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/tool.lua b/tool.lua index fc70818..402fd7e 100644 --- a/tool.lua +++ b/tool.lua @@ -13,7 +13,7 @@ minetest.register_tool("wrench:wrench", { if not pos or minetest.is_protected(pos, name) then return end - local picked_up, err_msg = wrench.pickup_node(pos, player) + local picked_up, err_msg = wrench:pickup_node(pos, player) if not picked_up then if err_msg then minetest.chat_send_player(name, err_msg) From e43ff0766ca8959aefecc07aebfcbb68cdfdc25a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 20:02:55 +0100 Subject: [PATCH 050/130] fix crash when `wrench.enable_debug = true` --- debug.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debug.lua b/debug.lua index 16a75e0..302c4e4 100644 --- a/debug.lua +++ b/debug.lua @@ -7,10 +7,10 @@ local get_keys = function(list) return keys end -local orig_wrench_pickup_node = wrench:pickup_node -wrench:pickup_node = function(pos, player) +local orig_wrench_pickup_node = wrench.pickup_node +wrench.pickup_node = function(self, pos, player) if not player:get_player_control().sneak then - return orig_wrench_pickup_node(pos, player) + return orig_wrench_pickup_node(self, pos, player) end local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] From b0947f8f23eb55da48cb9ea0751eb7fe94578cff Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 4 Dec 2021 20:24:30 +0100 Subject: [PATCH 051/130] fix typo in description for `realchess:chessboard` --- nodes/xdecor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index bd081c4..1e21d22 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -64,7 +64,7 @@ wrench:register_node("realchess:chessboard", { }, description = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s '%s' vs '%s'", desc, meta:get_string("playerWhite"), meta:get_sting("playerBlack")) + return string.format("%s '%s' vs. '%s'", desc, meta:get_string("playerWhite"), meta:get_string("playerBlack")) end }) From de87e798fab2acc2e5cd2d5152af5de31d2f5738 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sun, 5 Dec 2021 15:38:57 +1100 Subject: [PATCH 052/130] Revert "rename functions "wrench.*" to "wrench:*" (#3)" --- api.lua | 22 +++++++++++----------- debug.lua | 6 +++--- functions.lua | 10 +++++----- nodes/3d_armor_stand.lua | 4 ++-- nodes/bees.lua | 2 +- nodes/biofuel.lua | 4 ++-- nodes/bones.lua | 2 +- nodes/connected_chests.lua | 8 ++++---- nodes/default.lua | 12 ++++++------ nodes/digilines.lua | 8 ++++---- nodes/digtron.lua | 12 ++++++------ nodes/drawers.lua | 10 +++++----- nodes/mesecons.lua | 10 +++++----- nodes/mobs.lua | 2 +- nodes/more_chests.lua | 4 ++-- nodes/pipeworks.lua | 30 +++++++++++++++--------------- nodes/technic.lua | 12 ++++++------ nodes/technic_chests.lua | 12 ++++++------ nodes/technic_cnc.lua | 4 ++-- nodes/vessels.lua | 2 +- nodes/xdecor.lua | 16 ++++++++-------- tool.lua | 2 +- 22 files changed, 97 insertions(+), 97 deletions(-) diff --git a/api.lua b/api.lua index a081874..e59c604 100644 --- a/api.lua +++ b/api.lua @@ -1,13 +1,13 @@ -function wrench:register_node(name, def) - assert(type(name) == "string", "wrench:register_node invalid type for name") - assert(type(def) == "table", "wrench:register_node invalid type for def") +function wrench.register_node(name, def) + assert(type(name) == "string", "wrench.register_node invalid type for name") + assert(type(def) == "table", "wrench.register_node invalid type for def") local node_def = minetest.registered_nodes[name] if node_def then local old_after_place = node_def.after_place_node minetest.override_item(name, { after_place_node = function(...) - if not wrench:restore_node(...) and old_after_place then + if not wrench.restore_node(...) and old_after_place then return old_after_place(...) end end @@ -19,24 +19,24 @@ function wrench:register_node(name, def) minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) def.drop = nil end - if def.drop and not self.registered_nodes[def.drop] then + if def.drop and not wrench.registered_nodes[def.drop] then if def.drop ~= name then minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) end def.drop = nil end - self.registered_nodes[name] = def + wrench.registered_nodes[name] = def else - minetest.log("warning", "Attempt to register unknown node for wrench: "..name) + minetest.log("warning", "Attempt to register unknown node for wrench. "..name) end end -function wrench:blacklist_item(name) - assert(type(name) == "string", "wrench:blacklist_item invalid type for name") +function wrench.blacklist_item(name) + assert(type(name) == "string", "wrench.blacklist_item invalid type for name") local node_def = minetest.registered_items[name] if node_def then - self.blacklisted_items[name] = true + wrench.blacklisted_items[name] = true else - minetest.log("warning", "Attempt to blacklist unknown item for wrench: "..name) + minetest.log("warning", "Attempt to blacklist unknown item for wrench. "..name) end end diff --git a/debug.lua b/debug.lua index 302c4e4..45ffb91 100644 --- a/debug.lua +++ b/debug.lua @@ -8,13 +8,13 @@ local get_keys = function(list) end local orig_wrench_pickup_node = wrench.pickup_node -wrench.pickup_node = function(self, pos, player) +wrench.pickup_node = function(pos, player) if not player:get_player_control().sneak then - return orig_wrench_pickup_node(self, pos, player) + return orig_wrench_pickup_node(pos, player) end local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] - print("wrench:register_node(\"" .. node.name .. "\", {"); + print("wrench.register_node(\"" .. node.name .. "\", {"); -- timer local timer = minetest.get_node_timer(pos) if timer:get_timeout() ~= 0 then diff --git a/functions.lua b/functions.lua index 7e13f0c..291d5da 100644 --- a/functions.lua +++ b/functions.lua @@ -38,9 +38,9 @@ local function get_description(def, pos, meta, node, player) return S("%s with items"):format(minetest.registered_nodes[node.name].description) end -function wrench:pickup_node(pos, player) +function wrench.pickup_node(pos, player) local node = minetest.get_node(pos) - local def = self.registered_nodes[node.name] + local def = wrench.registered_nodes[node.name] if not def then return end @@ -61,7 +61,7 @@ function wrench:pickup_node(pos, player) for _, listname in pairs(def.lists or {}) do local list = inv:get_list(listname) for i, stack in pairs(list) do - if self.blacklisted_items[stack:get_name()] then + if wrench.blacklisted_items[stack:get_name()] then local desc = stack:get_definition().description return false, errors.bad_item:format(desc) end @@ -123,7 +123,7 @@ function wrench:pickup_node(pos, player) return true end -function wrench:restore_node(pos, player, stack) +function wrench.restore_node(pos, player, stack) if not stack then return end @@ -131,7 +131,7 @@ function wrench:restore_node(pos, player, stack) if not data then return end - local def = self.registered_nodes[data.name] + local def = wrench.registered_nodes[data.name] if not def then return end diff --git a/nodes/3d_armor_stand.lua b/nodes/3d_armor_stand.lua index 9186f7d..5098b19 100644 --- a/nodes/3d_armor_stand.lua +++ b/nodes/3d_armor_stand.lua @@ -23,13 +23,13 @@ local function description(pos, meta, node) return string.format("%s with armor", desc) end -wrench:register_node("3d_armor_stand:armor_stand", { +wrench.register_node("3d_armor_stand:armor_stand", { lists = lists, after_place = after_place, description = description, }) -wrench:register_node("3d_armor_stand:locked_armor_stand", { +wrench.register_node("3d_armor_stand:locked_armor_stand", { lists = lists, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/bees.lua b/nodes/bees.lua index 8c98f18..19fc42a 100644 --- a/nodes/bees.lua +++ b/nodes/bees.lua @@ -1,7 +1,7 @@ -- Register wrench support for bees -wrench:register_node("bees:hive_wild", { +wrench.register_node("bees:hive_wild", { timer = true, lists = {"combs", "queen"}, metas = { diff --git a/nodes/biofuel.lua b/nodes/biofuel.lua index 29f3231..0f451f0 100644 --- a/nodes/biofuel.lua +++ b/nodes/biofuel.lua @@ -1,7 +1,7 @@ -- Register wrench support for biofuel refinery -wrench:register_node("biofuel:refinery", { +wrench.register_node("biofuel:refinery", { lists = {"src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -10,7 +10,7 @@ wrench:register_node("biofuel:refinery", { timer = true, }) -wrench:register_node("biofuel:refinery_active", { +wrench.register_node("biofuel:refinery_active", { lists = {"src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/nodes/bones.lua b/nodes/bones.lua index 041f625..1b05bd4 100644 --- a/nodes/bones.lua +++ b/nodes/bones.lua @@ -1,7 +1,7 @@ -- Register wrench support for bones -wrench:register_node("bones:bones", { +wrench.register_node("bones:bones", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/connected_chests.lua b/nodes/connected_chests.lua index b636988..1b7d8ad 100644 --- a/nodes/connected_chests.lua +++ b/nodes/connected_chests.lua @@ -1,15 +1,15 @@ -- Register wrench support for connected_chests -wrench:register_node("default:chest_connected_left", { +wrench.register_node("default:chest_connected_left", { lists = {"main"}, }) -wrench:register_node("default:chest_connected_right", { +wrench.register_node("default:chest_connected_right", { lists = {"main"}, }) -wrench:register_node("default:chest_locked_connected_left", { +wrench.register_node("default:chest_locked_connected_left", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -18,7 +18,7 @@ wrench:register_node("default:chest_locked_connected_left", { owned = true, }) -wrench:register_node("default:chest_locked_connected_right", { +wrench.register_node("default:chest_locked_connected_right", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/default.lua b/nodes/default.lua index 97f27b4..f91ffc3 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -5,7 +5,7 @@ local has_pipeworks = minetest.get_modpath("pipeworks") local splitstacks = has_pipeworks and wrench.META_TYPE_INT local formspec = has_pipeworks and wrench.META_TYPE_STRING -wrench:register_node("default:chest", { +wrench.register_node("default:chest", { lists = {"main"}, metas = { splitstacks = splitstacks, @@ -13,7 +13,7 @@ wrench:register_node("default:chest", { } }) -wrench:register_node("default:chest_locked", { +wrench.register_node("default:chest_locked", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -24,7 +24,7 @@ wrench:register_node("default:chest_locked", { owned = true, }) -wrench:register_node("default:furnace", { +wrench.register_node("default:furnace", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -37,7 +37,7 @@ wrench:register_node("default:furnace", { }, }) -wrench:register_node("default:furnace_active", { +wrench.register_node("default:furnace_active", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -59,7 +59,7 @@ local function get_sign_description(pos, meta, node) return string.format("%s with text \"%s\"", desc, text) end -wrench:register_node("default:sign_wall_wood", { +wrench.register_node("default:sign_wall_wood", { metas = { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING @@ -67,7 +67,7 @@ wrench:register_node("default:sign_wall_wood", { description = get_sign_description, }) -wrench:register_node("default:sign_wall_steel", { +wrench.register_node("default:sign_wall_steel", { metas = { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 1101268..28fafe3 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -6,7 +6,7 @@ local desc_channel = function(pos, meta, node, player) return string.format("%s with channel \"%s\"", desc, meta:get_string("channel")) end -wrench:register_node("digilines:chest", { +wrench.register_node("digilines:chest", { lists = {"main"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -15,7 +15,7 @@ wrench:register_node("digilines:chest", { }, }) -wrench:register_node("digilines:lightsensor", { +wrench.register_node("digilines:lightsensor", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, @@ -23,7 +23,7 @@ wrench:register_node("digilines:lightsensor", { description = desc_channel, }) -wrench:register_node("digilines:rtc", { +wrench.register_node("digilines:rtc", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, @@ -31,7 +31,7 @@ wrench:register_node("digilines:rtc", { description = desc_channel, }) -wrench:register_node("digilines:lcd", { +wrench.register_node("digilines:lcd", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, diff --git a/nodes/digtron.lua b/nodes/digtron.lua index de1410b..2273d66 100644 --- a/nodes/digtron.lua +++ b/nodes/digtron.lua @@ -1,23 +1,23 @@ -- Register wrench support for digtron -wrench:register_node("digtron:battery_holder", { +wrench.register_node("digtron:battery_holder", { lists = {"batteries"} }) -wrench:register_node("digtron:inventory", { +wrench.register_node("digtron:inventory", { lists = {"main"} }) -wrench:register_node("digtron:fuelstore", { +wrench.register_node("digtron:fuelstore", { lists = {"fuel"} }) -wrench:register_node("digtron:combined_storage", { +wrench.register_node("digtron:combined_storage", { lists = {"main", "fuel"} }) -- Blacklist loaded crates to prevent nesting of inventories -wrench:blacklist_item("digtron:loaded_crate") -wrench:blacklist_item("digtron:loaded_locked_crate") +wrench.blacklist_item("digtron:loaded_crate") +wrench.blacklist_item("digtron:loaded_locked_crate") diff --git a/nodes/drawers.lua b/nodes/drawers.lua index 9a8ab82..5990993 100644 --- a/nodes/drawers.lua +++ b/nodes/drawers.lua @@ -28,9 +28,9 @@ for _, drawer_type in ipairs({1, 2, 4}) do def.metas["stack_max_factor"..suffix] = INT end - wrench:register_node("drawers:wood"..drawer_type, def) - wrench:register_node("drawers:acacia_wood"..drawer_type, def) - wrench:register_node("drawers:aspen_wood"..drawer_type, def) - wrench:register_node("drawers:junglewood"..drawer_type, def) - wrench:register_node("drawers:pine_wood"..drawer_type, def) + wrench.register_node("drawers:wood"..drawer_type, def) + wrench.register_node("drawers:acacia_wood"..drawer_type, def) + wrench.register_node("drawers:aspen_wood"..drawer_type, def) + wrench.register_node("drawers:junglewood"..drawer_type, def) + wrench.register_node("drawers:pine_wood"..drawer_type, def) end diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index fa9ef13..e3f406e 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -2,9 +2,9 @@ -- Register wrench support for mesecons local function register_node_on_off(name, def) - wrench:register_node(name .. "_off", def) + wrench.register_node(name .. "_off", def) def.drop = true - wrench:register_node(name .. "_on", def) + wrench.register_node(name .. "_on", def) end local desc_conf = function(pos, meta, node, player) @@ -70,9 +70,9 @@ for b = 0, 1 do for c = 0, 1 do for d = 0, 1 do local state = d .. c .. b .. a - wrench:register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) + wrench.register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) - wrench:register_node("mesecons_microcontroller:microcontroller" .. state, { + wrench.register_node("mesecons_microcontroller:microcontroller" .. state, { drop = "mesecons_microcontroller:microcontroller0000", metas = { infotext = wrench.META_TYPE_STRING, @@ -92,4 +92,4 @@ end end luacontroller_defs.drop = nil -wrench:register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) +wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) diff --git a/nodes/mobs.lua b/nodes/mobs.lua index 1e80338..6d25658 100644 --- a/nodes/mobs.lua +++ b/nodes/mobs.lua @@ -1,7 +1,7 @@ -- Register wrench support for mobs_redo -wrench:register_node("mobs:spawner", { +wrench.register_node("mobs:spawner", { metas = { command = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, diff --git a/nodes/more_chests.lua b/nodes/more_chests.lua index 7545cab..dee69a5 100644 --- a/nodes/more_chests.lua +++ b/nodes/more_chests.lua @@ -16,7 +16,7 @@ local basic_chests = { } for _, chest in pairs(basic_chests) do - wrench:register_node(chest, { + wrench.register_node(chest, { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, @@ -28,7 +28,7 @@ end -- Shared Chest -wrench:register_node("more_chests:shared", { +wrench.register_node("more_chests:shared", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index ca64534..7e4a193 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -12,7 +12,7 @@ end -- Autocrafter -wrench:register_node("pipeworks:autocrafter", { +wrench.register_node("pipeworks:autocrafter", { lists = {"src", "dst", "recipe", "output"}, metas = { enabled = wrench.META_TYPE_INT, @@ -33,16 +33,16 @@ local wielder_data = { drop = true, } -wrench:register_node("pipeworks:deployer_off", wielder_data) -wrench:register_node("pipeworks:deployer_on", wielder_data) +wrench.register_node("pipeworks:deployer_off", wielder_data) +wrench.register_node("pipeworks:deployer_on", wielder_data) -wrench:register_node("pipeworks:dispenser_off", wielder_data) -wrench:register_node("pipeworks:dispenser_on", wielder_data) +wrench.register_node("pipeworks:dispenser_off", wielder_data) +wrench.register_node("pipeworks:dispenser_on", wielder_data) table.insert(wielder_data.lists, "pick") table.insert(wielder_data.lists, "ghost_pick") -wrench:register_node("pipeworks:nodebreaker_off", wielder_data) -wrench:register_node("pipeworks:nodebreaker_on", wielder_data) +wrench.register_node("pipeworks:nodebreaker_off", wielder_data) +wrench.register_node("pipeworks:nodebreaker_on", wielder_data) -- Filters @@ -59,16 +59,16 @@ local filter_data = { description = desc_ghost_items, } -wrench:register_node("pipeworks:filter", filter_data) -wrench:register_node("pipeworks:mese_filter", filter_data) +wrench.register_node("pipeworks:filter", filter_data) +wrench.register_node("pipeworks:mese_filter", filter_data) filter_data.metas["channel"] = wrench.META_TYPE_STRING -wrench:register_node("pipeworks:digiline_filter", filter_data) +wrench.register_node("pipeworks:digiline_filter", filter_data) -- Tubes (6d style): 'mese_sand_tube' and 'teleport_tube' for i = 1, 10 do - wrench:register_node("pipeworks:mese_sand_tube_"..i, { + wrench.register_node("pipeworks:mese_sand_tube_"..i, { drop = true, metas = { infotext = wrench.META_TYPE_STRING, @@ -76,7 +76,7 @@ for i = 1, 10 do }, description = desc_infotext, }) - wrench:register_node("pipeworks:teleport_tube_"..i, { + wrench.register_node("pipeworks:teleport_tube_"..i, { drop = true, metas = { infotext = wrench.META_TYPE_STRING, @@ -120,7 +120,7 @@ for i = 1, 6 do table.insert(mese_tube_data.lists, "line"..i) end -wrench:register_node("pipeworks:lua_tube_burnt", lua_tube_data) +wrench.register_node("pipeworks:lua_tube_burnt", lua_tube_data) for xm = 0, 1 do for xp = 0, 1 do @@ -129,8 +129,8 @@ for yp = 0, 1 do for zm = 0, 1 do for zp = 0, 1 do local tname = xm..xp..ym..yp..zm..zp - wrench:register_node("pipeworks:lua_tube"..tname, lua_tube_data) - wrench:register_node("pipeworks:mese_tube_"..tname, mese_tube_data) + wrench.register_node("pipeworks:lua_tube"..tname, lua_tube_data) + wrench.register_node("pipeworks:mese_tube_"..tname, mese_tube_data) end end end diff --git a/nodes/technic.lua b/nodes/technic.lua index 06ce1ce..4790999 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -15,7 +15,7 @@ local function register_machine_node(nodename, tier) tube_time = tier ~= "LV" and wrench.META_TYPE_INT or nil, src_time = wrench.META_TYPE_INT, } - wrench:register_node(nodename, {lists = lists, metas = metas}) + wrench.register_node(nodename, {lists = lists, metas = metas}) end local defaults = {tiers = {"LV", "MV", "HV"}} @@ -42,7 +42,7 @@ end -- Special nodes -wrench:register_node("technic:coal_alloy_furnace", { +wrench.register_node("technic:coal_alloy_furnace", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -53,7 +53,7 @@ wrench:register_node("technic:coal_alloy_furnace", { }, }) -wrench:register_node("technic:coal_alloy_furnace_active", { +wrench.register_node("technic:coal_alloy_furnace_active", { lists = {"fuel", "src", "dst"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -64,7 +64,7 @@ wrench:register_node("technic:coal_alloy_furnace_active", { }, }) -wrench:register_node("technic:tool_workshop", { +wrench.register_node("technic:tool_workshop", { lists = {"src", "upgrade1", "upgrade2"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -76,7 +76,7 @@ wrench:register_node("technic:tool_workshop", { for _, tier in pairs({"LV", "MV", "HV"}) do for i = 0, 8 do - wrench:register_node("technic:"..tier:lower().."_battery_box"..i, { + wrench.register_node("technic:"..tier:lower().."_battery_box"..i, { lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist, metas = { infotext = wrench.META_TYPE_STRING, @@ -93,7 +93,7 @@ end -- Other machines -wrench:register_node("technic:injector", { +wrench.register_node("technic:injector", { lists = {"main"}, metas = { splitstacks = wrench.META_TYPE_INT, diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index 251c3b3..43fe3cb 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -62,17 +62,17 @@ local chests_meta = { } for name, metas in pairs(chests_meta) do - wrench:register_node("technic:"..name.."_chest", { + wrench.register_node("technic:"..name.."_chest", { lists = {"main"}, metas = metas, description = get_chest_description, }) - wrench:register_node("technic:"..name.."_protected_chest", { + wrench.register_node("technic:"..name.."_protected_chest", { lists = {"main"}, metas = metas, description = get_chest_description, }) - wrench:register_node("technic:"..name.."_locked_chest", { + wrench.register_node("technic:"..name.."_locked_chest", { lists = {"main"}, metas = with_owner_field(metas), description = get_chest_description, @@ -101,17 +101,17 @@ local chest_mark_colors = { } for i = 1, 15 do - wrench:register_node("technic:gold_chest"..chest_mark_colors[i], { + wrench.register_node("technic:gold_chest"..chest_mark_colors[i], { lists = {"main"}, metas = chests_meta.gold, description = get_chest_description, }) - wrench:register_node("technic:gold_protected_chest"..chest_mark_colors[i], { + wrench.register_node("technic:gold_protected_chest"..chest_mark_colors[i], { lists = {"main"}, metas = chests_meta.gold, description = get_chest_description, }) - wrench:register_node("technic:gold_locked_chest"..chest_mark_colors[i], { + wrench.register_node("technic:gold_locked_chest"..chest_mark_colors[i], { lists = {"main"}, metas = with_owner_field(chests_meta.gold), description = get_chest_description, diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index 25f1f2f..ddd3ef9 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -4,10 +4,10 @@ local has_pipeworks = minetest.get_modpath("pipeworks") local function register_cnc(name, def) - wrench:register_node(name, def) + wrench.register_node(name, def) if minetest.registered_nodes[name.."_active"] then -- Only available if technic is active - wrench:register_node(name.."_active", def) + wrench.register_node(name.."_active", def) end end diff --git a/nodes/vessels.lua b/nodes/vessels.lua index 557487b..1aeb416 100644 --- a/nodes/vessels.lua +++ b/nodes/vessels.lua @@ -1,7 +1,7 @@ -- Register wrench support for vessels -wrench:register_node("vessels:shelf", { +wrench.register_node("vessels:shelf", { lists = { "vessels" }, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 1e21d22..f1047cc 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -11,7 +11,7 @@ local nodes = { } for _, nodename in pairs(nodes) do - wrench:register_node(nodename, { + wrench.register_node(nodename, { lists = {"main"}, }) end @@ -26,7 +26,7 @@ nodes = { } for _, nodename in pairs(nodes) do - wrench:register_node(nodename, { + wrench.register_node(nodename, { metas = { infotext = wrench.META_TYPE_STRING, }, @@ -39,7 +39,7 @@ end -- Chessboard -wrench:register_node("realchess:chessboard", { +wrench.register_node("realchess:chessboard", { lists = {"board"}, metas = { formspec = wrench.META_TYPE_STRING, @@ -70,7 +70,7 @@ wrench:register_node("realchess:chessboard", { -- Enchantment Table -wrench:register_node("xdecor:enchantment_table", { +wrench.register_node("xdecor:enchantment_table", { lists = {"tool", "mese"}, metas = { infotext = wrench.META_TYPE_STRING, @@ -80,7 +80,7 @@ wrench:register_node("xdecor:enchantment_table", { -- Hive -wrench:register_node("xdecor:hive", { +wrench.register_node("xdecor:hive", { timer = true, lists = {"honey"}, metas = { @@ -91,7 +91,7 @@ wrench:register_node("xdecor:hive", { -- Item Frame -wrench:register_node("xdecor:itemframe", { +wrench.register_node("xdecor:itemframe", { metas = { owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, @@ -128,7 +128,7 @@ for i = 1, 7 do mailbox_metas["stack"..i] = wrench.META_TYPE_STRING end -wrench:register_node("xdecor:mailbox", { +wrench.register_node("xdecor:mailbox", { lists = {"mailbox", "drop"}, metas = mailbox_metas, owned = true, @@ -136,7 +136,7 @@ wrench:register_node("xdecor:mailbox", { -- Workbench -wrench:register_node("xdecor:workbench", { +wrench.register_node("xdecor:workbench", { lists = {"tool", "input", "hammer", "forms", "storage"}, metas = { infotext = wrench.META_TYPE_STRING, diff --git a/tool.lua b/tool.lua index 402fd7e..fc70818 100644 --- a/tool.lua +++ b/tool.lua @@ -13,7 +13,7 @@ minetest.register_tool("wrench:wrench", { if not pos or minetest.is_protected(pos, name) then return end - local picked_up, err_msg = wrench:pickup_node(pos, player) + local picked_up, err_msg = wrench.pickup_node(pos, player) if not picked_up then if err_msg then minetest.chat_send_player(name, err_msg) From 302173124ade4d433c1a7f443c158e03e14e0e7f Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sun, 5 Dec 2021 15:48:37 +1100 Subject: [PATCH 053/130] add compatibility for `:` fixes #3 --- init.lua | 4 ++-- legacy.lua | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index cd6b17c..818be7f 100644 --- a/init.lua +++ b/init.lua @@ -9,10 +9,10 @@ wrench = { META_TYPE_INT = 3, } -dofile(modpath.."/legacy.lua") +dofile(modpath.."/api.lua") dofile(modpath.."/functions.lua") dofile(modpath.."/tool.lua") -dofile(modpath.."/api.lua") +dofile(modpath.."/legacy.lua") local mods = { "3d_armor_stand", diff --git a/legacy.lua b/legacy.lua index abef66e..edf3eea 100644 --- a/legacy.lua +++ b/legacy.lua @@ -1,4 +1,16 @@ +-- Compatibility for old function signature + +local register_node = wrench.register_node + +function wrench.register_node(self, ...) + if self == wrench then + register_node(...) + else + register_node(self, ...) + end +end + -- Register aliases for old wrench:picked_up_* nodes local all_nodes = { From 820b8d5b60432fa0555f582dd9a5365ae9c8a833 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sun, 5 Dec 2021 15:57:32 +1100 Subject: [PATCH 054/130] Revert "add compatibility for `:`" This reverts commit 302173124ade4d433c1a7f443c158e03e14e0e7f. --- init.lua | 4 ++-- legacy.lua | 12 ------------ 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/init.lua b/init.lua index 818be7f..cd6b17c 100644 --- a/init.lua +++ b/init.lua @@ -9,10 +9,10 @@ wrench = { META_TYPE_INT = 3, } -dofile(modpath.."/api.lua") +dofile(modpath.."/legacy.lua") dofile(modpath.."/functions.lua") dofile(modpath.."/tool.lua") -dofile(modpath.."/legacy.lua") +dofile(modpath.."/api.lua") local mods = { "3d_armor_stand", diff --git a/legacy.lua b/legacy.lua index edf3eea..abef66e 100644 --- a/legacy.lua +++ b/legacy.lua @@ -1,16 +1,4 @@ --- Compatibility for old function signature - -local register_node = wrench.register_node - -function wrench.register_node(self, ...) - if self == wrench then - register_node(...) - else - register_node(self, ...) - end -end - -- Register aliases for old wrench:picked_up_* nodes local all_nodes = { From 3a267e6fd207768674af05dd10ac3dd23a92750a Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sun, 5 Dec 2021 16:38:00 +1100 Subject: [PATCH 055/130] add `wrench.plus = true` https://github.com/mt-mods/wrench/issues/3#issuecomment-986166887 --- init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/init.lua b/init.lua index cd6b17c..813f12f 100644 --- a/init.lua +++ b/init.lua @@ -2,6 +2,7 @@ local modpath = minetest.get_modpath("wrench") wrench = { + plus = true, registered_nodes = {}, blacklisted_items = {}, META_TYPE_FLOAT = 1, From d253340308763e05f08b84f0d88e1ee05057bef5 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Sun, 5 Dec 2021 17:56:35 +1100 Subject: [PATCH 056/130] fixes for lua nodes --- nodes/mesecons.lua | 47 +++++++++++++++++++++++---------------------- nodes/pipeworks.lua | 15 ++++++++------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index e3f406e..2ff2dd2 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -2,9 +2,9 @@ -- Register wrench support for mesecons local function register_node_on_off(name, def) - wrench.register_node(name .. "_off", def) + wrench.register_node(name.."_off", def) def.drop = true - wrench.register_node(name .. "_on", def) + wrench.register_node(name.."_on", def) end local desc_conf = function(pos, meta, node, player) @@ -49,7 +49,7 @@ register_node_on_off("mesecons_detector:object_detector", { -- Controllers -local luacontroller_defs = { +local luacontroller_def = { drop = true, metas = { code = wrench.META_TYPE_STRING, @@ -60,36 +60,37 @@ local luacontroller_defs = { ignore_offevents = wrench.META_TYPE_STRING, }, description = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description + local desc = minetest.registered_nodes["mesecons_luacontroller:luacontroller0000"].description return string.format("%s with code", desc) end, } +local microcontroller_def = { + drop = true, + metas = { + infotext = wrench.META_TYPE_STRING, + code = wrench.META_TYPE_STRING, + afterid = wrench.META_TYPE_INT, + eeprom = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + real_portstates = wrench.META_TYPE_INT, + }, + description = function(pos, meta, node, player) + return meta:get_string("infotext") + end, +} + for a = 0, 1 do for b = 0, 1 do for c = 0, 1 do for d = 0, 1 do - local state = d .. c .. b .. a - wrench.register_node("mesecons_luacontroller:luacontroller" .. state, luacontroller_defs) - - wrench.register_node("mesecons_microcontroller:microcontroller" .. state, { - drop = "mesecons_microcontroller:microcontroller0000", - metas = { - infotext = wrench.META_TYPE_STRING, - code = wrench.META_TYPE_STRING, - afterid = wrench.META_TYPE_INT, - eeprom = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, - real_portstates = wrench.META_TYPE_INT, - }, - description = function(pos, meta, node, player) - return meta:get_string("infotext") - end, - }) + local state = d..c..b..a + wrench.register_node("mesecons_luacontroller:luacontroller"..state, luacontroller_def) + wrench.register_node("mesecons_microcontroller:microcontroller"..state, microcontroller_def) end end end end -luacontroller_defs.drop = nil -wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_defs) +luacontroller_def.drop = nil +wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_def) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 7e4a193..73b21f9 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -1,7 +1,7 @@ -- Register wrench support for pipeworks -local desc_ghost_items = function(pos, meta, node, player) +local desc_config = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description return string.format("%s with configuration", desc) end @@ -56,7 +56,7 @@ local filter_data = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - description = desc_ghost_items, + description = desc_config, } wrench.register_node("pipeworks:filter", filter_data) @@ -101,8 +101,8 @@ local lua_tube_data = { real_portstates = wrench.META_TYPE_INT, }, description = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description - return string.format("%s with program", desc) + local desc = minetest.registered_nodes["pipeworks:lua_tube000000"].description + return string.format("%s with code", desc) end, } @@ -112,7 +112,7 @@ local mese_tube_data = { metas = { formspec = wrench.META_TYPE_STRING, }, - description = desc_ghost_items, + description = desc_config, } for i = 1, 6 do @@ -120,8 +120,6 @@ for i = 1, 6 do table.insert(mese_tube_data.lists, "line"..i) end -wrench.register_node("pipeworks:lua_tube_burnt", lua_tube_data) - for xm = 0, 1 do for xp = 0, 1 do for ym = 0, 1 do @@ -137,3 +135,6 @@ end end end end + +lua_tube_data.drop = nil +wrench.register_node("pipeworks:lua_tube_burnt", lua_tube_data) From 4dd385ce2b4e93ffa18ae5eb9ae23a5fd41489d8 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Sun, 5 Dec 2021 13:07:09 +0100 Subject: [PATCH 057/130] Update README.md --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index c2bb681..abe1dab 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,14 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - default:furnace - default:sign_wall_wood - default:sign_wall_steel + - vessels:shelf +* https://github.com/minetest-mods/3d_armor + - 3d_armor_stand:armor_stand + - 3d_armor_stand:locked_armor_stand +* https://notabug.org/TenPlus1/bees + - bees:hive_wild +* https://github.com/Lokrates/Biofuel + - biofuel:refinery * https://github.com/HybridDog/connected_chests * https://github.com/minetest-mods/digtron - digtron:battery_holder @@ -34,6 +42,14 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - drawers:aspen_wood - drawers:junglewood - drawers:pine_wood +* https://github.com/minetest-mods/mesecons + - mesecons_commandblock:commandblock_* + - mesecons_detector:node_detector_* + - mesecons_detector:object_detector_* + - mesecons_luacontroller:luacontroller* + - mesecons_microcontroller:microcontroller* +* https://notabug.org/tenplus1/mobs_redo + - mobs:spawner * https://github.com/minetest-mods/more_chests - more_chests:cobble - more_chests:dropbox @@ -48,8 +64,13 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - pipeworks:dispenser_* - pipeworks:nodebreaker_* - pipeworks:*filter + - pipeworks:lua_tube* + - pipeworks:mese_sand_tube_* + - pipeworks:mese_tube_* + - pipeworks:teleport_tube_* * https://github.com/mt-mods/technic * https://github.com/minetest-mods/xdecor + - realchess:chessboard - xdecor:cabinet - xdecor:cabinet_half - xdecor:empty_shelf From d662feb99ef67bdab2c115cd390f33a0be58e40b Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sun, 5 Dec 2021 13:14:18 +0100 Subject: [PATCH 058/130] list supported modnames and nodes --- debug.lua | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/debug.lua b/debug.lua index 45ffb91..6e48a4c 100644 --- a/debug.lua +++ b/debug.lua @@ -7,6 +7,26 @@ local get_keys = function(list) return keys end +local spairs = function(tbl, order_func) + local ptrs = {} + for p in pairs(tbl) do ptrs[#ptrs +1] = p end + table.sort(ptrs, order_func and function(a, b) return order_func(a, b) end) + local i = 0 + return function() + i = i +1 + if ptrs[i] then return ptrs[i], tbl[ptrs[i]] end + end +end + +local strip_esc = function(text) + text = minetest.strip_colors(text) + -- strip translation foo + text = string.gsub(text, "^.*T@.*%)", "") + return string.gsub(text, "%c.", "") +end + +-- use wrench with sneak to show node propperies (useful to add new nodes) + local orig_wrench_pickup_node = wrench.pickup_node wrench.pickup_node = function(pos, player) if not player:get_player_control().sneak then @@ -39,7 +59,7 @@ wrench.pickup_node = function(pos, player) if def.can_dig then print("\t-- has can_dig " .. type(def.can_dig) .. " " .. ((type(def.can_dig) == "function") and - (def.can_dig(pos, player) and ', returns rue' or 'returns false') or "" + (def.can_dig(pos, player) and ', returns true' or ', returns false') or "" ) ) end @@ -80,3 +100,24 @@ wrench.pickup_node = function(pos, player) print("})") end +-- list supported modnames and nodes (useful to update README.md) + +minetest.register_on_mods_loaded(function() + print("wrench registered_nodes:") + local last_mod = "?" + for name, def in spairs(wrench.registered_nodes, function(a,b) +-- return minetest.registered_nodes[a].mod_origin < minetest.registered_nodes[b].mod_origin or a < b + return a < b + end) do + if not def.drop then + local node = minetest.registered_nodes[name] + local mod = node.mod_origin + if last_mod ~= mod then + last_mod = mod + print("* "..mod) + end + local desc = strip_esc(node.description or "") + print(string.format(" - %-40s %q", name, desc)) + end + end +end) From b2b48cc90f5e58cd6e379b599a244ad1cdb91d85 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Sun, 5 Dec 2021 13:29:07 +0100 Subject: [PATCH 059/130] Update README.md --- README.md | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index abe1dab..1ef373e 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,11 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - drawers:junglewood - drawers:pine_wood * https://github.com/minetest-mods/mesecons - - mesecons_commandblock:commandblock_* - - mesecons_detector:node_detector_* - - mesecons_detector:object_detector_* - - mesecons_luacontroller:luacontroller* - - mesecons_microcontroller:microcontroller* + - mesecons_commandblock:commandblock_\* + - mesecons_detector:node_detector_\* + - mesecons_detector:object_detector_\* + - mesecons_luacontroller:luacontroller\* + - mesecons_microcontroller:microcontroller\* * https://notabug.org/tenplus1/mobs_redo - mobs:spawner * https://github.com/minetest-mods/more_chests @@ -57,25 +57,38 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - more_chests:big_fridge - more_chests:shared - more_chests:secret - - more_chests:toolbox_* + - more_chests:toolbox_\* * https://github.com/mt-mods/pipeworks - pipeworks:autocrafter - - pipeworks:deployer_* - - pipeworks:dispenser_* - - pipeworks:nodebreaker_* - - pipeworks:*filter + - pipeworks:deployer_\* + - pipeworks:dispenser_\* + - pipeworks:nodebreaker_\* + - pipeworks:\*filter - pipeworks:lua_tube* - - pipeworks:mese_sand_tube_* - - pipeworks:mese_tube_* - - pipeworks:teleport_tube_* + - pipeworks:mese_sand_tube_\* + - pipeworks:mese_tube_\* + - pipeworks:teleport_tube_\* * https://github.com/mt-mods/technic + - technic:cnc\* + - technic:coal_alloy_furnace\* + - technic:\*chest\* + - technic:injector + - technic:tool_workshop + - technic:\*_alloy_furnace\* + - technic:\*_battery_box\* + - technic:\*_centrifuge\* + - technic:\*_compressor\* + - technic:\*_electric_furnace\* + - technic:\*_extractor\* + - technic:\*_freezer\* + - technic:\*_grinder\* * https://github.com/minetest-mods/xdecor - realchess:chessboard - xdecor:cabinet - xdecor:cabinet_half - xdecor:empty_shelf - xdecor:multishelf - - xdecor:cauldron_* + - xdecor:cauldron_\* - xdecor:enchantment_table - xdecor:itemframe - xdecor:mailbox From f9da60c5708ffc3169906905c73d2e6e9ec79975 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 6 Dec 2021 15:04:18 +0100 Subject: [PATCH 060/130] fix and update translations --- .luacheckrc | 1 - functions.lua | 12 ++++++------ init.lua | 5 ++++- locale/de.txt | 7 ------- locale/es.txt | 5 ----- locale/fr.txt | 5 ----- locale/pl.txt | 7 ------- locale/pt_BR.txt | 7 ------- locale/template.txt | 18 ++++++++++++++++-- locale/tr.txt | 5 ----- locale/wrench.de.tr | 21 +++++++++++++++++++++ locale/wrench.es.tr | 19 +++++++++++++++++++ locale/wrench.fr.tr | 19 +++++++++++++++++++ locale/wrench.pl.tr | 21 +++++++++++++++++++++ locale/wrench.pt_BR.tr | 21 +++++++++++++++++++++ locale/wrench.tr.tr | 19 +++++++++++++++++++ locale/wrench.zh_CN.tr | 16 ++++++++++++++++ locale/zh_CN.txt | 2 -- mod.conf | 1 - nodes/3d_armor_stand.lua | 4 +++- nodes/default.lua | 4 +++- nodes/digilines.lua | 4 +++- nodes/mesecons.lua | 6 ++++-- nodes/pipeworks.lua | 6 ++++-- nodes/xdecor.lua | 6 ++++-- tool.lua | 2 +- 26 files changed, 184 insertions(+), 59 deletions(-) delete mode 100644 locale/de.txt delete mode 100644 locale/es.txt delete mode 100644 locale/fr.txt delete mode 100644 locale/pl.txt delete mode 100644 locale/pt_BR.txt delete mode 100644 locale/tr.txt create mode 100644 locale/wrench.de.tr create mode 100644 locale/wrench.es.tr create mode 100644 locale/wrench.fr.tr create mode 100644 locale/wrench.pl.tr create mode 100644 locale/wrench.pt_BR.tr create mode 100644 locale/wrench.tr.tr create mode 100644 locale/wrench.zh_CN.tr delete mode 100644 locale/zh_CN.txt diff --git a/.luacheckrc b/.luacheckrc index 249a8ef..c941b97 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -15,7 +15,6 @@ read_globals = { -- Mods "digilines", "drawers", - "intllib", "mesecon", "pipeworks", "xdecor", diff --git a/functions.lua b/functions.lua index 291d5da..7b2ba18 100644 --- a/functions.lua +++ b/functions.lua @@ -1,5 +1,5 @@ -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end +local S = wrench.translator local SERIALIZATION_VERSION = 1 @@ -8,9 +8,9 @@ local has_mesecons = minetest.get_modpath("mesecons") local has_digilines = minetest.get_modpath("digilines") local errors = { - owned = S("Cannot pickup node. Owned by %s."), + owned = function(owner) return S("Cannot pickup node. Owned by @1.", owner) end, full_inv = S("Not enough room in inventory to pickup node."), - bad_item = S("Cannot pickup node containing %s."), + bad_item = function(item) return S("Cannot pickup node containing @1.", item) end, nested = S("Cannot pickup node. Nesting inventories is not allowed."), metadata = S("Cannot pickup node. Node contains too much metadata."), } @@ -35,7 +35,7 @@ local function get_description(def, pos, meta, node, player) return desc end end - return S("%s with items"):format(minetest.registered_nodes[node.name].description) + return S("@1 with items", minetest.registered_nodes[node.name].description) end function wrench.pickup_node(pos, player) @@ -48,7 +48,7 @@ function wrench.pickup_node(pos, player) if def.owned and not minetest.check_player_privs(player, "protection_bypass") then local owner = meta:get_string("owner") if owner ~= "" and owner ~= player:get_player_name() then - return false, errors.owned:format(owner) + return false, errors.owned(owner) end end local data = { @@ -63,7 +63,7 @@ function wrench.pickup_node(pos, player) for i, stack in pairs(list) do if wrench.blacklisted_items[stack:get_name()] then local desc = stack:get_definition().description - return false, errors.bad_item:format(desc) + return false, errors.bad_item(desc) end local sdata = get_stored_metadata(stack) if sdata and sdata.lists and next(sdata.lists) ~= nil then diff --git a/init.lua b/init.lua index 813f12f..0ba606f 100644 --- a/init.lua +++ b/init.lua @@ -1,7 +1,10 @@ -local modpath = minetest.get_modpath("wrench") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) wrench = { + translator = S, plus = true, registered_nodes = {}, blacklisted_items = {}, diff --git a/locale/de.txt b/locale/de.txt deleted file mode 100644 index b285cd3..0000000 --- a/locale/de.txt +++ /dev/null @@ -1,7 +0,0 @@ -# German Translation for technic_wrench -# Deutsche Ãœbersetzung von technic_wrench -# by Xanthin - -Wrench = Schraubenschluessel -%s with items = %s mit Gegenstaenden - diff --git a/locale/es.txt b/locale/es.txt deleted file mode 100644 index 1d79a96..0000000 --- a/locale/es.txt +++ /dev/null @@ -1,5 +0,0 @@ -# technic_wrench traducido por Carlos Barraza - -Wrench = Llave Inglesa -%s with items = %s con elementos - diff --git a/locale/fr.txt b/locale/fr.txt deleted file mode 100644 index a66b6e3..0000000 --- a/locale/fr.txt +++ /dev/null @@ -1,5 +0,0 @@ -# technic_wrench translation template - -Wrench = Clé -%s with items = %s avec des objets - diff --git a/locale/pl.txt b/locale/pl.txt deleted file mode 100644 index 272eaa0..0000000 --- a/locale/pl.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Polish Translation for technic_wrench -# Polskie tÅ‚umaczenie technic_wrench -# by mat9117 - -Wrench = Klucz -%s with items = %s z rzeczami - diff --git a/locale/pt_BR.txt b/locale/pt_BR.txt deleted file mode 100644 index 670c3eb..0000000 --- a/locale/pt_BR.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Braziliam portuguese translation for wrench -# Tradução portuguesa brasileira para wrench -# By Sires - -Wrench = Chave Inglesa -%s with items = %s com items - diff --git a/locale/template.txt b/locale/template.txt index eff2da2..a024332 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -1,5 +1,19 @@ +# textdomain: wrench + # technic_wrench translation template -Wrench = -%s with items = +Wrench= +@1 with items= +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/tr.txt b/locale/tr.txt deleted file mode 100644 index 2050bce..0000000 --- a/locale/tr.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Turkish translation by mahmutelmas06 -# mahmutelmas06@hotmail.com - -Wrench = Ä°ngiliz anahtarı -%s with items = Araçlarla birlikte %s diff --git a/locale/wrench.de.tr b/locale/wrench.de.tr new file mode 100644 index 0000000..a143b7b --- /dev/null +++ b/locale/wrench.de.tr @@ -0,0 +1,21 @@ +# textdomain: wrench + +# German Translation for technic_wrench +# Deutsche Ãœbersetzung von technic_wrench +# by Xanthin and others + +Wrench=Schraubenschluessel +@1 with items=@1 mit Gegenstaenden + +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"=@1 mit Kanal "@2" +@1 with armor=@1 mit Rüstung +@1 with configuration=@1 mit Konfiguration +@1 with code=@1 mit Code +@1 "@2" vs. "@3"=@1 "@2" gegen "@3" +@1 with "@2"=@1 mit "@2" +@1 with text "@2"=@1 mit Text "@2" diff --git a/locale/wrench.es.tr b/locale/wrench.es.tr new file mode 100644 index 0000000..45f0c33 --- /dev/null +++ b/locale/wrench.es.tr @@ -0,0 +1,19 @@ +# textdomain: wrench + +# technic_wrench traducido por Carlos Barraza + +Wrench=Llave Inglesa +@1 with items=@1 con elementos + +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/wrench.fr.tr b/locale/wrench.fr.tr new file mode 100644 index 0000000..ea800e2 --- /dev/null +++ b/locale/wrench.fr.tr @@ -0,0 +1,19 @@ +# textdomain: wrench + +# technic_wrench translation template + +Wrench=Clé +@1 with items=@1 avec des objets + +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/wrench.pl.tr b/locale/wrench.pl.tr new file mode 100644 index 0000000..3f31b31 --- /dev/null +++ b/locale/wrench.pl.tr @@ -0,0 +1,21 @@ +# textdomain: wrench + +# Polish Translation for technic_wrench +# Polskie tÅ‚umaczenie technic_wrench +# by mat9117 + +Wrench=Klucz +@1 with items=@1 z rzeczami + +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/wrench.pt_BR.tr b/locale/wrench.pt_BR.tr new file mode 100644 index 0000000..f4ef8a5 --- /dev/null +++ b/locale/wrench.pt_BR.tr @@ -0,0 +1,21 @@ +# textdomain: wrench + +# Braziliam portuguese translation for wrench +# Tradução portuguesa brasileira para wrench +# By Sires + +Wrench=Chave Inglesa +@1 with items=@1 com items + +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/wrench.tr.tr b/locale/wrench.tr.tr new file mode 100644 index 0000000..d0c5934 --- /dev/null +++ b/locale/wrench.tr.tr @@ -0,0 +1,19 @@ +# textdomain: wrench + +# Turkish translation by mahmutelmas06 +# mahmutelmas06@hotmail.com + +Wrench=Ä°ngiliz anahtarı +@1 with items=Araçlarla birlikte @1 +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/wrench.zh_CN.tr b/locale/wrench.zh_CN.tr new file mode 100644 index 0000000..fc47127 --- /dev/null +++ b/locale/wrench.zh_CN.tr @@ -0,0 +1,16 @@ +# textdomain: wrench + +Wrench=°âÊÖ +@1 with items=@1´øÎïÆ· +Cannot pickup node. Owned by @1.= +Not enough room in inventory to pickup node.= +Cannot pickup node containing @1.= +Cannot pickup node. Nesting inventories is not allowed.= +Cannot pickup node. Node contains too much metadata.= +@1 with channel "@2"= +@1 with armor= +@1 with configuration= +@1 with code= +@1 "@2" vs. "@3"= +@1 with "@2"= +@1 with text "@2"= diff --git a/locale/zh_CN.txt b/locale/zh_CN.txt deleted file mode 100644 index 34ed504..0000000 --- a/locale/zh_CN.txt +++ /dev/null @@ -1,2 +0,0 @@ -Wrench =°âÊÖ -%s with items =%s´øÎïÆ· diff --git a/mod.conf b/mod.conf index 88cd213..5ebd48c 100644 --- a/mod.conf +++ b/mod.conf @@ -7,7 +7,6 @@ optional_depends = """ default, digtron, drawers, - intllib, more_chests, pipeworks, technic, diff --git a/nodes/3d_armor_stand.lua b/nodes/3d_armor_stand.lua index 5098b19..13512b8 100644 --- a/nodes/3d_armor_stand.lua +++ b/nodes/3d_armor_stand.lua @@ -1,6 +1,8 @@ -- Register wrench support for armor stands +local S = wrench.translator + local def = minetest.registered_nodes["3d_armor_stand:armor_stand"] local add_entity_and_node = def and def.after_place_node @@ -20,7 +22,7 @@ end local function description(pos, meta, node) local desc = minetest.registered_nodes[node.name].description - return string.format("%s with armor", desc) + return S("@1 with armor", desc) end wrench.register_node("3d_armor_stand:armor_stand", { diff --git a/nodes/default.lua b/nodes/default.lua index f91ffc3..1f243dd 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -1,6 +1,8 @@ -- Register nodes from default / minetest_game +local S = wrench.translator + local has_pipeworks = minetest.get_modpath("pipeworks") local splitstacks = has_pipeworks and wrench.META_TYPE_INT local formspec = has_pipeworks and wrench.META_TYPE_STRING @@ -56,7 +58,7 @@ local function get_sign_description(pos, meta, node) if #text > 32 then text = text:sub(1, 24).."..." end - return string.format("%s with text \"%s\"", desc, text) + return S("@1 with text \"@2\"", desc, text) end wrench.register_node("default:sign_wall_wood", { diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 28fafe3..45480b3 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -1,9 +1,11 @@ -- Register wrench support for digilines +local S = wrench.translator + local desc_channel = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s with channel \"%s\"", desc, meta:get_string("channel")) + return S("@1 with channel \"@2\"", desc, meta:get_string("channel")) end wrench.register_node("digilines:chest", { diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua index 2ff2dd2..5010bd1 100644 --- a/nodes/mesecons.lua +++ b/nodes/mesecons.lua @@ -1,6 +1,8 @@ -- Register wrench support for mesecons +local S = wrench.translator + local function register_node_on_off(name, def) wrench.register_node(name.."_off", def) def.drop = true @@ -9,7 +11,7 @@ end local desc_conf = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s with configuration", desc) + return S("@1 with configuration", desc) end -- Commandblock @@ -61,7 +63,7 @@ local luacontroller_def = { }, description = function(pos, meta, node, player) local desc = minetest.registered_nodes["mesecons_luacontroller:luacontroller0000"].description - return string.format("%s with code", desc) + return S("@1 with code", desc) end, } diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 73b21f9..9f41a65 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -1,9 +1,11 @@ -- Register wrench support for pipeworks +local S = wrench.translator + local desc_config = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s with configuration", desc) + return S("@1 with configuration", desc) end local desc_infotext = function(pos, meta, node, player) @@ -102,7 +104,7 @@ local lua_tube_data = { }, description = function(pos, meta, node, player) local desc = minetest.registered_nodes["pipeworks:lua_tube000000"].description - return string.format("%s with code", desc) + return S("@1 with code", desc) end, } diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index f1047cc..3063d88 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -1,6 +1,8 @@ -- Register wrench support for xdecor +local S = wrench.translator + xdecor:register_repairable("wrench:wrench") local nodes = { @@ -64,7 +66,7 @@ wrench.register_node("realchess:chessboard", { }, description = function(pos, meta, node, player) local desc = minetest.registered_nodes[node.name].description - return string.format("%s '%s' vs. '%s'", desc, meta:get_string("playerWhite"), meta:get_string("playerBlack")) + return S("@1 \"@2\" vs. \"@3\"", desc, meta:get_string("playerWhite"), meta:get_string("playerBlack")) end }) @@ -108,7 +110,7 @@ wrench.register_node("xdecor:itemframe", { local item = meta:get_string("item") if item and item ~= "" then local d = ItemStack(item):get_short_description() - return string.format("%s with \"%s\"", desc, d or item) + return S("@1 with \"@2\"", desc, d or item) else return desc end diff --git a/tool.lua b/tool.lua index fc70818..3fa03bd 100644 --- a/tool.lua +++ b/tool.lua @@ -1,5 +1,5 @@ -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end +local S = wrench.translator minetest.register_tool("wrench:wrench", { description = S("Wrench"), From f71f2a3a146c99221055cb5f0d4322b4aab8f84b Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 6 Dec 2021 15:10:27 +0100 Subject: [PATCH 061/130] fix luacheck warning --- init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 0ba606f..61b5374 100644 --- a/init.lua +++ b/init.lua @@ -39,9 +39,9 @@ local mods = { "xdecor", } -for _, modname in pairs(mods) do - if minetest.get_modpath(modname) then - dofile(modpath.."/nodes/"..modname..".lua") +for _, mod in pairs(mods) do + if minetest.get_modpath(mod) then + dofile(modpath.."/nodes/"..mod..".lua") end end From c16ae418eb1465d8de779d8a106874970c58ef06 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 01:42:17 +1100 Subject: [PATCH 062/130] modname is always "wrench" --- init.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 61b5374..09af962 100644 --- a/init.lua +++ b/init.lua @@ -1,7 +1,6 @@ -local modname = minetest.get_current_modname() -local modpath = minetest.get_modpath(modname) -local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath("wrench") +local S = minetest.get_translator("wrench") wrench = { translator = S, From 76cbf7ede7efdb7b4e3c8521e03df965a042df7c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 6 Dec 2021 17:54:31 +0100 Subject: [PATCH 063/130] Revert "Revert "add compatibility for `:`"" This reverts commit 820b8d5b60432fa0555f582dd9a5365ae9c8a833. --- init.lua | 4 ++-- legacy.lua | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 09af962..8d15c75 100644 --- a/init.lua +++ b/init.lua @@ -12,10 +12,10 @@ wrench = { META_TYPE_INT = 3, } -dofile(modpath.."/legacy.lua") +dofile(modpath.."/api.lua") dofile(modpath.."/functions.lua") dofile(modpath.."/tool.lua") -dofile(modpath.."/api.lua") +dofile(modpath.."/legacy.lua") local mods = { "3d_armor_stand", diff --git a/legacy.lua b/legacy.lua index abef66e..edf3eea 100644 --- a/legacy.lua +++ b/legacy.lua @@ -1,4 +1,16 @@ +-- Compatibility for old function signature + +local register_node = wrench.register_node + +function wrench.register_node(self, ...) + if self == wrench then + register_node(...) + else + register_node(self, ...) + end +end + -- Register aliases for old wrench:picked_up_* nodes local all_nodes = { From 83b903efcff477858b43d9d3233372f0014dd4eb Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 17:28:46 +1100 Subject: [PATCH 064/130] pass `pointed_thing` to `def.after_place` --- functions.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions.lua b/functions.lua index 7b2ba18..3d8cddc 100644 --- a/functions.lua +++ b/functions.lua @@ -123,7 +123,7 @@ function wrench.pickup_node(pos, player) return true end -function wrench.restore_node(pos, player, stack) +function wrench.restore_node(pos, player, stack, pointed) if not stack then return end @@ -159,7 +159,7 @@ function wrench.restore_node(pos, player, stack) end end if def.after_place then - def.after_place(pos, player, stack) + def.after_place(pos, player, stack, pointed) end local node_def = minetest.registered_nodes[data.name] if has_pipeworks and node_def.tube then From e3fafc6151c21853abdcd0efac5ac37f3ff65b40 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 17:29:06 +1100 Subject: [PATCH 065/130] `signs_lib` support --- init.lua | 1 + nodes/signs_lib.lua | 67 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 nodes/signs_lib.lua diff --git a/init.lua b/init.lua index 8d15c75..6c33365 100644 --- a/init.lua +++ b/init.lua @@ -31,6 +31,7 @@ local mods = { "mobs", "more_chests", "pipeworks", + "signs_lib", "technic", "technic_chests", "technic_cnc", diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua new file mode 100644 index 0000000..cc8e481 --- /dev/null +++ b/nodes/signs_lib.lua @@ -0,0 +1,67 @@ + +-- Register wrench support for signs_lib (overrides default signs) + +local S = wrench.translator + +local function get_sign_description(pos, meta, node) + local desc = minetest.registered_nodes[node.name].description + local text = meta:get_string("text") + if #text > 32 then + text = text:sub(1, 24).."..." + end + return S("@1 with text \"@2\"", desc, text) +end + +-- Wood signs + +local wood_signs = { + "default:sign_wall_wood", + "default:sign_wood_hanging", + "default:sign_wood_onpole", + "default:sign_wood_onpole_horiz", + "default:sign_wood_yard", +} + +for _, n in pairs(wood_signs) do + wrench.register_node(n, { + metas = { + text = wrench.META_TYPE_STRING, + glow = wrench.META_TYPE_STRING, + widefont = wrench.META_TYPE_INT, + }, + after_place = function(pos, player, stack, pointed) + signs_lib.after_place_node(pos, player, stack, pointed) + signs_lib.update_sign(pos) + end, + description = get_sign_description, + drop = "default:sign_wall_wood", + }) +end + +-- Steel signs (locked) + +local steel_signs = { + "default:sign_wall_steel", + "default:sign_steel_hanging", + "default:sign_steel_onpole", + "default:sign_steel_onpole_horiz", + "default:sign_steel_yard", +} + +for _, n in pairs(steel_signs) do + wrench.register_node(n, { + metas = { + text = wrench.META_TYPE_STRING, + glow = wrench.META_TYPE_STRING, + widefont = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + }, + after_place = function(pos, player, stack, pointed) + signs_lib.after_place_node(pos, player, stack, pointed, true) + signs_lib.update_sign(pos) + end, + description = get_sign_description, + drop = "default:sign_wall_steel", + owned = true, + }) +end From eda2143d274a14f01bc5dae98669a2fac479c746 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 17:47:56 +1100 Subject: [PATCH 066/130] only override nodes once --- api.lua | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/api.lua b/api.lua index e59c604..1703222 100644 --- a/api.lua +++ b/api.lua @@ -4,14 +4,6 @@ function wrench.register_node(name, def) assert(type(def) == "table", "wrench.register_node invalid type for def") local node_def = minetest.registered_nodes[name] if node_def then - local old_after_place = node_def.after_place_node - minetest.override_item(name, { - after_place_node = function(...) - if not wrench.restore_node(...) and old_after_place then - return old_after_place(...) - end - end - }) def = table.copy(def) if def.drop == true and type(node_def.drop) == "string" then def.drop = node_def.drop @@ -40,3 +32,22 @@ function wrench.blacklist_item(name) minetest.log("warning", "Attempt to blacklist unknown item for wrench. "..name) end end + +minetest.register_on_mods_loaded(function() + for name, def in pairs(wrench.registered_nodes) do + local node_def = minetest.registered_nodes[name] + if node_def then + local old_after_place = node_def.after_place_node + minetest.override_item(name, { + after_place_node = function(...) + if not wrench.restore_node(...) and old_after_place then + return old_after_place(...) + end + end + }) + else + minetest.log("warning", "Registered node is now unknown: "..name) + wrench.registered_nodes[name] = nil + end + end +end) From 83cfbc3b81bc27e3d019095028f59617a7e9953f Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 17:50:03 +1100 Subject: [PATCH 067/130] mark log messages with "[wrench]" --- api.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api.lua b/api.lua index 1703222..095968f 100644 --- a/api.lua +++ b/api.lua @@ -8,18 +8,18 @@ function wrench.register_node(name, def) if def.drop == true and type(node_def.drop) == "string" then def.drop = node_def.drop elseif def.drop and type(def.drop) ~= "string" then - minetest.log("warning", "Ignoring invalid type for drop in definition for "..name) + minetest.log("warning", "[wrench] Ignoring invalid type for drop in definition for "..name) def.drop = nil end if def.drop and not wrench.registered_nodes[def.drop] then if def.drop ~= name then - minetest.log("warning", "Ignoring unsupported node for drop in definition for "..name) + minetest.log("warning", "[wrench] Ignoring unsupported node for drop in definition for "..name) end def.drop = nil end wrench.registered_nodes[name] = def else - minetest.log("warning", "Attempt to register unknown node for wrench. "..name) + minetest.log("warning", "[wrench] Attempt to register unknown node for wrench: "..name) end end @@ -29,7 +29,7 @@ function wrench.blacklist_item(name) if node_def then wrench.blacklisted_items[name] = true else - minetest.log("warning", "Attempt to blacklist unknown item for wrench. "..name) + minetest.log("warning", "[wrench] Attempt to blacklist unknown item for wrench: "..name) end end @@ -46,7 +46,7 @@ minetest.register_on_mods_loaded(function() end }) else - minetest.log("warning", "Registered node is now unknown: "..name) + minetest.log("warning", "[wrench] Registered node is now unknown: "..name) wrench.registered_nodes[name] = nil end end From c836d97c52990e8a2762cb9da88479a673470f2e Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 17:57:32 +1100 Subject: [PATCH 068/130] luacheck and depends --- .luacheckrc | 1 + mod.conf | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.luacheckrc b/.luacheckrc index c941b97..1f5066d 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -17,5 +17,6 @@ read_globals = { "drawers", "mesecon", "pipeworks", + "signs_lib", "xdecor", } diff --git a/mod.conf b/mod.conf index 5ebd48c..63502e2 100644 --- a/mod.conf +++ b/mod.conf @@ -7,11 +7,15 @@ optional_depends = """ default, digtron, drawers, + mesecons, + mobs, more_chests, pipeworks, + signs_lib, technic, technic_chests, technic_cnc, technic_worldgen, + vessels, xdecor, """ From ab56941d98bb65f00f5c7d34fbd3ffb8d4e9e68f Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 20:05:32 +1100 Subject: [PATCH 069/130] `basic_signs` support --- init.lua | 1 + mod.conf | 2 ++ nodes/basic_signs.lua | 75 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 nodes/basic_signs.lua diff --git a/init.lua b/init.lua index 6c33365..3d6e258 100644 --- a/init.lua +++ b/init.lua @@ -19,6 +19,7 @@ dofile(modpath.."/legacy.lua") local mods = { "3d_armor_stand", + "basic_signs", "bees", "biofuel", "bones", diff --git a/mod.conf b/mod.conf index 63502e2..ea682ec 100644 --- a/mod.conf +++ b/mod.conf @@ -1,6 +1,8 @@ name = wrench optional_depends = """ 3d_armor_stand, + basic_signs, + bees, biofuel, bones, connected_chests, diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua new file mode 100644 index 0000000..555b6e7 --- /dev/null +++ b/nodes/basic_signs.lua @@ -0,0 +1,75 @@ + +-- Register wrench support for basic_signs + +local S = wrench.translator + +local function get_sign_description(pos, meta, node) + local desc = minetest.registered_nodes[node.name].description + local text = meta:get_string("text") + if #text > 32 then + text = text:sub(1, 24).."..." + end + return S("@1 with text \"@2\"", desc, text) +end + +local function register_all(name, def) + wrench.register_node(name, def) + name = name:gsub("_wall", "") + wrench.register_node(name.."_hanging", def) + wrench.register_node(name.."_onpole", def) + wrench.register_node(name.."_onpole_horiz", def) + wrench.register_node(name.."_yard", def) +end + +local sign_def = { + metas = { + text = wrench.META_TYPE_STRING, + glow = wrench.META_TYPE_STRING, + widefont = wrench.META_TYPE_INT, + }, + after_place = function(pos, player, stack, pointed) + signs_lib.after_place_node(pos, player, stack, pointed) + signs_lib.update_sign(pos) + end, + description = get_sign_description, + drop = true, +} + +register_all("basic_signs:sign_wall_glass", sign_def) +register_all("basic_signs:sign_wall_obsidian_glass", sign_def) +register_all("basic_signs:sign_wall_plastic", sign_def) + +-- Colored signs + +local sign_colors = { + "green", + "yellow", + "red", + "white_red", + "white_black", + "orange", + "blue", + "brown", +} + +for _, color in pairs(sign_colors) do + register_all("basic_signs:sign_wall_steel_"..color, sign_def) +end + +-- Locked sign + +register_all("basic_signs:sign_wall_locked", { + metas = { + text = wrench.META_TYPE_STRING, + glow = wrench.META_TYPE_STRING, + widefont = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + }, + after_place = function(pos, player, stack, pointed) + signs_lib.after_place_node(pos, player, stack, pointed, true) + signs_lib.update_sign(pos) + end, + description = get_sign_description, + drop = true, + owned = true, +}) From e980721a5af094a5fab808dc8cc97cf624b0427e Mon Sep 17 00:00:00 2001 From: OgelGames Date: Tue, 7 Dec 2021 20:24:40 +1100 Subject: [PATCH 070/130] fix glow items being dropped from signs --- functions.lua | 3 +++ nodes/basic_signs.lua | 6 ++++++ nodes/signs_lib.lua | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/functions.lua b/functions.lua index 3d8cddc..dcc0e89 100644 --- a/functions.lua +++ b/functions.lua @@ -106,6 +106,9 @@ function wrench.pickup_node(pos, player) return false, errors.full_inv end player_inv:add_item("main", stack) + if def.before_remove then + def.before_remove(pos, meta, node, player) + end minetest.remove_node(pos) if def.after_pickup then def.after_pickup(pos, node, meta:to_table(), player) diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua index 555b6e7..68263f2 100644 --- a/nodes/basic_signs.lua +++ b/nodes/basic_signs.lua @@ -12,6 +12,10 @@ local function get_sign_description(pos, meta, node) return S("@1 with text \"@2\"", desc, text) end +local function remove_glow(pos, meta) + meta:set_string("glow", "") +end + local function register_all(name, def) wrench.register_node(name, def) name = name:gsub("_wall", "") @@ -27,6 +31,7 @@ local sign_def = { glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, }, + before_remove = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) @@ -65,6 +70,7 @@ register_all("basic_signs:sign_wall_locked", { widefont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, }, + before_remove = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua index cc8e481..0092904 100644 --- a/nodes/signs_lib.lua +++ b/nodes/signs_lib.lua @@ -12,6 +12,10 @@ local function get_sign_description(pos, meta, node) return S("@1 with text \"@2\"", desc, text) end +local function remove_glow(pos, meta) + meta:set_string("glow", "") +end + -- Wood signs local wood_signs = { @@ -29,6 +33,7 @@ for _, n in pairs(wood_signs) do glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, }, + before_remove = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) @@ -56,6 +61,7 @@ for _, n in pairs(steel_signs) do widefont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, }, + before_remove = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) From 16028e92ba613700ebc259e43180b2b5e284b373 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 16:19:33 +0100 Subject: [PATCH 071/130] add wrench.description_with_configuration() --- functions.lua | 8 ++++++++ nodes/pipeworks.lua | 9 ++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/functions.lua b/functions.lua index dcc0e89..c33e9c2 100644 --- a/functions.lua +++ b/functions.lua @@ -35,9 +35,17 @@ local function get_description(def, pos, meta, node, player) return desc end end + return wrench.description_with_items(pos, meta, node, player) +end + +function wrench.description_with_items(pos, meta, node, player) return S("@1 with items", minetest.registered_nodes[node.name].description) end +function wrench.description_with_configuration(pos, meta, node, player) + return S("@1 with configuration", minetest.registered_nodes[node.name].description) +end + function wrench.pickup_node(pos, player) local node = minetest.get_node(pos) local def = wrench.registered_nodes[node.name] diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 9f41a65..06a0ae7 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -3,11 +3,6 @@ local S = wrench.translator -local desc_config = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description - return S("@1 with configuration", desc) -end - local desc_infotext = function(pos, meta, node, player) return meta:get_string("infotext") end @@ -58,7 +53,7 @@ local filter_data = { infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, }, - description = desc_config, + description = wrench.description_with_configuration, } wrench.register_node("pipeworks:filter", filter_data) @@ -114,7 +109,7 @@ local mese_tube_data = { metas = { formspec = wrench.META_TYPE_STRING, }, - description = desc_config, + description = wrench.description_with_configuration, } for i = 1, 6 do From 220d93786f07c9051df7b5a627d661455ef2492b Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 16:30:03 +0100 Subject: [PATCH 072/130] split `mesecons_*` --- init.lua | 5 +- mod.conf | 5 +- nodes/mesecons.lua | 98 ------------------------------ nodes/mesecons_commandblock.lua | 18 ++++++ nodes/mesecons_detector.lua | 25 ++++++++ nodes/mesecons_luacontroller.lua | 34 +++++++++++ nodes/mesecons_microcontroller.lua | 26 ++++++++ 7 files changed, 111 insertions(+), 100 deletions(-) delete mode 100644 nodes/mesecons.lua create mode 100644 nodes/mesecons_commandblock.lua create mode 100644 nodes/mesecons_detector.lua create mode 100644 nodes/mesecons_luacontroller.lua create mode 100644 nodes/mesecons_microcontroller.lua diff --git a/init.lua b/init.lua index 3d6e258..788b20a 100644 --- a/init.lua +++ b/init.lua @@ -28,7 +28,10 @@ local mods = { "digilines", "digtron", "drawers", - "mesecons", + "mesecons_commandblock", + "mesecons_detector", + "mesecons_luacontroller", + "mesecons_microcontroller", "mobs", "more_chests", "pipeworks", diff --git a/mod.conf b/mod.conf index ea682ec..0b3f54d 100644 --- a/mod.conf +++ b/mod.conf @@ -9,7 +9,10 @@ optional_depends = """ default, digtron, drawers, - mesecons, + mesecons_commandblock, + mesecons_detector, + mesecons_luacontroller, + mesecons_microcontroller, mobs, more_chests, pipeworks, diff --git a/nodes/mesecons.lua b/nodes/mesecons.lua deleted file mode 100644 index 5010bd1..0000000 --- a/nodes/mesecons.lua +++ /dev/null @@ -1,98 +0,0 @@ - --- Register wrench support for mesecons - -local S = wrench.translator - -local function register_node_on_off(name, def) - wrench.register_node(name.."_off", def) - def.drop = true - wrench.register_node(name.."_on", def) -end - -local desc_conf = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description - return S("@1 with configuration", desc) -end - --- Commandblock - -register_node_on_off("mesecons_commandblock:commandblock", { - -- ignore after_place function: sets owner - owned = true, - metas = { - infotext = wrench.META_TYPE_STRING, - commands = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, - owner = wrench.META_TYPE_STRING, - }, - description = desc_conf, -}) - --- Detectors - -register_node_on_off("mesecons_detector:node_detector", { - metas = { - formspec = wrench.META_TYPE_STRING, - distance = wrench.META_TYPE_STRING, - digiline_channel = wrench.META_TYPE_STRING, - scanname = wrench.META_TYPE_STRING, - }, - description = desc_conf, -}) - -register_node_on_off("mesecons_detector:object_detector", { - metas = { - formspec = wrench.META_TYPE_STRING, - digiline_channel = wrench.META_TYPE_STRING, - scanname = wrench.META_TYPE_STRING, - }, - description = desc_conf, -}) - --- Controllers - -local luacontroller_def = { - drop = true, - metas = { - code = wrench.META_TYPE_STRING, - lc_memory = wrench.META_TYPE_STRING, - luac_id = wrench.META_TYPE_INT, - formspec = wrench.META_TYPE_STRING, - real_portstates = wrench.META_TYPE_INT, - ignore_offevents = wrench.META_TYPE_STRING, - }, - description = function(pos, meta, node, player) - local desc = minetest.registered_nodes["mesecons_luacontroller:luacontroller0000"].description - return S("@1 with code", desc) - end, -} - -local microcontroller_def = { - drop = true, - metas = { - infotext = wrench.META_TYPE_STRING, - code = wrench.META_TYPE_STRING, - afterid = wrench.META_TYPE_INT, - eeprom = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, - real_portstates = wrench.META_TYPE_INT, - }, - description = function(pos, meta, node, player) - return meta:get_string("infotext") - end, -} - -for a = 0, 1 do -for b = 0, 1 do -for c = 0, 1 do -for d = 0, 1 do - local state = d..c..b..a - wrench.register_node("mesecons_luacontroller:luacontroller"..state, luacontroller_def) - wrench.register_node("mesecons_microcontroller:microcontroller"..state, microcontroller_def) -end -end -end -end - -luacontroller_def.drop = nil -wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_def) diff --git a/nodes/mesecons_commandblock.lua b/nodes/mesecons_commandblock.lua new file mode 100644 index 0000000..cb2e004 --- /dev/null +++ b/nodes/mesecons_commandblock.lua @@ -0,0 +1,18 @@ + +-- Register wrench support for mesecons_commandblock + +local states = { "off", "on" } +for _, state in ipairs(states) do + wrench.register_node("mesecons_commandblock:commandblock_"..state, { + -- ignore after_place function: sets owner + owned = true, + drop = state == "on", + metas = { + infotext = wrench.META_TYPE_STRING, + commands = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + owner = wrench.META_TYPE_STRING, + }, + description = wrench.description_with_configuration, + }) +end diff --git a/nodes/mesecons_detector.lua b/nodes/mesecons_detector.lua new file mode 100644 index 0000000..ed73447 --- /dev/null +++ b/nodes/mesecons_detector.lua @@ -0,0 +1,25 @@ + +-- Register wrench support for mesecons_detector + +local states = { "off", "on" } +for _, state in ipairs(states) do + wrench.register_node("mesecons_detector:node_detector_"..state, { + drop = state == "on", + metas = { + formspec = wrench.META_TYPE_STRING, + distance = wrench.META_TYPE_STRING, + digiline_channel = wrench.META_TYPE_STRING, + scanname = wrench.META_TYPE_STRING, + }, + description = wrench.description_with_configuration, + }) + wrench.register_node("mesecons_detector:object_detector_"..state, { + drop = state == "on", + metas = { + formspec = wrench.META_TYPE_STRING, + digiline_channel = wrench.META_TYPE_STRING, + scanname = wrench.META_TYPE_STRING, + }, + description = wrench.description_with_configuration, + }) +end diff --git a/nodes/mesecons_luacontroller.lua b/nodes/mesecons_luacontroller.lua new file mode 100644 index 0000000..aa107aa --- /dev/null +++ b/nodes/mesecons_luacontroller.lua @@ -0,0 +1,34 @@ + +-- Register wrench support for mesecons_luacontroller + +local S = wrench.translator + +local luacontroller_def = { + drop = true, + metas = { + code = wrench.META_TYPE_STRING, + lc_memory = wrench.META_TYPE_STRING, + luac_id = wrench.META_TYPE_INT, + formspec = wrench.META_TYPE_STRING, + real_portstates = wrench.META_TYPE_INT, + ignore_offevents = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + local desc = minetest.registered_nodes["mesecons_luacontroller:luacontroller0000"].description + return S("@1 with code", desc) + end, +} + +for a = 0, 1 do +for b = 0, 1 do +for c = 0, 1 do +for d = 0, 1 do + local state = d..c..b..a + wrench.register_node("mesecons_luacontroller:luacontroller"..state, luacontroller_def) +end +end +end +end + +luacontroller_def.drop = nil +wrench.register_node("mesecons_luacontroller:luacontroller_burnt", luacontroller_def) diff --git a/nodes/mesecons_microcontroller.lua b/nodes/mesecons_microcontroller.lua new file mode 100644 index 0000000..6414e24 --- /dev/null +++ b/nodes/mesecons_microcontroller.lua @@ -0,0 +1,26 @@ + +-- Register wrench support for mesecons_microcontroller + +for a = 0, 1 do +for b = 0, 1 do +for c = 0, 1 do +for d = 0, 1 do + local state = d..c..b..a + wrench.register_node("mesecons_microcontroller:microcontroller"..state, { + drop = true, + metas = { + infotext = wrench.META_TYPE_STRING, + code = wrench.META_TYPE_STRING, + afterid = wrench.META_TYPE_INT, + eeprom = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + real_portstates = wrench.META_TYPE_INT, + }, + description = function(pos, meta, node, player) + return meta:get_string("infotext") + end, + }) +end +end +end +end From 7d996b4d7e0b8c22da53f792b3fbfc93f097c5e0 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 17:18:40 +0100 Subject: [PATCH 073/130] fix `mesecons_microcontroller:microcontroller*` drop --- nodes/mesecons_microcontroller.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/nodes/mesecons_microcontroller.lua b/nodes/mesecons_microcontroller.lua index 6414e24..d92badf 100644 --- a/nodes/mesecons_microcontroller.lua +++ b/nodes/mesecons_microcontroller.lua @@ -7,7 +7,6 @@ for c = 0, 1 do for d = 0, 1 do local state = d..c..b..a wrench.register_node("mesecons_microcontroller:microcontroller"..state, { - drop = true, metas = { infotext = wrench.META_TYPE_STRING, code = wrench.META_TYPE_STRING, From 4fbc896334c0aff1df54d3396552a8badd9e86ef Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 17:45:22 +0100 Subject: [PATCH 074/130] update german translation --- locale/wrench.de.tr | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/locale/wrench.de.tr b/locale/wrench.de.tr index a143b7b..2fdd2ed 100644 --- a/locale/wrench.de.tr +++ b/locale/wrench.de.tr @@ -3,15 +3,17 @@ # German Translation for technic_wrench # Deutsche Ãœbersetzung von technic_wrench # by Xanthin and others +# Siehe auch https://dev.minetest.net/Translating/de ".. der Konsistenz zuliebe" Wrench=Schraubenschluessel @1 with items=@1 mit Gegenstaenden -Cannot pickup node. Owned by @1.= -Not enough room in inventory to pickup node.= -Cannot pickup node containing @1.= -Cannot pickup node. Nesting inventories is not allowed.= -Cannot pickup node. Node contains too much metadata.= +Cannot pickup node. Owned by @1.=Block kann nicht genommen werden. Dieser gehört @1. +Not enough room in inventory to pickup node.=Nicht genug Platz im Inventar um diesen Block zu nehmen. +Cannot pickup node containing @1.=Block mit @1 kann nicht genommen werden. +Cannot pickup node. Nesting inventories is not allowed.=Block kann nicht genommen werden. Verschalteltes Inventar ist nicht erlaubt. +Cannot pickup node. Node contains too much metadata.=Block kann nicht genommen werden. Der Block enthält zu viele Metadaten. + @1 with channel "@2"=@1 mit Kanal "@2" @1 with armor=@1 mit Rüstung @1 with configuration=@1 mit Konfiguration From c2d632b7225a8fec88b8752662251097ddf98d7c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 18:34:25 +0100 Subject: [PATCH 075/130] use wrench.description_with_configuration() when `lists` and `description` are not specified --- functions.lua | 6 +++++- nodes/mesecons_commandblock.lua | 1 - nodes/mesecons_detector.lua | 2 -- nodes/pipeworks.lua | 2 -- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/functions.lua b/functions.lua index c33e9c2..a43e0c5 100644 --- a/functions.lua +++ b/functions.lua @@ -35,7 +35,11 @@ local function get_description(def, pos, meta, node, player) return desc end end - return wrench.description_with_items(pos, meta, node, player) + if def.lists then + return wrench.description_with_items(pos, meta, node, player) + else + return wrench.description_with_configuration(pos, meta, node, player) + end end function wrench.description_with_items(pos, meta, node, player) diff --git a/nodes/mesecons_commandblock.lua b/nodes/mesecons_commandblock.lua index cb2e004..d0e4abd 100644 --- a/nodes/mesecons_commandblock.lua +++ b/nodes/mesecons_commandblock.lua @@ -13,6 +13,5 @@ for _, state in ipairs(states) do formspec = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, - description = wrench.description_with_configuration, }) end diff --git a/nodes/mesecons_detector.lua b/nodes/mesecons_detector.lua index ed73447..46d809f 100644 --- a/nodes/mesecons_detector.lua +++ b/nodes/mesecons_detector.lua @@ -11,7 +11,6 @@ for _, state in ipairs(states) do digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, }, - description = wrench.description_with_configuration, }) wrench.register_node("mesecons_detector:object_detector_"..state, { drop = state == "on", @@ -20,6 +19,5 @@ for _, state in ipairs(states) do digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, }, - description = wrench.description_with_configuration, }) end diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 06a0ae7..3f799e0 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -105,11 +105,9 @@ local lua_tube_data = { local mese_tube_data = { drop = true, - lists = {}, metas = { formspec = wrench.META_TYPE_STRING, }, - description = wrench.description_with_configuration, } for i = 1, 6 do From 219023ed44c456443d0b84d076a504ca90b4433c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 18:36:57 +0100 Subject: [PATCH 076/130] add `protector` support --- init.lua | 1 + mod.conf | 1 + nodes/protector.lua | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 nodes/protector.lua diff --git a/init.lua b/init.lua index 788b20a..cc40fa6 100644 --- a/init.lua +++ b/init.lua @@ -35,6 +35,7 @@ local mods = { "mobs", "more_chests", "pipeworks", + "protector", "signs_lib", "technic", "technic_chests", diff --git a/mod.conf b/mod.conf index 0b3f54d..cc9811e 100644 --- a/mod.conf +++ b/mod.conf @@ -16,6 +16,7 @@ optional_depends = """ mobs, more_chests, pipeworks, + protector, signs_lib, technic, technic_chests, diff --git a/nodes/protector.lua b/nodes/protector.lua new file mode 100644 index 0000000..72004ea --- /dev/null +++ b/nodes/protector.lua @@ -0,0 +1,30 @@ + +-- Register wrench support for protector + +wrench.register_node("protector:chest", { + lists = {"main"}, + metas = { + name = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("protector:protect", { + owned = true, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + members = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("protector:protect2", { + owned = true, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + members = wrench.META_TYPE_STRING, + }, +}) + + From c38f0f7d88d4da0587ea8fde0bacb00861e5befd Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 18:43:09 +0100 Subject: [PATCH 077/130] restore nodes/pipeworks.lua --- nodes/pipeworks.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 3f799e0..06a0ae7 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -105,9 +105,11 @@ local lua_tube_data = { local mese_tube_data = { drop = true, + lists = {}, metas = { formspec = wrench.META_TYPE_STRING, }, + description = wrench.description_with_configuration, } for i = 1, 6 do From 1f4d35249042138097ddaca324a2c7cfb2d53b2b Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 19:16:55 +0100 Subject: [PATCH 078/130] fix spaces --- debug.lua | 4 ++-- nodes/protector.lua | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/debug.lua b/debug.lua index 6e48a4c..2b87dfa 100644 --- a/debug.lua +++ b/debug.lua @@ -61,13 +61,13 @@ wrench.pickup_node = function(pos, player) ((type(def.can_dig) == "function") and (def.can_dig(pos, player) and ', returns true' or ', returns false') or "" ) - ) + ) end local meta = minetest.get_meta(pos) -- owner local owner = meta:get_string("owner") if owner and owner ~= "" then - print("\towner = true, -- '" .. owner .. "' FIXME:?") + print("\towned = true, -- '" .. owner .. "' FIXME:?") end -- lists local inventory = meta:get_inventory() diff --git a/nodes/protector.lua b/nodes/protector.lua index 72004ea..ee3f353 100644 --- a/nodes/protector.lua +++ b/nodes/protector.lua @@ -26,5 +26,3 @@ wrench.register_node("protector:protect2", { members = wrench.META_TYPE_STRING, }, }) - - From 9edee9d9c38460f90fd32ced3776eaa3ef3ec397 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 7 Dec 2021 21:22:03 +0100 Subject: [PATCH 079/130] initial api.txt --- api.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 api.txt diff --git a/api.txt b/api.txt new file mode 100644 index 0000000..7352472 --- /dev/null +++ b/api.txt @@ -0,0 +1,56 @@ +* `wrench.register_node(node.name, definition)` + +definition: + + { + lists = list + -- inventory list + + metas = table + -- Table for node metadata: + -- name: Meta name + -- type: Data type: + -- `wrench.META_TYPE_FLOAT` for float + -- `wrench.META_TYPE_STRING` for string + -- `wrench.META_TYPE_INT` for integer + + description = nil, + -- Default behaver: + -- when `lists` is not `nil` + -- `minetest.registered_nodes[node.name].description` + " with items" + -- when `lists` is `nil` + -- `minetest.registered_nodes[node.name].description` + " with configuration" + description = `wrench.description_with_items`, + -- Description of the node + " with items" + description = `wrench.description_with_configuration`, + -- Description of the node + " with configuration" + description = function(pos, meta, node, player), + -- Function returns description + + drop = nil, + -- Default dropped item is the node itself + drop = true, + -- Use `minetest.registered_nodes[node.name].drop` + drop = "default:cobble", + -- Name of dropped item + + owned = nil, + -- Default: anyone can pickup this node + owned = true, + -- Only `metas["owner"]` can pickup this node + + timer = nil, + -- Default + timer = true, + -- Save NodeTimers + + before_remove = nil, + -- Default + before_remove = function(pos, meta, node, player) + -- Function called before 'minetest.remove_node(pos)' + + after_place = nil, + -- Default + after_place = function(pos, player, itemstack, pointed_thing), + -- Function called after place node + } From 7010c44939ba973150760ec3af3efb344b45572c Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 8 Dec 2021 17:16:58 +0100 Subject: [PATCH 080/130] api.txt -> API.md --- api.txt => API.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename api.txt => API.md (100%) diff --git a/api.txt b/API.md similarity index 100% rename from api.txt rename to API.md From 2c93dff702deafbdbe3afb413cd5f11947ac7a55 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 8 Dec 2021 17:52:50 +0100 Subject: [PATCH 081/130] fix basic_signs: +metas.unifont --- nodes/basic_signs.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua index 68263f2..2b1c71c 100644 --- a/nodes/basic_signs.lua +++ b/nodes/basic_signs.lua @@ -30,6 +30,7 @@ local sign_def = { text = wrench.META_TYPE_STRING, glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, + unifont = wrench.META_TYPE_INT, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) @@ -68,6 +69,7 @@ register_all("basic_signs:sign_wall_locked", { text = wrench.META_TYPE_STRING, glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, + unifont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, }, before_remove = remove_glow, From a146201f36d761a4a3fc22ca356a379d7d8a4972 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 8 Dec 2021 17:54:04 +0100 Subject: [PATCH 082/130] update README.md --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ef373e..aaf0dd6 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,12 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic * https://github.com/minetest-mods/3d_armor - 3d_armor_stand:armor_stand - 3d_armor_stand:locked_armor_stand +* https://github.com/mt-mods/basic_signs + - basic_signs:sign_wall_glass + - basic_signs:sign_wall_locked + - basic_signs:sign_wall_obsidian_glass + - basic_signs:sign_wall_plastic + - basic_signs:sign_wall_steel_\* * https://notabug.org/TenPlus1/bees - bees:hive_wild * https://github.com/Lokrates/Biofuel @@ -64,10 +70,15 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - pipeworks:dispenser_\* - pipeworks:nodebreaker_\* - pipeworks:\*filter - - pipeworks:lua_tube* + - pipeworks:lua_tube\* - pipeworks:mese_sand_tube_\* - pipeworks:mese_tube_\* - pipeworks:teleport_tube_\* +* https://notabug.org/tenplus1/protector + - protector:chest + - protector:protect + - protector:protect2 +* https://github.com/mt-mods/signs_lib * https://github.com/mt-mods/technic - technic:cnc\* - technic:coal_alloy_furnace\* From 6cd14c00fba2ba61943543820483d66e8c42fb5e Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 8 Dec 2021 18:01:12 +0100 Subject: [PATCH 083/130] fix signs_lib: +metas.unifont --- nodes/signs_lib.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua index 0092904..e6b3bba 100644 --- a/nodes/signs_lib.lua +++ b/nodes/signs_lib.lua @@ -32,6 +32,7 @@ for _, n in pairs(wood_signs) do text = wrench.META_TYPE_STRING, glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, + unifont = wrench.META_TYPE_INT, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) @@ -59,6 +60,7 @@ for _, n in pairs(steel_signs) do text = wrench.META_TYPE_STRING, glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, + unifont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, }, before_remove = remove_glow, From 3aadf58c0fc994e0ee43dac448aa12d5c8a17534 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Wed, 8 Dec 2021 19:44:20 +0100 Subject: [PATCH 084/130] Update API.md --- API.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/API.md b/API.md index 7352472..9ffbfaf 100644 --- a/API.md +++ b/API.md @@ -1,12 +1,12 @@ -* `wrench.register_node(node.name, definition)` - -definition: - - { - lists = list +# API +## Node registrition +### Schematic +```lua +wrench.register_node(node.name, { + lists = list, -- inventory list - metas = table + metas = table, -- Table for node metadata: -- name: Meta name -- type: Data type: @@ -53,4 +53,18 @@ definition: -- Default after_place = function(pos, player, itemstack, pointed_thing), -- Function called after place node - } +}) +``` +### Example +```lua +wrench.register_node("bones:bones", { + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + time = wrench.META_TYPE_INT, + }, + owned = true, +}) +``` From 3ac7d5018b898c562ed351a54218b7aa3977c838 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Wed, 8 Dec 2021 19:46:54 +0100 Subject: [PATCH 085/130] Update API.md --- API.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/API.md b/API.md index 9ffbfaf..5e6d648 100644 --- a/API.md +++ b/API.md @@ -1,6 +1,6 @@ # API -## Node registrition -### Schematic +## Node registration +Schematic: ```lua wrench.register_node(node.name, { lists = list, @@ -55,7 +55,7 @@ wrench.register_node(node.name, { -- Function called after place node }) ``` -### Example +Example: ```lua wrench.register_node("bones:bones", { lists = {"main"}, From 76d40f522eb4bcd44ad9619352718c6e58e82847 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 9 Dec 2021 15:00:51 +1100 Subject: [PATCH 086/130] add `wrench.unregister_node` and move drop check --- api.lua | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/api.lua b/api.lua index 095968f..667e422 100644 --- a/api.lua +++ b/api.lua @@ -4,22 +4,18 @@ function wrench.register_node(name, def) assert(type(def) == "table", "wrench.register_node invalid type for def") local node_def = minetest.registered_nodes[name] if node_def then - def = table.copy(def) - if def.drop == true and type(node_def.drop) == "string" then - def.drop = node_def.drop - elseif def.drop and type(def.drop) ~= "string" then - minetest.log("warning", "[wrench] Ignoring invalid type for drop in definition for "..name) - def.drop = nil - end - if def.drop and not wrench.registered_nodes[def.drop] then - if def.drop ~= name then - minetest.log("warning", "[wrench] Ignoring unsupported node for drop in definition for "..name) - end - def.drop = nil - end - wrench.registered_nodes[name] = def + wrench.registered_nodes[name] = table.copy(def) else - minetest.log("warning", "[wrench] Attempt to register unknown node for wrench: "..name) + minetest.log("warning", "[wrench] Attempt to register unknown node: "..name) + end +end + +function wrench.unregister_node(name) + assert(type(name) == "string", "wrench.unregister_node invalid type for name") + if wrench.registered_nodes[name] then + wrench.registered_nodes = nil + else + minetest.log("warning", "[wrench] Attempt to unregister unsupported node: "..name) end end @@ -29,7 +25,7 @@ function wrench.blacklist_item(name) if node_def then wrench.blacklisted_items[name] = true else - minetest.log("warning", "[wrench] Attempt to blacklist unknown item for wrench: "..name) + minetest.log("warning", "[wrench] Attempt to blacklist unknown item: "..name) end end @@ -45,6 +41,16 @@ minetest.register_on_mods_loaded(function() end end }) + if def.drop == true and type(node_def.drop) == "string" then + def.drop = node_def.drop + elseif def.drop and type(def.drop) ~= "string" then + minetest.log("warning", "[wrench] Ignoring invalid type for drop in definition for "..name) + def.drop = nil + end + if def.drop and not wrench.registered_nodes[def.drop] then + minetest.log("warning", "[wrench] Ignoring unsupported node for drop in definition for "..name) + def.drop = nil + end else minetest.log("warning", "[wrench] Registered node is now unknown: "..name) wrench.registered_nodes[name] = nil From 53b485b3e893731976a6def043743079cfe716e6 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 9 Dec 2021 15:18:18 +1100 Subject: [PATCH 087/130] add `wrench.description_with_text` --- functions.lua | 10 ++++++++++ nodes/basic_signs.lua | 13 ------------- nodes/default.lua | 13 ------------- nodes/signs_lib.lua | 13 ------------- 4 files changed, 10 insertions(+), 39 deletions(-) diff --git a/functions.lua b/functions.lua index a43e0c5..d4d9a12 100644 --- a/functions.lua +++ b/functions.lua @@ -37,6 +37,8 @@ local function get_description(def, pos, meta, node, player) end if def.lists then return wrench.description_with_items(pos, meta, node, player) + elseif def.metas and def.metas.text then + return wrench.description_with_text(pos, meta, node, player) else return wrench.description_with_configuration(pos, meta, node, player) end @@ -50,6 +52,14 @@ function wrench.description_with_configuration(pos, meta, node, player) return S("@1 with configuration", minetest.registered_nodes[node.name].description) end +function wrench.description_with_text(pos, meta, node, player) + local text = meta:get_string("text") + if #text > 32 then + text = text:sub(1, 24).."..." + end + return S("@1 with text \"@2\"", minetest.registered_nodes[node.name].description, text) +end + function wrench.pickup_node(pos, player) local node = minetest.get_node(pos) local def = wrench.registered_nodes[node.name] diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua index 2b1c71c..1e715cc 100644 --- a/nodes/basic_signs.lua +++ b/nodes/basic_signs.lua @@ -1,17 +1,6 @@ -- Register wrench support for basic_signs -local S = wrench.translator - -local function get_sign_description(pos, meta, node) - local desc = minetest.registered_nodes[node.name].description - local text = meta:get_string("text") - if #text > 32 then - text = text:sub(1, 24).."..." - end - return S("@1 with text \"@2\"", desc, text) -end - local function remove_glow(pos, meta) meta:set_string("glow", "") end @@ -37,7 +26,6 @@ local sign_def = { signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) end, - description = get_sign_description, drop = true, } @@ -77,7 +65,6 @@ register_all("basic_signs:sign_wall_locked", { signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) end, - description = get_sign_description, drop = true, owned = true, }) diff --git a/nodes/default.lua b/nodes/default.lua index 1f243dd..7788dc4 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -1,8 +1,6 @@ -- Register nodes from default / minetest_game -local S = wrench.translator - local has_pipeworks = minetest.get_modpath("pipeworks") local splitstacks = has_pipeworks and wrench.META_TYPE_INT local formspec = has_pipeworks and wrench.META_TYPE_STRING @@ -52,21 +50,11 @@ wrench.register_node("default:furnace_active", { }, }) -local function get_sign_description(pos, meta, node) - local desc = minetest.registered_nodes[node.name].description - local text = meta:get_string("text") - if #text > 32 then - text = text:sub(1, 24).."..." - end - return S("@1 with text \"@2\"", desc, text) -end - wrench.register_node("default:sign_wall_wood", { metas = { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING }, - description = get_sign_description, }) wrench.register_node("default:sign_wall_steel", { @@ -74,5 +62,4 @@ wrench.register_node("default:sign_wall_steel", { infotext = wrench.META_TYPE_STRING, text = wrench.META_TYPE_STRING }, - description = get_sign_description, }) diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua index e6b3bba..43e59fc 100644 --- a/nodes/signs_lib.lua +++ b/nodes/signs_lib.lua @@ -1,17 +1,6 @@ -- Register wrench support for signs_lib (overrides default signs) -local S = wrench.translator - -local function get_sign_description(pos, meta, node) - local desc = minetest.registered_nodes[node.name].description - local text = meta:get_string("text") - if #text > 32 then - text = text:sub(1, 24).."..." - end - return S("@1 with text \"@2\"", desc, text) -end - local function remove_glow(pos, meta) meta:set_string("glow", "") end @@ -39,7 +28,6 @@ for _, n in pairs(wood_signs) do signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) end, - description = get_sign_description, drop = "default:sign_wall_wood", }) end @@ -68,7 +56,6 @@ for _, n in pairs(steel_signs) do signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) end, - description = get_sign_description, drop = "default:sign_wall_steel", owned = true, }) From a56e7a8ab109636ab559c5ec127b885a0e898359 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 10 Dec 2021 03:43:21 +0100 Subject: [PATCH 088/130] change `has_*` to `wrench.has_*` --- functions.lua | 16 ++++++---------- init.lua | 6 ++++-- nodes/default.lua | 5 ++--- nodes/technic_chests.lua | 3 +-- nodes/technic_cnc.lua | 4 +--- 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/functions.lua b/functions.lua index d4d9a12..10c57c2 100644 --- a/functions.lua +++ b/functions.lua @@ -3,10 +3,6 @@ local S = wrench.translator local SERIALIZATION_VERSION = 1 -local has_pipeworks = minetest.get_modpath("pipeworks") -local has_mesecons = minetest.get_modpath("mesecons") -local has_digilines = minetest.get_modpath("digilines") - local errors = { owned = function(owner) return S("Cannot pickup node. Owned by @1.", owner) end, full_inv = S("Not enough room in inventory to pickup node."), @@ -136,13 +132,13 @@ function wrench.pickup_node(pos, player) def.after_pickup(pos, node, meta:to_table(), player) end local node_def = minetest.registered_nodes[node.name] - if has_pipeworks and node_def.tube then + if wrench.has_pipeworks and node_def.tube then pipeworks.after_dig(pos) end - if has_mesecons and node_def.mesecons then + if wrench.has_mesecons and node_def.mesecons then mesecon.on_dignode(pos, node) end - if has_digilines and node_def.digiline or node_def.digilines then + if wrench.has_digilines and node_def.digiline or node_def.digilines then digilines.update_autoconnect(pos) end return true @@ -187,13 +183,13 @@ function wrench.restore_node(pos, player, stack, pointed) def.after_place(pos, player, stack, pointed) end local node_def = minetest.registered_nodes[data.name] - if has_pipeworks and node_def.tube then + if wrench.has_pipeworks and node_def.tube then pipeworks.after_place(pos) end - if has_mesecons and node_def.mesecons then + if wrench.has_mesecons and node_def.mesecons then mesecon.on_placenode(pos, minetest.get_node(pos)) end - if has_digilines and node_def.digiline or node_def.digilines then + if wrench.has_digilines and node_def.digiline or node_def.digilines then digilines.update_autoconnect(pos) end return true diff --git a/init.lua b/init.lua index cc40fa6..785f3c8 100644 --- a/init.lua +++ b/init.lua @@ -1,15 +1,17 @@ local modpath = minetest.get_modpath("wrench") -local S = minetest.get_translator("wrench") wrench = { - translator = S, + translator = minetest.get_translator("wrench"), plus = true, registered_nodes = {}, blacklisted_items = {}, META_TYPE_FLOAT = 1, META_TYPE_STRING = 2, META_TYPE_INT = 3, + has_pipeworks = minetest.get_modpath("pipeworks"), + has_mesecons = minetest.get_modpath("mesecons"), + has_digilines = minetest.get_modpath("digilines"), } dofile(modpath.."/api.lua") diff --git a/nodes/default.lua b/nodes/default.lua index 7788dc4..2d17871 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -1,9 +1,8 @@ -- Register nodes from default / minetest_game -local has_pipeworks = minetest.get_modpath("pipeworks") -local splitstacks = has_pipeworks and wrench.META_TYPE_INT -local formspec = has_pipeworks and wrench.META_TYPE_STRING +local splitstacks = wrench.has_pipeworks and wrench.META_TYPE_INT +local formspec = wrench.has_pipeworks and wrench.META_TYPE_STRING wrench.register_node("default:chest", { lists = {"main"}, diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index 43fe3cb..e665e05 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -1,8 +1,7 @@ -- Register wrench support for technic_chests -local has_pipeworks = minetest.get_modpath("pipeworks") -local splitstacks = has_pipeworks and wrench.META_TYPE_INT +local splitstacks = wrench.has_pipeworks and wrench.META_TYPE_INT local function get_chest_description(pos, meta, node) local desc = minetest.registered_nodes[node.name].description diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index ddd3ef9..6f50314 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -1,8 +1,6 @@ -- Register wrench support for Technic CNC -local has_pipeworks = minetest.get_modpath("pipeworks") - local function register_cnc(name, def) wrench.register_node(name, def) if minetest.registered_nodes[name.."_active"] then @@ -37,7 +35,7 @@ if minetest.registered_nodes["technic:cnc_mk2"] then size = wrench.META_TYPE_INT, program = wrench.META_TYPE_STRING, cnc_user = wrench.META_TYPE_STRING, - splitstacks = has_pipeworks and wrench.META_TYPE_INT, + splitstacks = wrench.has_pipeworks and wrench.META_TYPE_INT, }, }) end From 217017996f7fef9fb46b4e4da2f1a5d44be2b95d Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 10 Dec 2021 03:47:38 +0100 Subject: [PATCH 089/130] *fix `technic:cnc_mk2` and `technic:*_battery_box*`: +metas.channel --- nodes/technic.lua | 3 ++- nodes/technic_cnc.lua | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nodes/technic.lua b/nodes/technic.lua index 4790999..103195e 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -85,7 +85,8 @@ for _, tier in pairs({"LV", "MV", "HV"}) do [tier.."_EU_supply"] = wrench.META_TYPE_INT, [tier.."_EU_input"] = wrench.META_TYPE_INT, internal_EU_charge = wrench.META_TYPE_INT, - last_side_shown = wrench.META_TYPE_INT + last_side_shown = wrench.META_TYPE_INT, + channel = wrench.has_digilines and wrench.META_TYPE_STRING, }, }) end diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index 6f50314..18806d0 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -36,6 +36,7 @@ if minetest.registered_nodes["technic:cnc_mk2"] then program = wrench.META_TYPE_STRING, cnc_user = wrench.META_TYPE_STRING, splitstacks = wrench.has_pipeworks and wrench.META_TYPE_INT, + channel = wrench.has_digilines and wrench.META_TYPE_STRING, }, }) end From 36e7e5b0875ca8b7a4378025db3fb1643b8812c6 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 10 Dec 2021 04:09:05 +0100 Subject: [PATCH 090/130] add `technic:forcefield_emitter_*` and `technic:quarry` --- nodes/technic.lua | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/nodes/technic.lua b/nodes/technic.lua index 103195e..f16b525 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -104,3 +104,49 @@ wrench.register_node("technic:injector", { }, timer = true, }) + +-- Forcefield emitter + +local states = { "off", "on" } +for _, state in ipairs(states) do + wrench.register_node("technic:forcefield_emitter_"..state, { + drop = state == "on", + metas = { + enabled = wrench.META_TYPE_INT, + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + mesecon_mode = wrench.META_TYPE_INT, + mesecon_effect = wrench.META_TYPE_INT, + HV_EU_input = wrench.META_TYPE_INT, + HV_EU_demand = wrench.META_TYPE_INT, + range = wrench.META_TYPE_INT, + shape = wrench.META_TYPE_INT, + channel = wrench.has_digilines and wrench.META_TYPE_STRING, + }, + }) +end + +-- Quarry + +wrench.register_node("technic:quarry", { + owned = true, + lists = {"cache"}, + metas = { + enabled = wrench.META_TYPE_INT, + finished = wrench.META_TYPE_INT, + dig_index = wrench.META_TYPE_INT, + dig_steps = wrench.META_TYPE_INT, + quarry_dir = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + purge_on = wrench.META_TYPE_INT, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + quarry_pos = wrench.META_TYPE_STRING, + dig_level = wrench.META_TYPE_INT, + HV_EU_demand = wrench.META_TYPE_INT, + max_depth = wrench.META_TYPE_INT, + dug = wrench.META_TYPE_INT, + size = wrench.META_TYPE_INT, + channel = wrench.has_digilines and wrench.META_TYPE_STRING, + }, +}) From 265402074dbc79b8df2a17e42ac88c96ba4d1466 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 14 Dec 2021 14:41:09 +0100 Subject: [PATCH 091/130] fix strip_esc() --- debug.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debug.lua b/debug.lua index 2b87dfa..f9fa420 100644 --- a/debug.lua +++ b/debug.lua @@ -21,8 +21,9 @@ end local strip_esc = function(text) text = minetest.strip_colors(text) -- strip translation foo - text = string.gsub(text, "^.*T@.*%)", "") - return string.gsub(text, "%c.", "") + local ESCAPE_CHAR = string.char(0x1b) + text = string.gsub(text, ESCAPE_CHAR .. "%(T@[^%)]+%)", "") + return string.gsub(text, ESCAPE_CHAR .. "[ET]", "") end -- use wrench with sneak to show node propperies (useful to add new nodes) From e934fadd9beaf66803020e6b47aaf65cd1414ddd Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 14 Dec 2021 16:11:14 +0100 Subject: [PATCH 092/130] add `wrench.description_with_channel` --- API.md | 4 ++++ functions.lua | 20 ++++++++++++++++++++ mod.conf | 1 + nodes/digilines.lua | 10 ---------- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/API.md b/API.md index 5e6d648..d7c6c03 100644 --- a/API.md +++ b/API.md @@ -24,6 +24,10 @@ wrench.register_node(node.name, { -- Description of the node + " with items" description = `wrench.description_with_configuration`, -- Description of the node + " with configuration" + description = `wrench.description_with_channel`, + -- Description of the node + " with channel " + channel + description = `wrench.description_with_text`, + -- Description of the node + " with text " + text description = function(pos, meta, node, player), -- Function returns description diff --git a/functions.lua b/functions.lua index 10c57c2..27710b6 100644 --- a/functions.lua +++ b/functions.lua @@ -21,6 +21,18 @@ local function get_stored_metadata(itemstack) return data end +local function other_keys_than(list, keys) + local list2 = table.copy(list) + for _, k in ipairs(keys) do + list2[k] = nil + end + local other_keys = {} + for k, _ in pairs(list2) do + other_keys[#other_keys+1] = k + end + return other_keys +end + local function get_description(def, pos, meta, node, player) local t = type(def.description) if t == "string" then @@ -35,6 +47,9 @@ local function get_description(def, pos, meta, node, player) return wrench.description_with_items(pos, meta, node, player) elseif def.metas and def.metas.text then return wrench.description_with_text(pos, meta, node, player) + elseif def.metas and def.metas.channel and + #other_keys_than(def.metas, {"channel", "formspec", "infotext", "owner"}) == 0 then + return wrench.description_with_channel(pos, meta, node, player) else return wrench.description_with_configuration(pos, meta, node, player) end @@ -44,6 +59,11 @@ function wrench.description_with_items(pos, meta, node, player) return S("@1 with items", minetest.registered_nodes[node.name].description) end +function wrench.description_with_channel(pos, meta, node, player) + local desc = minetest.registered_nodes[node.name].description + return S("@1 with channel \"@2\"", desc, meta:get_string("channel")) +end + function wrench.description_with_configuration(pos, meta, node, player) return S("@1 with configuration", minetest.registered_nodes[node.name].description) end diff --git a/mod.conf b/mod.conf index cc9811e..06633b3 100644 --- a/mod.conf +++ b/mod.conf @@ -8,6 +8,7 @@ optional_depends = """ connected_chests, default, digtron, + digilines, drawers, mesecons_commandblock, mesecons_detector, diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 45480b3..42af76a 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -1,13 +1,6 @@ -- Register wrench support for digilines -local S = wrench.translator - -local desc_channel = function(pos, meta, node, player) - local desc = minetest.registered_nodes[node.name].description - return S("@1 with channel \"@2\"", desc, meta:get_string("channel")) -end - wrench.register_node("digilines:chest", { lists = {"main"}, metas = { @@ -22,7 +15,6 @@ wrench.register_node("digilines:lightsensor", { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, - description = desc_channel, }) wrench.register_node("digilines:rtc", { @@ -30,7 +22,6 @@ wrench.register_node("digilines:rtc", { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, - description = desc_channel, }) wrench.register_node("digilines:lcd", { @@ -38,5 +29,4 @@ wrench.register_node("digilines:lcd", { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, - description = desc_channel, }) From 3b8bf58b45e0a2be418f3a43de839042a8699459 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 14 Dec 2021 16:21:17 +0100 Subject: [PATCH 093/130] check `meta` and `lists` before pickup when `wrench.enable_debug = true` --- debug.lua | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/debug.lua b/debug.lua index f9fa420..fc86f1d 100644 --- a/debug.lua +++ b/debug.lua @@ -1,4 +1,6 @@ +local S = wrench.translator + local get_keys = function(list) local keys = {} for k, _ in pairs(list) do @@ -7,6 +9,12 @@ local get_keys = function(list) return keys end +local array_find = function(list, val) + for i, _ in ipairs(list) do + if list[i] == val then return i end + end +end + local spairs = function(tbl, order_func) local ptrs = {} for p in pairs(tbl) do ptrs[#ptrs +1] = p end @@ -30,10 +38,34 @@ end local orig_wrench_pickup_node = wrench.pickup_node wrench.pickup_node = function(pos, player) + local node = minetest.get_node(pos) + local meta = minetest.get_meta(pos) if not player:get_player_control().sneak then + local wrench_def = wrench.registered_nodes[node.name] + if wrench_def and wrench_def.lists then + local inventory = meta:get_inventory() + local lists = get_keys(inventory:get_lists()) + if #lists > 0 then + for _, v in ipairs(lists) do + if not array_find(wrench_def.lists, v) then + return false, S("unknown list value: @1", v) + end + end + end + end + if wrench_def and wrench_def.metas then + local metatable = meta:to_table() + local metas = get_keys(metatable.fields) + if #metas > 0 then + for k, v in pairs(metatable.fields) do + if not wrench_def.metas[k] then + return false, S("unknown meta key: @1", k) + end + end + end + end return orig_wrench_pickup_node(pos, player) end - local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] print("wrench.register_node(\"" .. node.name .. "\", {"); -- timer @@ -48,7 +80,7 @@ wrench.pickup_node = function(pos, player) elseif def.drop == node.name or def.drop == node.name .. " 1" then print("\t-- drop = \"" .. def.drop .. "\",") else - print("\tdrop = \"" .. def.drop .. "\",") + print("\tdrop = true, -- " .. def.drop) end end if def.after_place_node then @@ -64,7 +96,6 @@ wrench.pickup_node = function(pos, player) ) ) end - local meta = minetest.get_meta(pos) -- owner local owner = meta:get_string("owner") if owner and owner ~= "" then From 6778aaab3672edc7c396cfa38f5452467dad85cd Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 14 Dec 2021 16:27:40 +0100 Subject: [PATCH 094/130] add `digistuff` support (WIP) --- init.lua | 1 + mod.conf | 1 + nodes/digistuff.lua | 227 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 229 insertions(+) create mode 100644 nodes/digistuff.lua diff --git a/init.lua b/init.lua index 785f3c8..c09b13a 100644 --- a/init.lua +++ b/init.lua @@ -28,6 +28,7 @@ local mods = { "connected_chests", "default", "digilines", + "digistuff", "digtron", "drawers", "mesecons_commandblock", diff --git a/mod.conf b/mod.conf index 06633b3..8706db5 100644 --- a/mod.conf +++ b/mod.conf @@ -9,6 +9,7 @@ optional_depends = """ default, digtron, digilines, + digistuff, drawers, mesecons_commandblock, mesecons_detector, diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua new file mode 100644 index 0000000..63fc535 --- /dev/null +++ b/nodes/digistuff.lua @@ -0,0 +1,227 @@ + +-- Register wrench support for digistuff + +-- Buttons + +--[[ makes no sense +wrench.register_node("digistuff:button", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + protected = wrench.META_TYPE_INT, + msg = wrench.META_TYPE_STRING, + mlight = wrench.META_TYPE_INT, + }, +}) +--]] + +local nodes = { + "digistuff:button_off", + "digistuff:button_off_pushed", + "digistuff:button_on_pushed", +} +for _, node in ipairs(nodes) do + wrench.register_node(node, { + drop = "digistuff:button_off", + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + protected = wrench.META_TYPE_INT, + msg = wrench.META_TYPE_STRING, + mlight = wrench.META_TYPE_INT, + }, + }) +end + +-- Camera + +wrench.register_node("digistuff:camera", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + radius = wrench.META_TYPE_INT, + distance = wrench.META_TYPE_INT, + }, +}) + +-- Cardreader + +wrench.register_node("digistuff:card_reader", { + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + writepending = wrench.META_TYPE_INT, + writedata = wrench.META_TYPE_STRING, + writedescription = wrench.META_TYPE_STRING, + }, +}) + +--[[ TODO +wrench.register_node("digistuff:controller_programmed", { + drop = "digistuff:controller", + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) +]]-- + +-- Detector + +wrench.register_node("digistuff:detector", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_INT, + radius = wrench.META_TYPE_INT, + }, +}) + +--[[ TODO ... +wrench.register_node("digistuff:eeprom", { + -- has after_place function + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + --? data[0..31] = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:ram", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + --? data[0..31] = wrench.META_TYPE_STRING, + + }, +}) + +wrench.register_node("digistuff:gpu", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + --? buffer[0..7] = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:ioexpander_0", { + -- drop = "digistuff:ioexpander_0", + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + don = wrench.META_TYPE_INT, + con = wrench.META_TYPE_INT, + bon = wrench.META_TYPE_INT, + aon = wrench.META_TYPE_INT, + outstate = wrench.META_TYPE_INT, + }, +}) + +wrench.register_node("digistuff:movestone", { + owned = true, + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + owner = wrench.META_TYPE_STRING, + state = wrench.META_TYPE_STRING, + active = wrench.META_TYPE_INT, + }, +}) + +wrench.register_node("digistuff:noteblock", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:panel", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + locked = wrench.META_TYPE_INT, + text = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:piezo", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:piston", { + --owned = true, + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:piston_ext", { + drop = true, + --owned = true, + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_INT, + owner = wrench.META_TYPE_STRING, + }, +}) + +wrench.register_node("digistuff:timer", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) +--]] + +-- Touchscreens + +--[[ very complex ... +wrench.register_node("digistuff:advtouchscreen", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + init = wrench.META_TYPE_INT, + }, +}) + +wrench.register_node("digistuff:touchscreen", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + init = wrench.META_TYPE_INT, + }, +}) +--]] + +--[[ TODO +wrench.register_node("digistuff:wall_knob", { + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + min = wrench.META_TYPE_INT, + max = wrench.META_TYPE_INT, + value = wrench.META_TYPE_INT, + protected = wrench.META_TYPE_INT, + }, +}) + +wrench.register_node("digistuff:wall_knob_configured", { + drop = true, + metas = { + formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + min = wrench.META_TYPE_INT, + max = wrench.META_TYPE_INT, + value = wrench.META_TYPE_INT, + protected = wrench.META_TYPE_INT, + }, +}) +--]] From 2caf5559ed1e838d8b457f8a40e40beabf105924 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 15 Dec 2021 22:54:36 +0100 Subject: [PATCH 095/130] add `wrench.META_TYPE_IGNORE` --- init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/init.lua b/init.lua index c09b13a..2bf5f50 100644 --- a/init.lua +++ b/init.lua @@ -6,6 +6,7 @@ wrench = { plus = true, registered_nodes = {}, blacklisted_items = {}, + META_TYPE_IGNORE = 0, META_TYPE_FLOAT = 1, META_TYPE_STRING = 2, META_TYPE_INT = 3, From 2a3c4104de673cfe9a2dfd67e62e1ac90f14275a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 15 Dec 2021 22:56:34 +0100 Subject: [PATCH 096/130] more `digistuff` support (WIP) + controller_programmed, eeprom, ram, ioexpander_*, piezo, timer, wall_knob_configured --- nodes/digistuff.lua | 140 ++++++++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 62 deletions(-) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 63fc535..316efa1 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -1,20 +1,15 @@ -- Register wrench support for digistuff --- Buttons - ---[[ makes no sense -wrench.register_node("digistuff:button", { - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - protected = wrench.META_TYPE_INT, - msg = wrench.META_TYPE_STRING, - mlight = wrench.META_TYPE_INT, - }, -}) +--[[ + NOTE: it makes no sense to pickup unconfigured nodes with 'wrench' like: + - "digistuff:button" + - "digistuff:controller" + - "digistuff:wall_knob" --]] +-- Buttons + local nodes = { "digistuff:button_off", "digistuff:button_off_pushed", @@ -57,16 +52,16 @@ wrench.register_node("digistuff:card_reader", { }, }) ---[[ TODO +-- Controller + wrench.register_node("digistuff:controller_programmed", { - drop = "digistuff:controller", + drop = false, metas = { formspec = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, }) -]]-- -- Detector @@ -78,46 +73,44 @@ wrench.register_node("digistuff:detector", { }, }) ---[[ TODO ... -wrench.register_node("digistuff:eeprom", { - -- has after_place function - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - --? data[0..31] = wrench.META_TYPE_STRING, - }, -}) +-- Memory -wrench.register_node("digistuff:ram", { +local mem_def = { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, - --? data[0..31] = wrench.META_TYPE_STRING, - }, -}) +} +for i = 0, 31 do + mem_def.metas[string.format("data%02i", i)] = wrench.META_TYPE_STRING +end +wrench.register_node("digistuff:eeprom", mem_def) +wrench.register_node("digistuff:ram", mem_def) -wrench.register_node("digistuff:gpu", { - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - --? buffer[0..7] = wrench.META_TYPE_STRING, - }, -}) -wrench.register_node("digistuff:ioexpander_0", { - -- drop = "digistuff:ioexpander_0", - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - don = wrench.META_TYPE_INT, - con = wrench.META_TYPE_INT, - bon = wrench.META_TYPE_INT, - aon = wrench.META_TYPE_INT, - outstate = wrench.META_TYPE_INT, - }, -}) +-- I/O Expander +-- The input state depends on the neighbor. That's why we don't save this. +local save_i_state = false +local save_o_state = true +local i_state_type = save_i_state == true and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE +local o_state_type = save_o_state == true and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE +for i = 0, 15 do + wrench.register_node("digistuff:ioexpander_"..i, { + drop = save_o_state == false and "ioexpander_0", + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + aon = i_state_type, + bon = i_state_type, + con = i_state_type, + don = i_state_type, + outstate = o_state_type, + }, + }) +end + +--[[ TODO ... wrench.register_node("digistuff:movestone", { owned = true, metas = { @@ -135,6 +128,7 @@ wrench.register_node("digistuff:noteblock", { channel = wrench.META_TYPE_STRING, }, }) +--]] wrench.register_node("digistuff:panel", { metas = { @@ -145,13 +139,35 @@ wrench.register_node("digistuff:panel", { }, }) +-- Piezo + +local node_def = minetest.registered_nodes["digistuff:piezo"] +local orig_action = node_def.digiline.effector.action +node_def.digiline.effector.action = function(pos, node, channel, msg) + local meta = minetest.get_meta(pos) + if (meta:get_string("channel") == channel) then + meta:set_string("last_msg", msg) + end + return orig_action(pos, node, channel, msg) +end wrench.register_node("digistuff:piezo", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, + last_msg = wrench.META_TYPE_STRING, }, + after_place = function(pos, player, stack, pointed) + local meta = minetest.get_meta(pos) + local last_msg = meta:get_string("last_msg") + if last_msg == "fastrepeat" or last_msg == "slowrepeat" then + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + def.digiline.effector.action(pos, node, meta:get_string("channel"), last_msg) + end + end, }) +--[[ TODO .. wrench.register_node("digistuff:piston", { --owned = true, metas = { @@ -170,50 +186,51 @@ wrench.register_node("digistuff:piston_ext", { owner = wrench.META_TYPE_STRING, }, }) +--]] + +-- Timer wrench.register_node("digistuff:timer", { + timer = true, metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, + loop = wrench.META_TYPE_INT, }, }) ---]] --- Touchscreens +-- GPU, Touchscreens --[[ very complex ... -wrench.register_node("digistuff:advtouchscreen", { +wrench.register_node("digistuff:gpu", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, - init = wrench.META_TYPE_INT, + --? buffer[0..7] = wrench.META_TYPE_STRING, }, }) -wrench.register_node("digistuff:touchscreen", { +wrench.register_node("digistuff:advtouchscreen", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, init = wrench.META_TYPE_INT, }, }) ---]] ---[[ TODO -wrench.register_node("digistuff:wall_knob", { +wrench.register_node("digistuff:touchscreen", { metas = { formspec = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, - min = wrench.META_TYPE_INT, - max = wrench.META_TYPE_INT, - value = wrench.META_TYPE_INT, - protected = wrench.META_TYPE_INT, + init = wrench.META_TYPE_INT, }, }) +--]] + +-- Wall Knob wrench.register_node("digistuff:wall_knob_configured", { - drop = true, + drop = false, metas = { formspec = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, @@ -224,4 +241,3 @@ wrench.register_node("digistuff:wall_knob_configured", { protected = wrench.META_TYPE_INT, }, }) ---]] From 383f8be85f8914c16281e9a80085763377a16b00 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 17 Dec 2021 01:18:05 +0100 Subject: [PATCH 097/130] fix: meta:to_table() before minetest.remove_node(pos) --- functions.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions.lua b/functions.lua index 27710b6..53f4dbf 100644 --- a/functions.lua +++ b/functions.lua @@ -147,9 +147,10 @@ function wrench.pickup_node(pos, player) if def.before_remove then def.before_remove(pos, meta, node, player) end + local meta_table = meta:to_table() minetest.remove_node(pos) if def.after_pickup then - def.after_pickup(pos, node, meta:to_table(), player) + def.after_pickup(pos, node, meta_table, player) end local node_def = minetest.registered_nodes[node.name] if wrench.has_pipeworks and node_def.tube then From 7c2b681140b6c7d9ab55320653db7f8a3c7664e4 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 17 Dec 2021 01:19:26 +0100 Subject: [PATCH 098/130] even more `digistuff` support (WIP) + movestone, noteblock, piston* --- nodes/digistuff.lua | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 316efa1..c66a114 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -87,7 +87,6 @@ end wrench.register_node("digistuff:eeprom", mem_def) wrench.register_node("digistuff:ram", mem_def) - -- I/O Expander -- The input state depends on the neighbor. That's why we don't save this. @@ -110,25 +109,32 @@ for i = 0, 15 do }) end ---[[ TODO ... +-- Movestone + +-- TODO: Save (and restore) state and activity when pickup a moving movestone? +local movestone_save_state = false wrench.register_node("digistuff:movestone", { owned = true, + timer = movestone_save_state, metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, - state = wrench.META_TYPE_STRING, - active = wrench.META_TYPE_INT, + state = movestone_save_state and wrench.META_TYPE_STRING or wrench.META_TYPE_IGNORE, + active = movestone_save_state and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, }, }) +-- Noteblock + wrench.register_node("digistuff:noteblock", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, }) ---]] + +-- Panel wrench.register_node("digistuff:panel", { metas = { @@ -141,6 +147,7 @@ wrench.register_node("digistuff:panel", { -- Piezo +-- .. with channel sniffing to restore "fastrepeat" or "slowrepeat" local node_def = minetest.registered_nodes["digistuff:piezo"] local orig_action = node_def.digiline.effector.action node_def.digiline.effector.action = function(pos, node, channel, msg) @@ -167,26 +174,38 @@ wrench.register_node("digistuff:piezo", { end, }) ---[[ TODO .. +-- Piston + +-- TODO: restore extended piston? +local piston_extended_restore = true wrench.register_node("digistuff:piston", { - --owned = true, metas = { formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_INT, + channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, }) - wrench.register_node("digistuff:piston_ext", { - drop = true, - --owned = true, + drop = not piston_extended_restore, + before_remove = function(pos, meta, node, player) + -- remove "digistuff:piston_pusher" + local def = minetest.registered_nodes[node.name] + def.after_dig_node(pos, node) + end, + after_place = piston_extended_restore and function(pos, player, stack, pointed) + local channel = minetest.get_meta(pos):get_string("channel") + local node = minetest.get_node(pos) + minetest.swap_node(pos, {name = "digistuff:piston", param2 = node.param2}) + node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + def.digiline.effector.action(pos, node, channel, { action = "extend" }) + end, metas = { formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_INT, + channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, }) ---]] -- Timer From fe7d42aa6250ca18eb0f09a78f502bd1db02b46a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Fri, 17 Dec 2021 01:30:21 +0100 Subject: [PATCH 099/130] update README.md --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index aaf0dd6..99d9037 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,26 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic * https://github.com/Lokrates/Biofuel - biofuel:refinery * https://github.com/HybridDog/connected_chests +* https://github.com/minetest-mods/digilines + - digilines:chest + - digilines:lcd + - digilines:lightsensor + - digilines:rtc +* https://github.com/mt-mods/digistuff + - digistuff:camera + - digistuff:card_reader + - digistuff:controller_programmed + - digistuff:detector + - digistuff:eeprom + - digistuff:ioexpander_\* + - digistuff:movestone + - digistuff:noteblock + - digistuff:panel + - digistuff:piezo + - digistuff:piston + - digistuff:ram + - digistuff:timer + - digistuff:wall_knob_configured * https://github.com/minetest-mods/digtron - digtron:battery_holder - digtron:inventory From e21c4b089f2c8b188edf9838242f25d49c3abec2 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 17 Dec 2021 16:05:38 +1100 Subject: [PATCH 100/130] fix digilines lcd and remove unnecessary metas --- nodes/digilines.lua | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 42af76a..82022b7 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -4,29 +4,35 @@ wrench.register_node("digilines:chest", { lists = {"main"}, metas = { - infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, }) wrench.register_node("digilines:lightsensor", { metas = { - formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, }) wrench.register_node("digilines:rtc", { metas = { - formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, }) +local update_lcd = minetest.registered_nodes["digilines:lcd"].after_place_node + wrench.register_node("digilines:lcd", { metas = { - formspec = wrench.META_TYPE_STRING, + text = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, + after_place = function(pos) + local param2 = minetest.get_node(pos).param2 + if param2 == 0 or param2 == 1 then + minetest.swap_node(pos, {name = "digilines:lcd", param2 = 3}) + end + update_lcd(pos) + end, }) From dc98615a9419e462721310d68d5e17c2d6d3d9c1 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 18 Dec 2021 00:55:50 +0100 Subject: [PATCH 101/130] complete `digistuff` support + *touchscreen, gpu, light_*, nic --- README.md | 8 ++++- locale/template.txt | 5 +++ locale/wrench.de.tr | 5 +++ locale/wrench.es.tr | 5 +++ locale/wrench.fr.tr | 5 +++ locale/wrench.pl.tr | 5 +++ locale/wrench.pt_BR.tr | 5 +++ locale/wrench.tr.tr | 5 +++ locale/wrench.zh_CN.tr | 5 +++ nodes/digistuff.lua | 70 ++++++++++++++++++++++++++++++++++-------- 10 files changed, 104 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 99d9037..12a7a6d 100644 --- a/README.md +++ b/README.md @@ -43,19 +43,25 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - digilines:lightsensor - digilines:rtc * https://github.com/mt-mods/digistuff + - digistuff:advtouchscreen + - digistuff:button_\* - digistuff:camera - digistuff:card_reader - digistuff:controller_programmed - digistuff:detector - digistuff:eeprom + - digistuff:gpu - digistuff:ioexpander_\* + - digistuff:light_\* - digistuff:movestone + - digistuff:nic - digistuff:noteblock - digistuff:panel - digistuff:piezo - - digistuff:piston + - digistuff:piston\* - digistuff:ram - digistuff:timer + - digistuff:touchscreen - digistuff:wall_knob_configured * https://github.com/minetest-mods/digtron - digtron:battery_holder diff --git a/locale/template.txt b/locale/template.txt index a024332..a5e893c 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -17,3 +17,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.de.tr b/locale/wrench.de.tr index 2fdd2ed..efa6e87 100644 --- a/locale/wrench.de.tr +++ b/locale/wrench.de.tr @@ -21,3 +21,8 @@ Cannot pickup node. Node contains too much metadata.=Block kann nicht genommen w @1 "@2" vs. "@3"=@1 "@2" gegen "@3" @1 with "@2"=@1 mit "@2" @1 with text "@2"=@1 mit Text "@2" +@1 (@2) with channel "@3"=@1 (@2) mit Kanal "@3" +light level @1=Lichtlevel @1 + +unknown list value: @1=Unbekannter "list value": @1 +unknown meta key: @1=Unbekannter "meta key": @1 diff --git a/locale/wrench.es.tr b/locale/wrench.es.tr index 45f0c33..51df7dd 100644 --- a/locale/wrench.es.tr +++ b/locale/wrench.es.tr @@ -17,3 +17,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.fr.tr b/locale/wrench.fr.tr index ea800e2..d8b831c 100644 --- a/locale/wrench.fr.tr +++ b/locale/wrench.fr.tr @@ -17,3 +17,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.pl.tr b/locale/wrench.pl.tr index 3f31b31..d7ebf78 100644 --- a/locale/wrench.pl.tr +++ b/locale/wrench.pl.tr @@ -19,3 +19,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.pt_BR.tr b/locale/wrench.pt_BR.tr index f4ef8a5..e619129 100644 --- a/locale/wrench.pt_BR.tr +++ b/locale/wrench.pt_BR.tr @@ -19,3 +19,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.tr.tr b/locale/wrench.tr.tr index d0c5934..4e4625e 100644 --- a/locale/wrench.tr.tr +++ b/locale/wrench.tr.tr @@ -17,3 +17,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/locale/wrench.zh_CN.tr b/locale/wrench.zh_CN.tr index fc47127..cd3c9d4 100644 --- a/locale/wrench.zh_CN.tr +++ b/locale/wrench.zh_CN.tr @@ -14,3 +14,8 @@ Cannot pickup node. Node contains too much metadata.= @1 "@2" vs. "@3"= @1 with "@2"= @1 with text "@2"= + +unknown list value: @1= +unknown meta key: @1= +light level @1= +@1 (@2) with channel "@3"= diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index c66a114..706a1fd 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -1,6 +1,18 @@ -- Register wrench support for digistuff +local S = wrench.translator + +function desc_stripped(node) + local desc = minetest.registered_nodes[node.name].description + desc = string.gsub(desc, " %(you hacker you!%)", "") + return string.gsub(desc, " %- you hacker you!%)", ")") +end + +function desc_stripped_with_channel(pos, meta, node, player) + return S("@1 with channel \"@2\"", desc_stripped(node), meta:get_string("channel")) +end + --[[ NOTE: it makes no sense to pickup unconfigured nodes with 'wrench' like: - "digistuff:button" @@ -25,6 +37,7 @@ for _, node in ipairs(nodes) do msg = wrench.META_TYPE_STRING, mlight = wrench.META_TYPE_INT, }, + description = desc_stripped_with_channel, }) end @@ -61,6 +74,7 @@ wrench.register_node("digistuff:controller_programmed", { infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, + description = desc_stripped_with_channel, }) -- Detector @@ -73,7 +87,20 @@ wrench.register_node("digistuff:detector", { }, }) --- Memory +-- GPU + +local gpu_def = { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +} +for i = 0, 7 do + gpu_def.metas["buffer"..i] = wrench.META_TYPE_STRING +end +wrench.register_node("digistuff:gpu", gpu_def) + +-- Memory: eeprom & ram local mem_def = { metas = { @@ -106,6 +133,22 @@ for i = 0, 15 do don = i_state_type, outstate = o_state_type, }, + description = i == 0 or desc_stripped_with_channel, + }) +end + +-- Light + +for i = 0, 14 do + wrench.register_node("digistuff:light_"..i, { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, + description = function(pos, meta, node, player) + local state = i == 0 and "off" or S("light level @1", i) + return S("@1 (@2) with channel \"@3\"", desc_stripped(node), state, meta:get_string("channel")) + end, }) end @@ -125,6 +168,15 @@ wrench.register_node("digistuff:movestone", { }, }) +-- Nic + +wrench.register_node("digistuff:nic", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + }, +}) + -- Noteblock wrench.register_node("digistuff:noteblock", { @@ -205,6 +257,7 @@ wrench.register_node("digistuff:piston_ext", { channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, + description = desc_stripped_with_channel, }) -- Timer @@ -218,16 +271,7 @@ wrench.register_node("digistuff:timer", { }, }) --- GPU, Touchscreens - ---[[ very complex ... -wrench.register_node("digistuff:gpu", { - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - --? buffer[0..7] = wrench.META_TYPE_STRING, - }, -}) +-- Touchscreens wrench.register_node("digistuff:advtouchscreen", { metas = { @@ -236,15 +280,14 @@ wrench.register_node("digistuff:advtouchscreen", { init = wrench.META_TYPE_INT, }, }) - wrench.register_node("digistuff:touchscreen", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, + data = wrench.META_TYPE_STRING, init = wrench.META_TYPE_INT, }, }) ---]] -- Wall Knob @@ -259,4 +302,5 @@ wrench.register_node("digistuff:wall_knob_configured", { value = wrench.META_TYPE_INT, protected = wrench.META_TYPE_INT, }, + description = desc_stripped_with_channel, }) From 83fbb5414b92df26f1618094282ba169a4e671a5 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sat, 18 Dec 2021 02:00:23 +0100 Subject: [PATCH 102/130] add `digiscreen` support --- README.md | 1 + init.lua | 1 + mod.conf | 1 + nodes/digiscreen.lua | 20 ++++++++++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 nodes/digiscreen.lua diff --git a/README.md b/README.md index 12a7a6d..681c550 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - digilines:lcd - digilines:lightsensor - digilines:rtc +* https://cheapiesystems.com/git/digiscreen/ * https://github.com/mt-mods/digistuff - digistuff:advtouchscreen - digistuff:button_\* diff --git a/init.lua b/init.lua index 2bf5f50..421dee9 100644 --- a/init.lua +++ b/init.lua @@ -29,6 +29,7 @@ local mods = { "connected_chests", "default", "digilines", + "digiscreen", "digistuff", "digtron", "drawers", diff --git a/mod.conf b/mod.conf index 8706db5..b169a07 100644 --- a/mod.conf +++ b/mod.conf @@ -9,6 +9,7 @@ optional_depends = """ default, digtron, digilines, + digiscreen, digistuff, drawers, mesecons_commandblock, diff --git a/nodes/digiscreen.lua b/nodes/digiscreen.lua new file mode 100644 index 0000000..eeb08d0 --- /dev/null +++ b/nodes/digiscreen.lua @@ -0,0 +1,20 @@ + +-- Register wrench support for digiscreen + +wrench.register_node("digiscreen:digiscreen", { + metas = { + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + data = wrench.META_TYPE_STRING, + }, + after_place = function(pos, player, stack, pointed) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + local def = minetest.registered_nodes[node.name] + local data = minetest.deserialize(meta:get_string("data")) + if data then + -- Force screen update + def.digiline.effector.action(pos, node, meta:get_string("channel"), data) + end + end, +}) From 1c7d0895a5613bc36bd8d474d520a38db8a9fad8 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 03:08:36 +0100 Subject: [PATCH 103/130] fix `bones:bones` with `mapserver_mod` (see: https://github.com/minetest-mapserver/mapserver_mod/blob/3.1/bones.lua#L15) --- nodes/bones.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/nodes/bones.lua b/nodes/bones.lua index 1b05bd4..3162387 100644 --- a/nodes/bones.lua +++ b/nodes/bones.lua @@ -5,6 +5,7 @@ wrench.register_node("bones:bones", { lists = {"main"}, metas = { owner = wrench.META_TYPE_STRING, + _owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, formspec = wrench.META_TYPE_STRING, time = wrench.META_TYPE_INT, From 3066bfa2e094d4feb54567ee319c3abced92ba90 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 03:39:12 +0100 Subject: [PATCH 104/130] add misc `wrench.META_TYPE_IGNORE` keys --- nodes/default.lua | 1 + nodes/digilines.lua | 5 +++++ nodes/more_chests.lua | 1 + nodes/pipeworks.lua | 6 ++++++ nodes/signs_lib.lua | 2 ++ nodes/xdecor.lua | 1 + 6 files changed, 16 insertions(+) diff --git a/nodes/default.lua b/nodes/default.lua index 2d17871..8bd2b09 100644 --- a/nodes/default.lua +++ b/nodes/default.lua @@ -9,6 +9,7 @@ wrench.register_node("default:chest", { metas = { splitstacks = splitstacks, formspec = formspec, + infotext = wrench.META_TYPE_IGNORE, } }) diff --git a/nodes/digilines.lua b/nodes/digilines.lua index 82022b7..c32541e 100644 --- a/nodes/digilines.lua +++ b/nodes/digilines.lua @@ -4,18 +4,22 @@ wrench.register_node("digilines:chest", { lists = {"main"}, metas = { + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, }) wrench.register_node("digilines:lightsensor", { metas = { + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, }) wrench.register_node("digilines:rtc", { metas = { + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, }) @@ -24,6 +28,7 @@ local update_lcd = minetest.registered_nodes["digilines:lcd"].after_place_node wrench.register_node("digilines:lcd", { metas = { + formspec = wrench.META_TYPE_IGNORE, text = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, diff --git a/nodes/more_chests.lua b/nodes/more_chests.lua index dee69a5..233e90e 100644 --- a/nodes/more_chests.lua +++ b/nodes/more_chests.lua @@ -21,6 +21,7 @@ for _, chest in pairs(basic_chests) do metas = { owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, }, owned = true, }) diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 06a0ae7..00497d3 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -25,6 +25,8 @@ wrench.register_node("pipeworks:autocrafter", { local wielder_data = { lists = {"main"}, metas = { + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, owner = wrench.META_TYPE_STRING, }, drop = true, @@ -70,6 +72,7 @@ for i = 1, 10 do metas = { infotext = wrench.META_TYPE_STRING, dist = wrench.META_TYPE_INT, + adjlist = wrench.META_TYPE_IGNORE, }, description = desc_infotext, }) @@ -80,6 +83,7 @@ for i = 1, 10 do formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, can_receive = wrench.META_TYPE_INT, + adjlist = wrench.META_TYPE_IGNORE, }, description = desc_infotext, }) @@ -108,6 +112,8 @@ local mese_tube_data = { lists = {}, metas = { formspec = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_IGNORE, + adjlist = wrench.META_TYPE_IGNORE, }, description = wrench.description_with_configuration, } diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua index 43e59fc..c5b488c 100644 --- a/nodes/signs_lib.lua +++ b/nodes/signs_lib.lua @@ -22,6 +22,7 @@ for _, n in pairs(wood_signs) do glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, unifont = wrench.META_TYPE_INT, + infotext = wrench.META_TYPE_IGNORE, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) @@ -50,6 +51,7 @@ for _, n in pairs(steel_signs) do widefont = wrench.META_TYPE_INT, unifont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_IGNORE, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 3063d88..422711a 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -142,6 +142,7 @@ wrench.register_node("xdecor:workbench", { lists = {"tool", "input", "hammer", "forms", "storage"}, metas = { infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, }, owned = true, timer = true, From 75094d2970e77dcc3d5af1c70767a746c3ecc74a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 03:42:53 +0100 Subject: [PATCH 105/130] add meta `internal_EU_charge_max` for technic:*_battery_box* --- nodes/technic.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nodes/technic.lua b/nodes/technic.lua index f16b525..e66ec77 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -70,7 +70,8 @@ wrench.register_node("technic:tool_workshop", { infotext = wrench.META_TYPE_STRING, MV_EU_demand = wrench.META_TYPE_INT, MV_EU_input = wrench.META_TYPE_INT, - tube_time = wrench.META_TYPE_INT + tube_time = wrench.META_TYPE_INT, + formspec = wrench.META_TYPE_IGNORE }, }) @@ -85,6 +86,7 @@ for _, tier in pairs({"LV", "MV", "HV"}) do [tier.."_EU_supply"] = wrench.META_TYPE_INT, [tier.."_EU_input"] = wrench.META_TYPE_INT, internal_EU_charge = wrench.META_TYPE_INT, + internal_EU_charge_max = wrench.META_TYPE_INT, last_side_shown = wrench.META_TYPE_INT, channel = wrench.has_digilines and wrench.META_TYPE_STRING, }, @@ -148,5 +150,7 @@ wrench.register_node("technic:quarry", { dug = wrench.META_TYPE_INT, size = wrench.META_TYPE_INT, channel = wrench.has_digilines and wrench.META_TYPE_STRING, + dig_pos = wrench.META_TYPE_IGNORE, + HV_EU_input = wrench.META_TYPE_IGNORE, }, }) From 989fccb9d8b3126ae87a1e0d4963ba95c1e7114f Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 03:43:40 +0100 Subject: [PATCH 106/130] add meta `tube_time` for technic:cnc_mk2 --- nodes/technic_cnc.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/nodes/technic_cnc.lua b/nodes/technic_cnc.lua index 18806d0..e6dd2e9 100644 --- a/nodes/technic_cnc.lua +++ b/nodes/technic_cnc.lua @@ -32,6 +32,7 @@ if minetest.registered_nodes["technic:cnc_mk2"] then LV_EU_demand = wrench.META_TYPE_INT, LV_EU_input = wrench.META_TYPE_INT, src_time = wrench.META_TYPE_INT, + tube_time = wrench.META_TYPE_INT, size = wrench.META_TYPE_INT, program = wrench.META_TYPE_STRING, cnc_user = wrench.META_TYPE_STRING, From 8047a6bf4d289c4bd8951f17e23c9a100f116723 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 04:13:17 +0100 Subject: [PATCH 107/130] add `technic:power_monitor` and `technic:switching_station` when `wrench.has_digilines` --- nodes/technic.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/nodes/technic.lua b/nodes/technic.lua index e66ec77..015c5ad 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -107,6 +107,24 @@ wrench.register_node("technic:injector", { timer = true, }) +if wrench.has_digilines then + wrench.register_node("technic:power_monitor", { + metas = { + channel = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, + }, + }) + wrench.register_node("technic:switching_station", { + timer = true, + metas = { + channel = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, + }, + }) +end + -- Forcefield emitter local states = { "off", "on" } From 39c180285e74ab3653c0ca9cb843579cfae3c120 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 04:19:03 +0100 Subject: [PATCH 108/130] add `technic:supply_converter` --- nodes/technic.lua | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/nodes/technic.lua b/nodes/technic.lua index 015c5ad..c82f2e5 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -125,6 +125,29 @@ if wrench.has_digilines then }) end +-- Supply converter + +wrench.register_node("technic:supply_converter", { + metas = { + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + channel = wrench.META_TYPE_STRING, + enabled = wrench.META_TYPE_INT, + power = wrench.META_TYPE_INT, + mesecon_effect = wrench.META_TYPE_INT, + mesecon_mode = wrench.META_TYPE_INT, + LV_EU_demand = wrench.META_TYPE_IGNORE, + LV_EU_input = wrench.META_TYPE_IGNORE, + LV_EU_supply = wrench.META_TYPE_IGNORE, + MV_EU_demand = wrench.META_TYPE_IGNORE, + MV_EU_input = wrench.META_TYPE_IGNORE, + MV_EU_supply = wrench.META_TYPE_IGNORE, + HV_EU_demand = wrench.META_TYPE_IGNORE, + HV_EU_input = wrench.META_TYPE_IGNORE, + HV_EU_supply = wrench.META_TYPE_IGNORE, + }, +}) + -- Forcefield emitter local states = { "off", "on" } From c0a675f8e1ba49d6a0b227e46fc3ca551e5f9c97 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Mon, 3 Jan 2022 04:42:36 +0100 Subject: [PATCH 109/130] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 681c550..649b48f 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,9 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - technic:coal_alloy_furnace\* - technic:\*chest\* - technic:injector + - technic:power_monitor + - technic:supply_converter + - technic:switching_station - technic:tool_workshop - technic:\*_alloy_furnace\* - technic:\*_battery_box\* From 0ef346c403c95f6e29e6b51f9e217b0a7468155b Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 05:28:41 +0100 Subject: [PATCH 110/130] add `digiline_detector_tube_*` --- README.md | 1 + nodes/pipeworks.lua | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 649b48f..0b7be52 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic * https://github.com/mt-mods/pipeworks - pipeworks:autocrafter - pipeworks:deployer_\* + - pipeworks:digiline_detector_tube_\* - pipeworks:dispenser_\* - pipeworks:nodebreaker_\* - pipeworks:\*filter diff --git a/nodes/pipeworks.lua b/nodes/pipeworks.lua index 00497d3..3aadaa7 100644 --- a/nodes/pipeworks.lua +++ b/nodes/pipeworks.lua @@ -64,15 +64,17 @@ wrench.register_node("pipeworks:mese_filter", filter_data) filter_data.metas["channel"] = wrench.META_TYPE_STRING wrench.register_node("pipeworks:digiline_filter", filter_data) --- Tubes (6d style): 'mese_sand_tube' and 'teleport_tube' +-- Tubes (6d style): 'mese_sand_tube','teleport_tube', 'digiline_detector_tube' for i = 1, 10 do wrench.register_node("pipeworks:mese_sand_tube_"..i, { drop = true, metas = { infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, dist = wrench.META_TYPE_INT, adjlist = wrench.META_TYPE_IGNORE, + tubedir = wrench.META_TYPE_IGNORE, }, description = desc_infotext, }) @@ -84,9 +86,22 @@ for i = 1, 10 do channel = wrench.META_TYPE_STRING, can_receive = wrench.META_TYPE_INT, adjlist = wrench.META_TYPE_IGNORE, + tubedir = wrench.META_TYPE_IGNORE, }, description = desc_infotext, }) + if wrench.has_digilines then + wrench.register_node("pipeworks:digiline_detector_tube_"..i, { + drop = true, + metas = { + formspec = wrench.META_TYPE_IGNORE, + channel = wrench.META_TYPE_STRING, + adjlist = wrench.META_TYPE_IGNORE, + tubedir = wrench.META_TYPE_IGNORE, + }, + description = wrench.description_with_channel, + }) + end end -- Tubes (old style): 'lua_tube' and 'mese_tube' @@ -100,6 +115,7 @@ local lua_tube_data = { lc_memory = wrench.META_TYPE_STRING, luac_id = wrench.META_TYPE_INT, real_portstates = wrench.META_TYPE_INT, + tubedir = wrench.META_TYPE_IGNORE, }, description = function(pos, meta, node, player) local desc = minetest.registered_nodes["pipeworks:lua_tube000000"].description @@ -114,6 +130,7 @@ local mese_tube_data = { formspec = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_IGNORE, adjlist = wrench.META_TYPE_IGNORE, + tubedir = wrench.META_TYPE_IGNORE, }, description = wrench.description_with_configuration, } From fbfbd9fd60c284f5d81c89637e2cc37dfc31c807 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 09:07:04 +0100 Subject: [PATCH 111/130] add `technic:*_generator*` --- README.md | 1 + nodes/technic.lua | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/README.md b/README.md index 0b7be52..056cccc 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic - technic:\*_electric_furnace\* - technic:\*_extractor\* - technic:\*_freezer\* + - technic:\*_generator\* - technic:\*_grinder\* * https://github.com/minetest-mods/xdecor - realchess:chessboard diff --git a/nodes/technic.lua b/nodes/technic.lua index c82f2e5..d31a1e1 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -40,6 +40,29 @@ for name, data in pairs(base_machines) do end end +-- Generators + +local function register_generator(nodename, tier) + wrench.register_node(nodename, { + lists = {"src"}, + metas = { + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, + splitstacks = tier ~= "LV" and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, + burn_time = wrench.META_TYPE_INT, + burn_totaltime = wrench.META_TYPE_INT, + tube_time = wrench.META_TYPE_IGNORE, + [tier.."_EU_supply"] = wrench.META_TYPE_IGNORE, + }, + }) +end + +for _, tier in ipairs(defaults.tiers) do + local nodename ="technic:"..tier:lower().."_generator" + register_generator(nodename, tier) + register_generator(nodename.."_active", tier) +end + -- Special nodes wrench.register_node("technic:coal_alloy_furnace", { From f4373cc4249131e3b87e647f226ad526ad403974 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 09:38:06 +0100 Subject: [PATCH 112/130] ignore `tube_time` and `formspec` on LV base machines --- nodes/technic.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/technic.lua b/nodes/technic.lua index d31a1e1..40da987 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -8,11 +8,11 @@ local function register_machine_node(nodename, tier) local lists = tier ~= "LV" and machine_invlist_upgrades or machine_invlist local metas = { infotext = wrench.META_TYPE_STRING, - formspec = tier ~= "LV" and wrench.META_TYPE_STRING or nil, + formspec = tier ~= "LV" and wrench.META_TYPE_STRING or wrench.META_TYPE_IGNORE, splitstacks = tier ~= "LV" and wrench.META_TYPE_INT or nil, [tier.."_EU_demand"] = wrench.META_TYPE_INT, [tier.."_EU_input"] = wrench.META_TYPE_INT, - tube_time = tier ~= "LV" and wrench.META_TYPE_INT or nil, + tube_time = tier ~= "LV" and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, src_time = wrench.META_TYPE_INT, } wrench.register_node(nodename, {lists = lists, metas = metas}) From 5197e263404d66a7a69a1d4b1566f1c11f7f5bb8 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 10:45:11 +0100 Subject: [PATCH 113/130] fix `technic:*_battery_box_*`: +metas.tube_time --- nodes/technic.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nodes/technic.lua b/nodes/technic.lua index 40da987..479136a 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -98,6 +98,8 @@ wrench.register_node("technic:tool_workshop", { }, }) +-- Battery boxes + for _, tier in pairs({"LV", "MV", "HV"}) do for i = 0, 8 do wrench.register_node("technic:"..tier:lower().."_battery_box"..i, { @@ -112,6 +114,7 @@ for _, tier in pairs({"LV", "MV", "HV"}) do internal_EU_charge_max = wrench.META_TYPE_INT, last_side_shown = wrench.META_TYPE_INT, channel = wrench.has_digilines and wrench.META_TYPE_STRING, + tube_time = tier ~= "LV" and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, }, }) end From f42ec587d95a834d10b328eb26848614ee754d3a Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 21:30:24 +0100 Subject: [PATCH 114/130] add `def.lists_ignore` (used when `wrench.enable_debug = true`) --- debug.lua | 34 ++++++++++++++++++++++++++-------- nodes/technic.lua | 7 ++++++- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/debug.lua b/debug.lua index fc86f1d..366d422 100644 --- a/debug.lua +++ b/debug.lua @@ -42,29 +42,47 @@ wrench.pickup_node = function(pos, player) local meta = minetest.get_meta(pos) if not player:get_player_control().sneak then local wrench_def = wrench.registered_nodes[node.name] + local inventory = meta:get_inventory() + local lists = get_keys(inventory:get_lists()) + local lists_missing = {} if wrench_def and wrench_def.lists then - local inventory = meta:get_inventory() - local lists = get_keys(inventory:get_lists()) if #lists > 0 then for _, v in ipairs(lists) do - if not array_find(wrench_def.lists, v) then - return false, S("unknown list value: @1", v) + if not array_find(wrench_def.lists, v) + and not (wrench_def.lists_ignore and array_find(wrench_def.lists_ignore, v)) then + table.insert(lists_missing, v) end end end end + local metatable = meta:to_table() + local metas = get_keys(metatable.fields) + local metas_missing = {} if wrench_def and wrench_def.metas then - local metatable = meta:to_table() - local metas = get_keys(metatable.fields) if #metas > 0 then for k, v in pairs(metatable.fields) do if not wrench_def.metas[k] then - return false, S("unknown meta key: @1", k) + table.insert(metas_missing, k) end end end end - return orig_wrench_pickup_node(pos, player) + if #lists_missing > 0 or #metas_missing > 0 then + return false, S("can't pickup @1, unknown value(s) in lists: @2 metas: @3", + node.name, + table.concat(lists_missing, ","), + table.concat(metas_missing, ", ") + ) + end + local rc = orig_wrench_pickup_node(pos, player) + if rc == nil then + if #lists == 0 and #metas == 0 then + return false, S("can't pickup node: @1, no inventory and no meta.fields", node.name) + else + return false, S("can't pickup unsupported node: @1", node.name) + end + end + return rc end local def = minetest.registered_nodes[node.name] print("wrench.register_node(\"" .. node.name .. "\", {"); diff --git a/nodes/technic.lua b/nodes/technic.lua index 479136a..4f1562c 100644 --- a/nodes/technic.lua +++ b/nodes/technic.lua @@ -15,7 +15,11 @@ local function register_machine_node(nodename, tier) tube_time = tier ~= "LV" and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, src_time = wrench.META_TYPE_INT, } - wrench.register_node(nodename, {lists = lists, metas = metas}) + wrench.register_node(nodename, { + lists = lists, + metas = metas, + lists_ignore = tier ~= "LV" and {"dst_tmp"} or {"dst_tmp", "upgrade1", "upgrade2"} + }) end local defaults = {tiers = {"LV", "MV", "HV"}} @@ -116,6 +120,7 @@ for _, tier in pairs({"LV", "MV", "HV"}) do channel = wrench.has_digilines and wrench.META_TYPE_STRING, tube_time = tier ~= "LV" and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, }, + lists_ignore = tier ~= "LV" and nil or {"upgrade1", "upgrade2"}, }) end end From 03c6bfcf5ffdd383c228de2d6d31e8ded3e17f52 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 3 Jan 2022 21:45:36 +0100 Subject: [PATCH 115/130] fix `metas` and add `lists_ignore` for `technic:*_chest` --- nodes/technic_chests.lua | 63 +++++++++++++++------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/nodes/technic_chests.lua b/nodes/technic_chests.lua index e665e05..5b06d57 100644 --- a/nodes/technic_chests.lua +++ b/nodes/technic_chests.lua @@ -3,20 +3,6 @@ local splitstacks = wrench.has_pipeworks and wrench.META_TYPE_INT -local function get_chest_description(pos, meta, node) - local desc = minetest.registered_nodes[node.name].description - local text = meta:get_string("infotext") - if text ~= desc then - return text - end -end - -local function with_owner_field(metas) - local result = table.copy(metas) - result.owner = wrench.META_TYPE_STRING - return result -end - local chests_meta = { iron = { infotext = wrench.META_TYPE_STRING, @@ -44,6 +30,7 @@ local chests_meta = { sort_mode = wrench.META_TYPE_INT, autosort = wrench.META_TYPE_INT, splitstacks = splitstacks, + color = wrench.META_TYPE_INT, }, mithril = { infotext = wrench.META_TYPE_STRING, @@ -60,25 +47,36 @@ local chests_meta = { }, } -for name, metas in pairs(chests_meta) do - wrench.register_node("technic:"..name.."_chest", { +local function with_owner_field(metas) + local result = table.copy(metas) + result.owner = wrench.META_TYPE_STRING + return result +end + +local function register_chests(material, color) + local lists_ignore = (material ~= "iron" and material ~= "copper") and {"quickmove"} or nil + wrench.register_node("technic:"..material.."_chest"..color, { lists = {"main"}, - metas = metas, - description = get_chest_description, + lists_ignore = lists_ignore, + metas = chests_meta[material], }) - wrench.register_node("technic:"..name.."_protected_chest", { + wrench.register_node("technic:"..material.."_protected_chest"..color, { lists = {"main"}, - metas = metas, - description = get_chest_description, + lists_ignore = lists_ignore, + metas = chests_meta[material], }) - wrench.register_node("technic:"..name.."_locked_chest", { + wrench.register_node("technic:"..material.."_locked_chest"..color, { lists = {"main"}, - metas = with_owner_field(metas), - description = get_chest_description, + lists_ignore = lists_ignore, + metas = with_owner_field(chests_meta[material]), owned = true, }) end +for material, metas in pairs(chests_meta) do + register_chests(material, "") +end + -- Register extra nodes with color marking for gold chest local chest_mark_colors = { @@ -100,20 +98,5 @@ local chest_mark_colors = { } for i = 1, 15 do - wrench.register_node("technic:gold_chest"..chest_mark_colors[i], { - lists = {"main"}, - metas = chests_meta.gold, - description = get_chest_description, - }) - wrench.register_node("technic:gold_protected_chest"..chest_mark_colors[i], { - lists = {"main"}, - metas = chests_meta.gold, - description = get_chest_description, - }) - wrench.register_node("technic:gold_locked_chest"..chest_mark_colors[i], { - lists = {"main"}, - metas = with_owner_field(chests_meta.gold), - description = get_chest_description, - owned = true, - }) + register_chests("gold", chest_mark_colors[i]) end From 98706fcbc97df6f2370a16d21afc49d2f749e1bc Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sun, 9 Jan 2022 22:48:19 +0100 Subject: [PATCH 116/130] move sanity checks to `wrench.pickup_node` --- debug.lua | 39 ++------------------------------------- functions.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 37 deletions(-) diff --git a/debug.lua b/debug.lua index 366d422..0d9e59a 100644 --- a/debug.lua +++ b/debug.lua @@ -9,12 +9,6 @@ local get_keys = function(list) return keys end -local array_find = function(list, val) - for i, _ in ipairs(list) do - if list[i] == val then return i end - end -end - local spairs = function(tbl, order_func) local ptrs = {} for p in pairs(tbl) do ptrs[#ptrs +1] = p end @@ -41,40 +35,11 @@ wrench.pickup_node = function(pos, player) local node = minetest.get_node(pos) local meta = minetest.get_meta(pos) if not player:get_player_control().sneak then - local wrench_def = wrench.registered_nodes[node.name] local inventory = meta:get_inventory() local lists = get_keys(inventory:get_lists()) - local lists_missing = {} - if wrench_def and wrench_def.lists then - if #lists > 0 then - for _, v in ipairs(lists) do - if not array_find(wrench_def.lists, v) - and not (wrench_def.lists_ignore and array_find(wrench_def.lists_ignore, v)) then - table.insert(lists_missing, v) - end - end - end - end local metatable = meta:to_table() local metas = get_keys(metatable.fields) - local metas_missing = {} - if wrench_def and wrench_def.metas then - if #metas > 0 then - for k, v in pairs(metatable.fields) do - if not wrench_def.metas[k] then - table.insert(metas_missing, k) - end - end - end - end - if #lists_missing > 0 or #metas_missing > 0 then - return false, S("can't pickup @1, unknown value(s) in lists: @2 metas: @3", - node.name, - table.concat(lists_missing, ","), - table.concat(metas_missing, ", ") - ) - end - local rc = orig_wrench_pickup_node(pos, player) + local rc, message = orig_wrench_pickup_node(pos, player) if rc == nil then if #lists == 0 and #metas == 0 then return false, S("can't pickup node: @1, no inventory and no meta.fields", node.name) @@ -82,7 +47,7 @@ wrench.pickup_node = function(pos, player) return false, S("can't pickup unsupported node: @1", node.name) end end - return rc + return rc, message end local def = minetest.registered_nodes[node.name] print("wrench.register_node(\"" .. node.name .. "\", {"); diff --git a/functions.lua b/functions.lua index 53f4dbf..6a28327 100644 --- a/functions.lua +++ b/functions.lua @@ -9,6 +9,13 @@ local errors = { bad_item = function(item) return S("Cannot pickup node containing @1.", item) end, nested = S("Cannot pickup node. Nesting inventories is not allowed."), metadata = S("Cannot pickup node. Node contains too much metadata."), + missing = function(node, missing_lists, missing_metas) + return S("Cannot pickup @1, unknown value(s) in lists: @2 metas: @3", + node.name, + table.concat(missing_lists, ","), + table.concat(missing_metas, ", ") + ) + end } local function get_stored_metadata(itemstack) @@ -76,6 +83,43 @@ function wrench.description_with_text(pos, meta, node, player) return S("@1 with text \"@2\"", minetest.registered_nodes[node.name].description, text) end +local function check_dev_lists(def, inventory) + local array_find = function(list, val) + for i, _ in ipairs(list) do + if list[i] == val then return i end + end + end + local get_keys = function(list) + local keys = {} + for k, _ in pairs(list) do + keys[#keys+1] = k + end + return keys + end + local def_lists = def.lists or {} + local lists = get_keys(inventory:get_lists()) + local missing_lists = {} + for _, v in ipairs(lists) do + if not array_find(def_lists, v) + and not (def.lists_ignore and array_find(def.lists_ignore, v)) then + table.insert(missing_lists, v) + end + end + return missing_lists +end + +local function check_dev_metas(def, meta) + local def_metas = def.metas or {} + local metatable = meta:to_table() + local missing_metas = {} + for k, v in pairs(metatable.fields) do + if not def_metas[k] then + table.insert(missing_metas, k) + end + end + return missing_metas +end + function wrench.pickup_node(pos, player) local node = minetest.get_node(pos) local def = wrench.registered_nodes[node.name] @@ -96,6 +140,11 @@ function wrench.pickup_node(pos, player) metas = {}, } local inv = meta:get_inventory() + local missing_lists = check_dev_lists(def, inv) + local missing_metas = check_dev_metas(def, meta) + if #missing_metas > 0 or #missing_lists > 0 then + return false, errors.missing(node, missing_lists, missing_metas) + end for _, listname in pairs(def.lists or {}) do local list = inv:get_list(listname) for i, stack in pairs(list) do From 708286d10390577c351377edcecba8a7d87666ec Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sun, 9 Jan 2022 22:51:14 +0100 Subject: [PATCH 117/130] add misc `wrench.META_TYPE_IGNORE` keys --- nodes/basic_signs.lua | 2 ++ nodes/xdecor.lua | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua index 1e715cc..830243a 100644 --- a/nodes/basic_signs.lua +++ b/nodes/basic_signs.lua @@ -20,6 +20,7 @@ local sign_def = { glow = wrench.META_TYPE_STRING, widefont = wrench.META_TYPE_INT, unifont = wrench.META_TYPE_INT, + infotext = wrench.META_TYPE_IGNORE, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) @@ -59,6 +60,7 @@ register_all("basic_signs:sign_wall_locked", { widefont = wrench.META_TYPE_INT, unifont = wrench.META_TYPE_INT, owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_IGNORE, }, before_remove = remove_glow, after_place = function(pos, player, stack, pointed) diff --git a/nodes/xdecor.lua b/nodes/xdecor.lua index 422711a..ac816e6 100644 --- a/nodes/xdecor.lua +++ b/nodes/xdecor.lua @@ -15,6 +15,10 @@ local nodes = { for _, nodename in pairs(nodes) do wrench.register_node(nodename, { lists = {"main"}, + metas = { + infotext = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_IGNORE, + }, }) end From 03a47ca3c03384e0c860fb2c332f8d24675e1510 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Sun, 9 Jan 2022 22:56:06 +0100 Subject: [PATCH 118/130] move debug.lua to debug/debug.lua --- debug.lua => debug/debug.lua | 0 init.lua | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename debug.lua => debug/debug.lua (100%) diff --git a/debug.lua b/debug/debug.lua similarity index 100% rename from debug.lua rename to debug/debug.lua diff --git a/init.lua b/init.lua index 421dee9..9012138 100644 --- a/init.lua +++ b/init.lua @@ -56,5 +56,5 @@ for _, mod in pairs(mods) do end if minetest.settings:get_bool("wrench.enable_debug", false) then - dofile(modpath.."/debug.lua") + dofile(modpath.."/debug/debug.lua") end From 1b56befecaf150d258e6d9761784b13986184d58 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Mon, 10 Jan 2022 00:00:21 +0100 Subject: [PATCH 119/130] Update API.md --- API.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index d7c6c03..ad4e88e 100644 --- a/API.md +++ b/API.md @@ -6,10 +6,14 @@ wrench.register_node(node.name, { lists = list, -- inventory list + lists_ignore = lists_ignore, + -- ignored and not saved inventory list + metas = table, -- Table for node metadata: -- name: Meta name -- type: Data type: + -- `wrench.META_TYPE_IGNORE` ignored and not saved -- `wrench.META_TYPE_FLOAT` for float -- `wrench.META_TYPE_STRING` for string -- `wrench.META_TYPE_INT` for integer @@ -18,6 +22,8 @@ wrench.register_node(node.name, { -- Default behaver: -- when `lists` is not `nil` -- `minetest.registered_nodes[node.name].description` + " with items" + -- when `lists` is `nil` and only `metas.channel` is defined + -- `minetest.registered_nodes[node.name].description` + " with cannel ''" -- when `lists` is `nil` -- `minetest.registered_nodes[node.name].description` + " with configuration" description = `wrench.description_with_items`, @@ -51,14 +57,19 @@ wrench.register_node(node.name, { before_remove = nil, -- Default before_remove = function(pos, meta, node, player) - -- Function called before 'minetest.remove_node(pos)' + -- Function called before pickup node + + after_pickup = nil, + -- default + after_pickup = function(pos, node, meta_table, player) + -- Function called after pickup node after_place = nil, -- Default after_place = function(pos, player, itemstack, pointed_thing), -- Function called after place node }) -``` +``` Example: ```lua wrench.register_node("bones:bones", { From 625caa225c4b253f9dc0d44ccf58e43d1cc71430 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 10 Jan 2022 00:03:07 +0100 Subject: [PATCH 120/130] rename `before_remove` to `before_pickup` --- API.md | 4 ++-- functions.lua | 4 ++-- nodes/basic_signs.lua | 4 ++-- nodes/digistuff.lua | 2 +- nodes/signs_lib.lua | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/API.md b/API.md index ad4e88e..c01f8fe 100644 --- a/API.md +++ b/API.md @@ -54,9 +54,9 @@ wrench.register_node(node.name, { timer = true, -- Save NodeTimers - before_remove = nil, + before_pickup = nil, -- Default - before_remove = function(pos, meta, node, player) + before_pickup = function(pos, meta, node, player) -- Function called before pickup node after_pickup = nil, diff --git a/functions.lua b/functions.lua index 6a28327..0f2fa36 100644 --- a/functions.lua +++ b/functions.lua @@ -193,8 +193,8 @@ function wrench.pickup_node(pos, player) return false, errors.full_inv end player_inv:add_item("main", stack) - if def.before_remove then - def.before_remove(pos, meta, node, player) + if def.before_pickup then + def.before_pickup(pos, meta, node, player) end local meta_table = meta:to_table() minetest.remove_node(pos) diff --git a/nodes/basic_signs.lua b/nodes/basic_signs.lua index 830243a..8e70edd 100644 --- a/nodes/basic_signs.lua +++ b/nodes/basic_signs.lua @@ -22,7 +22,7 @@ local sign_def = { unifont = wrench.META_TYPE_INT, infotext = wrench.META_TYPE_IGNORE, }, - before_remove = remove_glow, + before_pickup = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) @@ -62,7 +62,7 @@ register_all("basic_signs:sign_wall_locked", { owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_IGNORE, }, - before_remove = remove_glow, + before_pickup = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 706a1fd..257b357 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -239,7 +239,7 @@ wrench.register_node("digistuff:piston", { }) wrench.register_node("digistuff:piston_ext", { drop = not piston_extended_restore, - before_remove = function(pos, meta, node, player) + before_pickup = function(pos, meta, node, player) -- remove "digistuff:piston_pusher" local def = minetest.registered_nodes[node.name] def.after_dig_node(pos, node) diff --git a/nodes/signs_lib.lua b/nodes/signs_lib.lua index c5b488c..326e0bc 100644 --- a/nodes/signs_lib.lua +++ b/nodes/signs_lib.lua @@ -24,7 +24,7 @@ for _, n in pairs(wood_signs) do unifont = wrench.META_TYPE_INT, infotext = wrench.META_TYPE_IGNORE, }, - before_remove = remove_glow, + before_pickup = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed) signs_lib.update_sign(pos) @@ -53,7 +53,7 @@ for _, n in pairs(steel_signs) do owner = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_IGNORE, }, - before_remove = remove_glow, + before_pickup = remove_glow, after_place = function(pos, player, stack, pointed) signs_lib.after_place_node(pos, player, stack, pointed, true) signs_lib.update_sign(pos) From 4974c80c306d81cdaa431fffbbcad00f19e8e2e5 Mon Sep 17 00:00:00 2001 From: nixnoxus <87639406+nixnoxus@users.noreply.github.com> Date: Mon, 10 Jan 2022 00:14:18 +0100 Subject: [PATCH 121/130] Update README.md (cleanup #Contributors) --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 056cccc..7205815 100644 --- a/README.md +++ b/README.md @@ -142,23 +142,19 @@ This mod is a fork from wrench/ in https://github.com/mt-mods/technic wrench.enable_crafting = true ``` -# Contributors (originally technic modpack) +# Contributors -* kpoppel * Nekogloop -* Nore/Ekdohibs * ShadowNinja -* VanessaE * BuckarooBanzay * OgelGames * int-ua * S-S-X * H-V-Smacker * groxxda -* SwissalpS * And many others... -# License (originally technic modpack) +# License Unless otherwise stated, all components of this modpack are licensed under the LGPL, V2 or later. See also the individual mod folders for their From 44181bcbddb3d1e89602e48b1b2a1eb577767806 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Mon, 10 Jan 2022 00:45:02 +0100 Subject: [PATCH 122/130] make `debug/debug.lua` optional --- init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 9012138..1d94f66 100644 --- a/init.lua +++ b/init.lua @@ -56,5 +56,10 @@ for _, mod in pairs(mods) do end if minetest.settings:get_bool("wrench.enable_debug", false) then - dofile(modpath.."/debug/debug.lua") + local file = modpath.."/debug/debug.lua" + local f = io.open(file, "r") + if f then + io.close(f) + dofile(file) + end end From 29a48575363ba7189e8c44be937f71095f7aa57b Mon Sep 17 00:00:00 2001 From: OgelGames Date: Mon, 17 Jan 2022 16:34:51 +1100 Subject: [PATCH 123/130] Update digistuff.lua --- nodes/digistuff.lua | 135 ++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 87 deletions(-) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 257b357..8a2c4fc 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -13,25 +13,19 @@ function desc_stripped_with_channel(pos, meta, node, player) return S("@1 with channel \"@2\"", desc_stripped(node), meta:get_string("channel")) end ---[[ - NOTE: it makes no sense to pickup unconfigured nodes with 'wrench' like: - - "digistuff:button" - - "digistuff:controller" - - "digistuff:wall_knob" ---]] - -- Buttons +-- Unconfigured node cannot be picked up (digistuff:button) local nodes = { "digistuff:button_off", "digistuff:button_off_pushed", "digistuff:button_on_pushed", } + for _, node in ipairs(nodes) do wrench.register_node(node, { drop = "digistuff:button_off", metas = { - formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, protected = wrench.META_TYPE_INT, msg = wrench.META_TYPE_STRING, @@ -45,18 +39,18 @@ end wrench.register_node("digistuff:camera", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, radius = wrench.META_TYPE_INT, distance = wrench.META_TYPE_INT, }, }) --- Cardreader +-- Card Reader wrench.register_node("digistuff:card_reader", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, writepending = wrench.META_TYPE_INT, @@ -65,12 +59,11 @@ wrench.register_node("digistuff:card_reader", { }, }) --- Controller +-- Game Controller +-- Unconfigured node cannot be picked up (digistuff:controller) wrench.register_node("digistuff:controller_programmed", { - drop = false, metas = { - formspec = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, }, @@ -81,7 +74,7 @@ wrench.register_node("digistuff:controller_programmed", { wrench.register_node("digistuff:detector", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_INT, radius = wrench.META_TYPE_INT, }, @@ -91,49 +84,48 @@ wrench.register_node("digistuff:detector", { local gpu_def = { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, } + for i = 0, 7 do gpu_def.metas["buffer"..i] = wrench.META_TYPE_STRING end + wrench.register_node("digistuff:gpu", gpu_def) --- Memory: eeprom & ram +-- Memory: EEPROM & SRAM local mem_def = { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, } + for i = 0, 31 do mem_def.metas[string.format("data%02i", i)] = wrench.META_TYPE_STRING end + wrench.register_node("digistuff:eeprom", mem_def) wrench.register_node("digistuff:ram", mem_def) -- I/O Expander +-- Inputs are not saved because they depend adjacent nodes. --- The input state depends on the neighbor. That's why we don't save this. -local save_i_state = false -local save_o_state = true -local i_state_type = save_i_state == true and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE -local o_state_type = save_o_state == true and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE for i = 0, 15 do wrench.register_node("digistuff:ioexpander_"..i, { - drop = save_o_state == false and "ioexpander_0", metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, - aon = i_state_type, - bon = i_state_type, - con = i_state_type, - don = i_state_type, - outstate = o_state_type, + aon = wrench.META_TYPE_IGNORE, + bon = wrench.META_TYPE_IGNORE, + con = wrench.META_TYPE_IGNORE, + don = wrench.META_TYPE_IGNORE, + outstate = wrench.META_TYPE_INT, }, - description = i == 0 or desc_stripped_with_channel, + description = i > 0 and desc_stripped_with_channel or nil, }) end @@ -142,29 +134,26 @@ end for i = 0, 14 do wrench.register_node("digistuff:light_"..i, { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, description = function(pos, meta, node, player) - local state = i == 0 and "off" or S("light level @1", i) - return S("@1 (@2) with channel \"@3\"", desc_stripped(node), state, meta:get_string("channel")) + local state = S("light level @1", i) + local channel = meta:get_string("channel") + return S("@1 (@2) with channel \"@3\"", desc_stripped(node), state, channel) end, }) end -- Movestone +-- Moving movestones will be stopped when picked up. --- TODO: Save (and restore) state and activity when pickup a moving movestone? -local movestone_save_state = false wrench.register_node("digistuff:movestone", { owned = true, - timer = movestone_save_state, metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, - state = movestone_save_state and wrench.META_TYPE_STRING or wrench.META_TYPE_IGNORE, - active = movestone_save_state and wrench.META_TYPE_INT or wrench.META_TYPE_IGNORE, }, }) @@ -172,7 +161,7 @@ wrench.register_node("digistuff:movestone", { wrench.register_node("digistuff:nic", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, }) @@ -181,7 +170,7 @@ wrench.register_node("digistuff:nic", { wrench.register_node("digistuff:noteblock", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, }, }) @@ -198,62 +187,35 @@ wrench.register_node("digistuff:panel", { }) -- Piezo +-- Sounds will be stopped when picked up. --- .. with channel sniffing to restore "fastrepeat" or "slowrepeat" -local node_def = minetest.registered_nodes["digistuff:piezo"] -local orig_action = node_def.digiline.effector.action -node_def.digiline.effector.action = function(pos, node, channel, msg) - local meta = minetest.get_meta(pos) - if (meta:get_string("channel") == channel) then - meta:set_string("last_msg", msg) - end - return orig_action(pos, node, channel, msg) -end wrench.register_node("digistuff:piezo", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, - last_msg = wrench.META_TYPE_STRING, }, - after_place = function(pos, player, stack, pointed) - local meta = minetest.get_meta(pos) - local last_msg = meta:get_string("last_msg") - if last_msg == "fastrepeat" or last_msg == "slowrepeat" then - local node = minetest.get_node(pos) - local def = minetest.registered_nodes[node.name] - def.digiline.effector.action(pos, node, meta:get_string("channel"), last_msg) - end - end, }) --- Piston +-- Pistons +-- Extended pistons will be retracted when picked up. --- TODO: restore extended piston? -local piston_extended_restore = true wrench.register_node("digistuff:piston", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, }) + wrench.register_node("digistuff:piston_ext", { - drop = not piston_extended_restore, + drop = true, before_pickup = function(pos, meta, node, player) - -- remove "digistuff:piston_pusher" + -- Remove piston head local def = minetest.registered_nodes[node.name] def.after_dig_node(pos, node) end, - after_place = piston_extended_restore and function(pos, player, stack, pointed) - local channel = minetest.get_meta(pos):get_string("channel") - local node = minetest.get_node(pos) - minetest.swap_node(pos, {name = "digistuff:piston", param2 = node.param2}) - node = minetest.get_node(pos) - local def = minetest.registered_nodes[node.name] - def.digiline.effector.action(pos, node, channel, { action = "extend" }) - end, metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, }, @@ -265,7 +227,7 @@ wrench.register_node("digistuff:piston_ext", { wrench.register_node("digistuff:timer", { timer = true, metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, loop = wrench.META_TYPE_INT, }, @@ -273,28 +235,27 @@ wrench.register_node("digistuff:timer", { -- Touchscreens -wrench.register_node("digistuff:advtouchscreen", { - metas = { - formspec = wrench.META_TYPE_STRING, - channel = wrench.META_TYPE_STRING, - init = wrench.META_TYPE_INT, - }, -}) wrench.register_node("digistuff:touchscreen", { metas = { formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, data = wrench.META_TYPE_STRING, init = wrench.META_TYPE_INT, + locked = wrench.META_TYPE_INT, + no_prepend = wrench.META_TYPE_INT, + real_coordinates = wrench.META_TYPE_INT, + fixed_size = wrench.META_TYPE_INT, + width = wrench.META_TYPE_STRING, + height = wrench.META_TYPE_STRING, }, }) -- Wall Knob +-- Unconfigured node cannot be picked up (digistuff:wall_knob) wrench.register_node("digistuff:wall_knob_configured", { drop = false, metas = { - formspec = wrench.META_TYPE_STRING, infotext = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, min = wrench.META_TYPE_INT, From 6e619ea7df76594f2253a621a6168e3430ee77de Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 18 Jan 2022 14:59:10 +0100 Subject: [PATCH 124/130] fix `digistuff:detector` channel = wrench.META_TYPE_STRING --- nodes/digistuff.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 8a2c4fc..5a7ef48 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -75,7 +75,7 @@ wrench.register_node("digistuff:controller_programmed", { wrench.register_node("digistuff:detector", { metas = { formspec = wrench.META_TYPE_IGNORE, - channel = wrench.META_TYPE_INT, + channel = wrench.META_TYPE_STRING, radius = wrench.META_TYPE_INT, }, }) From e470b46deed8acb5e0cc73ddb9acc0063dea2925 Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 18 Jan 2022 15:21:05 +0100 Subject: [PATCH 125/130] fix `digistuff:movestone` state & active = wrench.META_TYPE_IGNORE --- nodes/digistuff.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index 5a7ef48..e84b996 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -154,6 +154,8 @@ wrench.register_node("digistuff:movestone", { formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, owner = wrench.META_TYPE_STRING, + state = wrench.META_TYPE_IGNORE, + active = wrench.META_TYPE_IGNORE, }, }) From dc0773966f64548fc81e2d8505855bc000c89737 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Fri, 21 Jan 2022 20:47:58 +1100 Subject: [PATCH 126/130] Update digiscreen.lua --- nodes/digiscreen.lua | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/nodes/digiscreen.lua b/nodes/digiscreen.lua index eeb08d0..9e49229 100644 --- a/nodes/digiscreen.lua +++ b/nodes/digiscreen.lua @@ -1,20 +1,18 @@ -- Register wrench support for digiscreen +local update_screen +for _,lbm in pairs(minetest.registered_lbms) do + if lbm.name == "digiscreen:respawn" then + update_screen = lbm.action + end +end + wrench.register_node("digiscreen:digiscreen", { metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, channel = wrench.META_TYPE_STRING, data = wrench.META_TYPE_STRING, }, - after_place = function(pos, player, stack, pointed) - local meta = minetest.get_meta(pos) - local node = minetest.get_node(pos) - local def = minetest.registered_nodes[node.name] - local data = minetest.deserialize(meta:get_string("data")) - if data then - -- Force screen update - def.digiline.effector.action(pos, node, meta:get_string("channel"), data) - end - end, + after_place = update_screen, }) From 6806711083cba92ae371463e42c3aa7957515328 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 27 Jan 2022 21:29:03 +1100 Subject: [PATCH 127/130] whitespace and typo fixes in API.md --- API.md | 131 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 67 insertions(+), 64 deletions(-) diff --git a/API.md b/API.md index c01f8fe..0c8214c 100644 --- a/API.md +++ b/API.md @@ -1,85 +1,88 @@ # API + ## Node registration + Schematic: ```lua wrench.register_node(node.name, { - lists = list, - -- inventory list + lists = list, + -- inventory list - lists_ignore = lists_ignore, - -- ignored and not saved inventory list + lists_ignore = lists_ignore, + -- ignored and not saved inventory list - metas = table, - -- Table for node metadata: - -- name: Meta name - -- type: Data type: - -- `wrench.META_TYPE_IGNORE` ignored and not saved - -- `wrench.META_TYPE_FLOAT` for float - -- `wrench.META_TYPE_STRING` for string - -- `wrench.META_TYPE_INT` for integer + metas = table, + -- Table for node metadata: + -- name: Meta name + -- type: Data type: + -- `wrench.META_TYPE_IGNORE` ignored and not saved + -- `wrench.META_TYPE_FLOAT` for float + -- `wrench.META_TYPE_STRING` for string + -- `wrench.META_TYPE_INT` for integer - description = nil, - -- Default behaver: - -- when `lists` is not `nil` - -- `minetest.registered_nodes[node.name].description` + " with items" - -- when `lists` is `nil` and only `metas.channel` is defined - -- `minetest.registered_nodes[node.name].description` + " with cannel ''" - -- when `lists` is `nil` - -- `minetest.registered_nodes[node.name].description` + " with configuration" - description = `wrench.description_with_items`, - -- Description of the node + " with items" - description = `wrench.description_with_configuration`, - -- Description of the node + " with configuration" - description = `wrench.description_with_channel`, - -- Description of the node + " with channel " + channel - description = `wrench.description_with_text`, - -- Description of the node + " with text " + text - description = function(pos, meta, node, player), - -- Function returns description + description = nil, + -- Default behavior: + -- when `lists` is not `nil` + -- `minetest.registered_nodes[node.name].description` + " with items" + -- when `lists` is `nil` and only `metas.channel` is defined + -- `minetest.registered_nodes[node.name].description` + " with channel ''" + -- when `lists` is `nil` + -- `minetest.registered_nodes[node.name].description` + " with configuration" + description = `wrench.description_with_items`, + -- Description of the node + " with items" + description = `wrench.description_with_configuration`, + -- Description of the node + " with configuration" + description = `wrench.description_with_channel`, + -- Description of the node + " with channel " + channel + description = `wrench.description_with_text`, + -- Description of the node + " with text " + text + description = function(pos, meta, node, player), + -- Function returns description - drop = nil, - -- Default dropped item is the node itself - drop = true, - -- Use `minetest.registered_nodes[node.name].drop` - drop = "default:cobble", - -- Name of dropped item + drop = nil, + -- Default dropped item is the node itself + drop = true, + -- Use `minetest.registered_nodes[node.name].drop` + drop = "default:cobble", + -- Name of dropped item - owned = nil, - -- Default: anyone can pickup this node - owned = true, - -- Only `metas["owner"]` can pickup this node + owned = nil, + -- Default: anyone can pickup this node + owned = true, + -- Only `metas["owner"]` can pickup this node - timer = nil, - -- Default - timer = true, - -- Save NodeTimers + timer = nil, + -- Default + timer = true, + -- Save node timers - before_pickup = nil, - -- Default - before_pickup = function(pos, meta, node, player) - -- Function called before pickup node + before_pickup = nil, + -- Default + before_pickup = function(pos, meta, node, player) + -- Function called before pickup node - after_pickup = nil, - -- default - after_pickup = function(pos, node, meta_table, player) - -- Function called after pickup node + after_pickup = nil, + -- default + after_pickup = function(pos, node, meta_table, player) + -- Function called after pickup node - after_place = nil, - -- Default - after_place = function(pos, player, itemstack, pointed_thing), - -- Function called after place node + after_place = nil, + -- Default + after_place = function(pos, player, itemstack, pointed_thing), + -- Function called after place node }) ``` + Example: ```lua wrench.register_node("bones:bones", { - lists = {"main"}, - metas = { - owner = wrench.META_TYPE_STRING, - infotext = wrench.META_TYPE_STRING, - formspec = wrench.META_TYPE_STRING, - time = wrench.META_TYPE_INT, - }, - owned = true, + lists = {"main"}, + metas = { + owner = wrench.META_TYPE_STRING, + infotext = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_STRING, + time = wrench.META_TYPE_INT, + }, + owned = true, }) ``` From 85442cf041450225156c9fa0454ce3452a3e8193 Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 27 Jan 2022 21:54:48 +1100 Subject: [PATCH 128/130] copy formspec of digistuff detector and camera because of changes in https://github.com/mt-mods/digistuff/commit/a49e4dd --- nodes/digistuff.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/digistuff.lua b/nodes/digistuff.lua index e84b996..dfe1804 100644 --- a/nodes/digistuff.lua +++ b/nodes/digistuff.lua @@ -39,7 +39,7 @@ end wrench.register_node("digistuff:camera", { metas = { - formspec = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, radius = wrench.META_TYPE_INT, distance = wrench.META_TYPE_INT, @@ -74,7 +74,7 @@ wrench.register_node("digistuff:controller_programmed", { wrench.register_node("digistuff:detector", { metas = { - formspec = wrench.META_TYPE_IGNORE, + formspec = wrench.META_TYPE_STRING, channel = wrench.META_TYPE_STRING, radius = wrench.META_TYPE_INT, }, From 495d081da69e07196164fe0bf94f73559b17eeda Mon Sep 17 00:00:00 2001 From: OgelGames Date: Thu, 27 Jan 2022 22:02:23 +1100 Subject: [PATCH 129/130] Update mesecons_detector.lua --- nodes/mesecons_detector.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/nodes/mesecons_detector.lua b/nodes/mesecons_detector.lua index 46d809f..11cec21 100644 --- a/nodes/mesecons_detector.lua +++ b/nodes/mesecons_detector.lua @@ -1,12 +1,11 @@ -- Register wrench support for mesecons_detector -local states = { "off", "on" } -for _, state in ipairs(states) do +for _, state in pairs({"on", "off"}) do wrench.register_node("mesecons_detector:node_detector_"..state, { drop = state == "on", metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, distance = wrench.META_TYPE_STRING, digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, @@ -15,7 +14,7 @@ for _, state in ipairs(states) do wrench.register_node("mesecons_detector:object_detector_"..state, { drop = state == "on", metas = { - formspec = wrench.META_TYPE_STRING, + formspec = wrench.META_TYPE_IGNORE, digiline_channel = wrench.META_TYPE_STRING, scanname = wrench.META_TYPE_STRING, }, From ebd8cbb1806fb38f940aae0d8e1c0e30776bc19f Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Wed, 16 Feb 2022 21:44:54 +0100 Subject: [PATCH 130/130] fix crash when node has no inventory --- functions.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/functions.lua b/functions.lua index 0f2fa36..12ea354 100644 --- a/functions.lua +++ b/functions.lua @@ -9,6 +9,7 @@ local errors = { bad_item = function(item) return S("Cannot pickup node containing @1.", item) end, nested = S("Cannot pickup node. Nesting inventories is not allowed."), metadata = S("Cannot pickup node. Node contains too much metadata."), + no_list = S("Cannot pickup node. Node has no inventory."), missing = function(node, missing_lists, missing_metas) return S("Cannot pickup @1, unknown value(s) in lists: @2 metas: @3", node.name, @@ -147,6 +148,9 @@ function wrench.pickup_node(pos, player) end for _, listname in pairs(def.lists or {}) do local list = inv:get_list(listname) + if not list then + return false, errors.no_list + end for i, stack in pairs(list) do if wrench.blacklisted_items[stack:get_name()] then local desc = stack:get_definition().description