1 -- xPanes mod by xyz custom by davedevils
2 function pane(node
, desc
, dropitem
, recipeitem
, color
)
3 local function rshift(x
, by
)
4 return math
.floor(x
/ 2 ^ by
)
10 {x
= -1, y
= 0, z
= 0},
11 {x
= 0, y
= 0, z
= -1},
14 local function update_pane(pos
)
15 if minetest
.env
:get_node(pos
).name
:find("xpanes:pane_"..node
..""..color
) == nil then
20 local node
= minetest
.env
:get_node({x
= pos
.x
+ directions
[i
].x
, y
= pos
.y
+ directions
[i
].y
, z
= pos
.z
+ directions
[i
].z
})
21 if minetest
.registered_nodes
[node
.name
].walkable
~= false then
22 sum
= sum
+ 2 ^
(i
- 1)
28 minetest
.env
:add_node(pos
, {name
= "xpanes:pane_"..node
..""..color
.."_"..sum
})
31 local function update_nearby(pos
)
33 update_pane({x
= pos
.x
+ directions
[i
].x
, y
= pos
.y
+ directions
[i
].y
, z
= pos
.z
+ directions
[i
].z
})
38 {0, -0.5, -0.06, 0.5, 0.5, 0.06},
39 {-0.06, -0.5, 0, 0.06, 0.5, 0.5},
40 {-0.5, -0.5, -0.06, 0, 0.5, 0.06},
41 {-0.06, -0.5, -0.5, 0.06, 0.5, 0}
45 {-0.5, -0.5, -0.06, 0.5, 0.5, 0.06},
46 {-0.06, -0.5, -0.5, 0.06, 0.5, 0.5}
53 if rshift(i
, j
- 1) % 2 == 1 then
59 if need
[1] == true and need
[3] == true then
62 table.insert(take
, full_blocks
[1])
64 if need
[2] == true and need
[4] == true then
67 table.insert(take
, full_blocks
[2])
69 for k
in pairs(need
) do
70 table.insert(take
, half_blocks
[k
])
72 local texture
= "xpanes_pane_"..node
..""..color
..".png"
74 texture
= "xpanes_pane_half_"..node
..""..color
..".png"
76 minetest
.register_node("xpanes:pane_"..node
..""..color
.."_"..i
, {
78 tile_images
= {"xpanes_top_"..node
..""..color
..".png", "xpanes_top_"..node
..""..color
..".png", texture
},
80 use_texture_alpha
= true,
81 groups
= {snappy
=2,cracky
=3,oddly_breakable_by_hand
=3},
94 minetest
.register_node("xpanes:pane_"..node
..""..color
, {
96 tile_images
= {"xpanes_pane_"..node
..""..color
..".png"},
97 inventory_image
= "xpanes_pane_"..node
..""..color
..".png",
100 use_texture_alpha
= true,
101 wield_image
= "xpanes_pane_"..node
..""..color
..".png",
102 node_placement_prediction
= "",
103 on_construct
= update_pane
,
107 minetest
.register_on_placenode(update_nearby
)
108 minetest
.register_on_dignode(update_nearby
)
110 minetest
.register_craft({
111 output
= 'xpanes:pane_'..node
..''..color
..' 16',
113 {recipeitem
, recipeitem
, recipeitem
},
114 {recipeitem
, recipeitem
, recipeitem
}
119 pane("glass", "Glass Pane", "", "default:glass", "_natural")
120 pane("glass", "Glass Pane Red", "", "default:glass_red", "_red")
121 pane("glass", "Glass Pane Green", "", "default:glass_green", "_green")
122 pane("glass", "Glass Pane Blue", "", "default:glass_blue", "_blue")
123 pane("glass", "Glass Pane Light Blue", "", "default:glass_light_blue", "_light_blue")
124 pane("glass", "Glass Pane Black", "", "default:glass_black", "_black")
125 pane("glass", "Glass Pane White", "", "default:glass_white", "_white")
126 pane("glass", "Glass Pane Yellow", "", "default:glass_yellow", "_yellow")
127 pane("glass", "Glass Pane Brown", "", "default:glass_brown", "_brown")
128 pane("glass", "Glass Pane Orange", "", "default:glass_orange", "_orange")
129 pane("glass", "Glass Pane Pink", "", "default:glass_pink", "_pink")
130 pane("glass", "Glass Pane Gray", "", "default:glass_gray", "_gray")
131 pane("glass", "Glass Pane Lime", "", "default:glass_lime", "_lime")
132 pane("glass", "Glass Pane Silver", "", "default:glass_silver", "_silver")
133 pane("glass", "Glass Pane Magenta", "", "default:glass_magenta", "_magenta")
134 pane("glass", "Glass Pane Purple", "", "default:glass_purple", "_purple")
138 pane("iron", "Iron Fence", "xpanes:pane_iron", "default:steel_ingot", "")