mods that hopefully work for a TechAge-based pack
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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
|
||||
Reference in New Issue
Block a user