From 80b16a142a4cd6039f360749f4d4b8a2df9fc56d Mon Sep 17 00:00:00 2001 From: kilbith Date: Sun, 31 Jan 2016 00:00:23 +0100 Subject: [PATCH] Use unpack for nodebox defs & misc. tweaking --- nodes.lua | 8 ++++---- worktable.lua | 42 ++++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/nodes.lua b/nodes.lua index aa3cc4b..20619bf 100644 --- a/nodes.lua +++ b/nodes.lua @@ -427,10 +427,10 @@ xdecor.register("stonepath", { sounds = default.node_sound_stone_defaults(), sunlight_propagates = true, node_box = xdecor.pixelnodebox(16, { - {8, 0, 8, 6, 0.5, 6}, - {1, 0, 1, 6, 0.5, 6}, - {1, 0, 10, 5, 0.5, 5}, - {10, 0, 2, 4, 0.5, 4} + {8, 0, 8, 6, .5, 6}, + {1, 0, 1, 6, .5, 6}, + {1, 0, 10, 5, .5, 5}, + {10, 0, 2, 4, .5, 4} }), selection_box = xdecor.nodebox.slab_y(0.05) }) diff --git a/worktable.lua b/worktable.lua index e74bc1a..8aa13bb 100644 --- a/worktable.lua +++ b/worktable.lua @@ -3,12 +3,14 @@ screwdriver = screwdriver or {} -- Nodes allowed to be cut. -- Only the regular, solid blocks without formspec or explosivity can be cut. -function worktable.nodes(ndef) - return (ndef.drawtype == "normal" or ndef.drawtype:find("glass")) and not - ndef.on_construct and not ndef.after_place_node and not - ndef.after_place_node and not ndef.on_rightclick and not - ndef.on_blast and not ndef.allow_metadata_inventory_take and - ndef.light_source == 0 and not ndef.groups["crumbly"] +function worktable.nodes(def) + return (def.drawtype == "normal" or def.drawtype:find("glass")) 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["crumbly"] and not def.groups["not_in_creative_inventory"] and not + def.description:find("Ore") and def.light_source == 0 and + def.description end -- Nodeboxes definitions. @@ -381,35 +383,35 @@ xdecor.register("worktable", { for _, d in pairs(worktable.defs) do for node in pairs(minetest.registered_nodes) do - local ndef = minetest.registered_nodes[node] - if worktable.nodes(ndef) and d[3] then + local def = minetest.registered_nodes[node] + if worktable.nodes(def) and d[3] then local groups, tiles = {}, {} groups.not_in_creative_inventory = 1 - for k, v in pairs(ndef.groups) do + for k, v in pairs(def.groups) do if k ~= "wood" and k ~= "stone" and k ~= "level" then groups[k] = v end end - if #ndef.tiles > 1 and not ndef.drawtype:find("glass") then - tiles = ndef.tiles + if #def.tiles > 1 and not def.drawtype:find("glass") then + tiles = def.tiles else - tiles = {ndef.tiles[1]} + tiles = {def.tiles[1]} end stairs.register_stair_and_slab(node:match(":(.*)"), node, groups, tiles, - ndef.description.." Stair", ndef.description.." Slab", ndef.sounds) + def.description.." Stair", def.description.." Slab", def.sounds) minetest.register_node(":"..node.."_"..d[1], { - description = ndef.description.." "..d[1]:gsub("^%l", string.upper), + description = def.description.." "..d[1]:gsub("^%l", string.upper), paramtype = "light", paramtype2 = "facedir", drawtype = "nodebox", - sounds = ndef.sounds, + sounds = def.sounds, tiles = tiles, groups = groups, - node_box = xdecor.pixelnodebox(16, {d[3], d[4], d[5]}), + node_box = xdecor.pixelnodebox(16, {unpack(d, 3)}), sunlight_propagates = true, on_place = minetest.rotate_node, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) @@ -438,13 +440,13 @@ for node in pairs(minetest.registered_nodes) do } for _, x in pairs(T) do - if wield_item == ndef.name.."_"..x[1] then + if wield_item == def.name.."_"..x[1] then if not x[2] then x[2] = x[1] end if x[2] == pointed_nodebox then if not x[3] then - newnode = ndef.name + newnode = def.name else - newnode = ndef.name.."_"..worktable.defs[x[3]][1] + newnode = def.name.."_"..worktable.defs[x[3]][1] end end end @@ -471,7 +473,7 @@ for node in pairs(minetest.registered_nodes) do else minetest.register_alias("stairs:"..d[1].."_meselamp", "stairs:"..d[1].."_glass") end - elseif worktable.nodes(ndef) and not d[3] then + elseif worktable.nodes(def) and not d[3] then minetest.register_alias(node.."_"..d[1], "stairs:"..d[1].."_"..node:match(":(.*)")) end end