API: fix custom recipe registration
This commit is contained in:
parent
16a1865e11
commit
c7f6e1db62
2
init.lua
2
init.lua
|
@ -257,4 +257,4 @@ end
|
||||||
--i3.files.tests.tabs()
|
--i3.files.tests.tabs()
|
||||||
--i3.files.tests.operators()
|
--i3.files.tests.operators()
|
||||||
--i3.files.tests.compression()
|
--i3.files.tests.compression()
|
||||||
--i3.files.tests.custom_recipes(http)
|
--i3.files.tests.custom_recipes()
|
||||||
|
|
25
src/api.lua
25
src/api.lua
|
@ -1,5 +1,5 @@
|
||||||
local make_fs = i3.files.gui()
|
|
||||||
local http = ...
|
local http = ...
|
||||||
|
local make_fs = i3.files.gui()
|
||||||
|
|
||||||
IMPORT("gmatch", "split")
|
IMPORT("gmatch", "split")
|
||||||
IMPORT("S", "err", "fmt", "reg_items")
|
IMPORT("S", "err", "fmt", "reg_items")
|
||||||
|
@ -22,7 +22,7 @@ end
|
||||||
function i3.register_craft(def)
|
function i3.register_craft(def)
|
||||||
local width, c = 0, 0
|
local width, c = 0, 0
|
||||||
|
|
||||||
if true_str(def.url) then
|
if http and true_str(def.url) then
|
||||||
http.fetch({url = def.url}, function(result)
|
http.fetch({url = def.url}, function(result)
|
||||||
if result.succeeded then
|
if result.succeeded then
|
||||||
local t = core.parse_json(result.data)
|
local t = core.parse_json(result.data)
|
||||||
|
@ -51,7 +51,7 @@ function i3.register_craft(def)
|
||||||
def.result = nil
|
def.result = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if not true_str(def.output) then
|
if not true_str(def.output) and not def.url then
|
||||||
return err "i3.register_craft: output missing"
|
return err "i3.register_craft: output missing"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -69,9 +69,7 @@ function i3.register_craft(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
local cp = copy(def.grid)
|
local cp = copy(def.grid)
|
||||||
sort(cp, function(a, b)
|
sort(cp, function(a, b) return #a > #b end)
|
||||||
return #a > #b
|
|
||||||
end)
|
|
||||||
|
|
||||||
width = #cp[1]
|
width = #cp[1]
|
||||||
|
|
||||||
|
@ -86,7 +84,8 @@ function i3.register_craft(def)
|
||||||
def.items[c] = def.key[symbol]
|
def.items[c] = def.key[symbol]
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local items, len = def.items, #def.items
|
local items = copy(def.items)
|
||||||
|
local len = #items
|
||||||
def.items = {}
|
def.items = {}
|
||||||
|
|
||||||
for i = 1, len do
|
for i = 1, len do
|
||||||
|
@ -98,14 +97,18 @@ function i3.register_craft(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 1, len do
|
for i = 1, len do
|
||||||
while #split(items[i], ",") < width do
|
while #split(items[i], ",", true) < width do
|
||||||
items[i] = fmt("%s,", items[i])
|
items[i] = fmt("%s,", items[i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for name in gmatch(concat(items, ","), "[%s%w_:]+") do
|
for _, line in ipairs(items) do
|
||||||
c++
|
line = split(line, ",", true)
|
||||||
def.items[c] = clean_name(name)
|
|
||||||
|
for _, v in ipairs(line) do
|
||||||
|
c++
|
||||||
|
def.items[c] = clean_name(v)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,24 @@ i3.register_craft({
|
||||||
items = {"default:copper_ingot 7, default:tin_ingot, default:steel_ingot 2"},
|
items = {"default:copper_ingot 7, default:tin_ingot, default:steel_ingot 2"},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
i3.register_craft {
|
||||||
|
result = "default:tree",
|
||||||
|
items = {
|
||||||
|
"default:wood",
|
||||||
|
"",
|
||||||
|
"default:wood"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
i3.register_craft {
|
||||||
|
result = "default:cobble 16",
|
||||||
|
items = {
|
||||||
|
"default:stone, default:stone",
|
||||||
|
"default:stone, , default:stone",
|
||||||
|
", default:stone, default:stone",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
i3.register_craft({
|
i3.register_craft({
|
||||||
grid = {
|
grid = {
|
||||||
"X",
|
"X",
|
||||||
|
@ -311,22 +329,3 @@ i3.register_craft({
|
||||||
},
|
},
|
||||||
result = "default:mese 3",
|
result = "default:mese 3",
|
||||||
})
|
})
|
||||||
|
|
||||||
i3.register_craft({
|
|
||||||
grid = {
|
|
||||||
"X #",
|
|
||||||
" ## ",
|
|
||||||
"X#X#",
|
|
||||||
"#X#X#",
|
|
||||||
"X X##X#X",
|
|
||||||
" ## ",
|
|
||||||
"#X#X#",
|
|
||||||
"#X#X#",
|
|
||||||
"X #",
|
|
||||||
},
|
|
||||||
key = {
|
|
||||||
['#'] = "default:wood",
|
|
||||||
['X'] = "default:glass",
|
|
||||||
},
|
|
||||||
result = "default:mese 3",
|
|
||||||
})
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue