itb-ranking/mod/init.lua
2019-01-18 16:41:04 -08:00

58 lines
1.1 KiB
Lua

ranks = {}
ranks.player = {}
ranks.boxes = {}
ranks.builder = {}
ranks.categories = {}
local wp = minetest.get_worldpath()
local fetch_file = function(filename, old, verify_ranks)
local f = io.open(filename, "r")
if not f then
minetest.log("error", "failed to open " .. filename)
return old
end
local fr = f:read("*all")
f:close()
local pl = minetest.parse_json(fr)
if not pl then
minetest.log("error", "failed to parse " .. filename)
return old
end
if not verify_ranks then
return pl
end
local tbl = {}
for i = 1, 10 do
if pl[tostring(i)] then
tbl[i] = pl[tostring(i)]
else
minetest.log("error", filename .. " missing rank #" .. i)
return old
end
end
return tbl
end
ranks.fetch = function()
ranks.player = fetch_file(wp .. "/top_players.json", ranks.player, true)
ranks.box = fetch_file(wp .. "/top_boxes.json", ranks.box, true)
ranks.builder = fetch_file(wp .. "/top_builders.json", ranks.builder, true)
ranks.categories = fetch_file(wp .. "/category_series.json", ranks.categories, false)
minetest.after(300, ranks.fetch)
end
minetest.after(0, ranks.fetch)