Skip to content

Commit c95cd84

Browse files
committedSep 16, 2014
Fix xpanes API
1 parent cc2573a commit c95cd84

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed
 

‎game_api.txt

+1-5
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ Xpanes API
120120
Creates panes that automatically connect to each other
121121

122122
xpanes.register_pane(subname, def)
123-
-> subname: used for nodename. Result: "xpanes:subname_{1..16}"
123+
-> subname: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}"
124124
-> def: See [#Pane definition]
125125

126126
#Pane definition
@@ -134,10 +134,6 @@ xpanes.register_pane(subname, def)
134134
^ See [#Default sounds]
135135
recipe = {{"","","","","","","","",""}},
136136
^ Recipe field only
137-
on_construct = function(pos)
138-
update_pane(pos, "pane")
139-
end,
140-
^ Required to handle rotation correctly
141137
}
142138

143139
Default sounds

‎mods/xpanes/init.lua

+18-11
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,18 @@ end
3737

3838
local function update_nearby(pos, node)
3939
node = node or minetest.get_node(pos)
40-
if node.name:sub(1, 7) ~= "xpanes:" then return end
41-
local underscore_pos = node.name:find("_") or 0
42-
local name = node.name:sub(8, underscore_pos - 1)
40+
local name = node.name
41+
if not name or node.name:sub(1, 7) ~= "xpanes:" then
42+
return
43+
end
44+
local underscore_pos = string.find(name, "_[^_]*$") or 0
45+
local len = name:len()
46+
local num = tonumber(name:sub(underscore_pos+1, len))
47+
if not num or num < 1 or num > 15 then
48+
name = name:sub(8)
49+
else
50+
name = name:sub(8, underscore_pos - 1)
51+
end
4352
for i, dir in pairs(directions) do
4453
update_pane({
4554
x = pos.x + dir.x,
@@ -105,7 +114,7 @@ function xpanes.register_pane(name, def)
105114
if cnt == 1 then
106115
texture = def.textures[1].."^"..def.textures[2]
107116
end
108-
minetest.register_node("xpanes:"..name.."_"..i, {
117+
minetest.register_node(":xpanes:"..name.."_"..i, {
109118
drawtype = "nodebox",
110119
tiles = {def.textures[3], def.textures[3], texture},
111120
paramtype = "light",
@@ -123,7 +132,11 @@ function xpanes.register_pane(name, def)
123132
})
124133
end
125134

126-
minetest.register_node("xpanes:"..name, def)
135+
def.on_construct = function(pos)
136+
update_pane(pos, name)
137+
end
138+
139+
minetest.register_node(":xpanes:"..name, def)
127140

128141
minetest.register_craft({
129142
output = "xpanes:"..name.." 16",
@@ -150,9 +163,6 @@ xpanes.register_pane("pane", {
150163
wield_image = "default_glass.png",
151164
sounds = default.node_sound_glass_defaults(),
152165
groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3, pane=1},
153-
on_construct = function(pos)
154-
update_pane(pos, "pane")
155-
end,
156166
recipe = {
157167
{'default:glass', 'default:glass', 'default:glass'},
158168
{'default:glass', 'default:glass', 'default:glass'}
@@ -175,9 +185,6 @@ xpanes.register_pane("bar", {
175185
wield_image = "xpanes_bar.png",
176186
groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3, pane=1},
177187
sounds = default.node_sound_stone_defaults(),
178-
on_construct = function(pos)
179-
update_pane(pos, "bar")
180-
end,
181188
recipe = {
182189
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
183190
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}

0 commit comments

Comments
 (0)
Please sign in to comment.