--[[ JSON storage information: "": { "recipes": [], "abilities": [], "protect": [], "research": , } ]] -- Memory cache magicalities.data = {} function magicalities.load_player_data(player_name) local world = minetest.get_worldpath() local directory = world.."/magicalities" minetest.mkdir(directory) local filetag = player_name..".info.json" local file = io.open(directory.."/"..filetag) if not file then magicalities.data[player_name] = { recipes = {}, abilities = {}, protect = {}, research = 0, } return end local str = "" for line in file:lines() do str = str..line end file:close() magicalities.data[player_name] = minetest.deserialize(str) end function magicalities.save_player_data(player_name) if not magicalities.data[player_name] then return nil end local world = minetest.get_worldpath() local directory = world.."/magicalities" minetest.mkdir(directory) local filetag = player_name..".info.json" local data = minetest.serialize(magicalities.data[player_name]) minetest.safe_file_write(directory.."/"..filetag, data) end function magicalities.save_all_data() for pname in pairs(magicalities.data) do minetest.after(0.1, magicalities.save_player_data, pname) end end minetest.register_on_shutdown(magicalities.save_all_data)