From 3df8f5b8bf5f58e10682509522e5ba17b7e98daf Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 28 Feb 2021 11:32:46 +0100 Subject: [PATCH] Fix DB system crashes and implement custom directory support --- mods/elidragon_db/init.lua | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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() -- 2.44.0