From: Elias Fleckenstein Date: Sun, 28 Feb 2021 10:32:46 +0000 (+0100) Subject: Fix DB system crashes and implement custom directory support X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=3df8f5b8bf5f58e10682509522e5ba17b7e98daf;p=elidragon_v2.git Fix DB system crashes and implement custom directory support --- diff --git a/mods/elidragon_db/init.lua b/mods/elidragon_db/init.lua index f4f03e8..c432921 100644 --- a/mods/elidragon_db/init.lua +++ b/mods/elidragon_db/init.lua @@ -2,16 +2,17 @@ local class = elidragon.class local db = {} -local paths = {} +local private = {} local worldpath = minetest.get_worldpath() -function db:constructor(name, initial_data, dir) - paths[self] = dir or worldpath .. "/" .. name .. ".json" +function db:constructor(name, initial_data, dir, env) + private[self] = {env = env or _G, path = (dir or worldpath) .. "/" .. name .. ".json"} self:load(initial_data or {}) end function db:load(initial_data) - local file = io.open(paths[self], "r") + local _self = private[self] + local file = _self.env.io.open(_self.path, "r") local data = file and minetest.parse_json(file:read()) or {} if file then file:close() @@ -27,14 +28,15 @@ function db:load(initial_data) end function db:save() - local file = assert(io.open(paths[self], "w")) + local _self = private[self] + local file = assert(_self.env.io.open(_self.path, "w")) file:write(minetest.write_json(self)) file:close() end function db:close() self:save() - paths[self] = nil + private[self] = nil end minetest.register_on_shutdown(function()