Remove ugly def of xpanes
authorRui914 <mrrst0914@gmail.com>
Mon, 31 Aug 2015 16:35:59 +0000 (01:35 +0900)
committerparamat <mat.gregory@virginmedia.com>
Tue, 29 Sep 2015 00:26:02 +0000 (01:26 +0100)
mods/xpanes/init.lua

index 84221d65042639e00593e5f384126408e83b8c74..ebd1566f93f5acea6dc59200ec5eb732c4aa1f60 100644 (file)
@@ -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"}
        }
 })