From 1f85f001f9f888a071980c6929aa096193e05383 Mon Sep 17 00:00:00 2001 From: Rui914 Date: Tue, 1 Sep 2015 01:35:59 +0900 Subject: [PATCH] Remove ugly def of xpanes --- mods/xpanes/init.lua | 62 ++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 84221d65..ebd1566f 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -17,11 +17,7 @@ local function update_pane(pos, name) end local sum = 0 for i, dir in pairs(directions) do - local node = minetest.get_node({ - x = pos.x + dir.x, - y = pos.y + dir.y, - z = pos.z + dir.z - }) + local node = minetest.get_node(vector.add(pos, dir)) local def = minetest.registered_nodes[node.name] local pane_num = def and def.groups.pane or 0 if pane_num > 0 or not def or (def.walkable ~= false and @@ -50,14 +46,13 @@ local function update_nearby(pos, node) name = name:sub(8, underscore_pos - 1) end for i, dir in pairs(directions) do - update_pane({ - x = pos.x + dir.x, - y = pos.y + dir.y, - z = pos.z + dir.z - }, name) + update_pane(vector.add(pos, dir), name) end end +minetest.register_on_placenode(update_nearby) +minetest.register_on_dignode(update_nearby) + local half_boxes = { {0, -0.5, -1/32, 0.5, 0.5, 1/32}, {-1/32, -0.5, 0, 1/32, 0.5, 0.5}, @@ -82,6 +77,18 @@ local sb_full_boxes = { {-0.06, -0.5, -0.5, 0.06, 0.5, 0.5} } +local pane_def_fields = { + drawtype = "airlike", + paramtype = "light", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + air_equivalent = true, +} + function xpanes.register_pane(name, def) for i = 1, 15 do local need = {} @@ -132,6 +139,10 @@ function xpanes.register_pane(name, def) }) end + for k, v in pairs(pane_def_fields) do + def[k] = def[k] or v + end + def.on_construct = function(pos) update_pane(pos, name) end @@ -144,52 +155,29 @@ function xpanes.register_pane(name, def) }) end -minetest.register_on_placenode(update_nearby) -minetest.register_on_dignode(update_nearby) - xpanes.register_pane("pane", { description = "Glass Pane", - tiles = {"xpanes_space.png"}, - drawtype = "airlike", - paramtype = "light", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - air_equivalent = true, textures = {"default_glass.png","xpanes_pane_half.png","xpanes_white.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", sounds = default.node_sound_glass_defaults(), groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3, pane=1}, recipe = { - {'default:glass', 'default:glass', 'default:glass'}, - {'default:glass', 'default:glass', 'default:glass'} + {"default:glass", "default:glass", "default:glass"}, + {"default:glass", "default:glass", "default:glass"} } }) xpanes.register_pane("bar", { description = "Iron bar", - tiles = {"xpanes_space.png"}, - drawtype = "airlike", - paramtype = "light", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - air_equivalent = true, textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_space.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3, pane=1}, sounds = default.node_sound_stone_defaults(), recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'} + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} } })