From 114cef1534ce9a180319f51cbe079df8f4d69de9 Mon Sep 17 00:00:00 2001
From: Jean-Patrick Guerrero <jeanpatrick.guerrero@gmail.com>
Date: Sat, 26 Mar 2016 13:52:47 +0100
Subject: [PATCH] Work Bench: attempt to fix unknown nodes

---
 workbench.lua | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/workbench.lua b/workbench.lua
index 2e564b1..2f0fbd0 100644
--- a/workbench.lua
+++ b/workbench.lua
@@ -3,15 +3,18 @@ screwdriver = screwdriver or {}
 
 -- Nodes allowed to be cut.
 -- Only the regular, solid blocks without formspec or explosivity can be cut.
-function workbench:nodes(def)
-	return (def.drawtype == "normal" or def.drawtype:find("glass")) and
-		(def.groups.cracky or def.groups.choppy) and not
-		def.on_construct and not def.after_place_node and not
-		def.after_place_node and not def.on_rightclick and not
-		def.on_blast and not def.allow_metadata_inventory_take and not
-		(def.groups.not_in_creative_inventory == 1) and not
-		def.groups.wool and not def.description:find("Ore") and
-		def.description and def.description ~= "" and def.light_source == 0
+local nodes = {}
+for node, def in pairs(minetest.registered_nodes) do
+	if (def.drawtype == "normal" or def.drawtype:find("glass")) and
+			(def.groups.cracky or def.groups.choppy) and not
+			def.on_construct and not def.after_place_node and not
+			def.after_place_node and not def.on_rightclick and not
+			def.on_blast and not def.allow_metadata_inventory_take and not
+			(def.groups.not_in_creative_inventory == 1) and not
+			def.groups.wool and not def.description:find("Ore") and
+			def.description and def.description ~= "" and def.light_source == 0 then
+		nodes[#nodes+1] = node
+	end
 end
 
 -- Nodeboxes definitions.
@@ -216,9 +219,11 @@ xdecor.register("workbench", {
 })
 
 for _, d in pairs(workbench.defs) do
-for node in pairs(minetest.registered_nodes) do
+for i=1, #nodes do
+	local node = nodes[i]
 	local def = minetest.registered_nodes[node]
-	if workbench:nodes(def) and d[3] then
+
+	if d[3] then
 		local groups, tiles = {}, {}
 		groups.not_in_creative_inventory = 1
 
-- 
GitLab