123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- local S = minetest.get_translator("travelnet")
- local mod_data_path = minetest.get_worldpath() .. "/mod_travelnet.data"
- local storage = minetest.get_mod_storage()
- -- migrate file-based storage to mod-storage
- local function migrate_file_storage()
- local file = io.open(mod_data_path, "r")
- if not file then
- return
- end
- -- load from file
- local data = file:read("*all")
- local old_targets
- if data:sub(1, 1) == "{" then
- minetest.log("info", S("[travelnet] migrating from json-file to mod-storage"))
- old_targets = minetest.parse_json(data)
- else
- minetest.log("info", S("[travelnet] migrating from serialize-file to mod-storage"))
- old_targets = minetest.deserialize(data)
- end
- for playername, player_targets in pairs(old_targets) do
- storage:set_string(playername, minetest.write_json(player_targets))
- end
- -- rename old file
- os.rename(mod_data_path, mod_data_path .. ".bak")
- end
- -- migrate old data as soon as possible
- migrate_file_storage()
- -- returns the player's travelnets
- function travelnet.get_travelnets(playername)
- local json = storage:get_string(playername)
- if not json or json == "" or json == "null" then
- -- default to empty object
- travelnet.log("action", "get_travelnets: player '" .. playername .. "' doesn't have an entry, creating one")
- json = "{}"
- end
- return minetest.parse_json(json)
- end
- -- saves the player's modified travelnets
- function travelnet.set_travelnets(playername, travelnets)
- travelnet.log("action", "set_travelnets: persisting travelnets for player '" .. playername .. "'")
- storage:set_string(playername, minetest.write_json(travelnets))
- end
|