58 lines
1.1 KiB
Lua
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)
|