/ bjvxlx_util / init.lua
init.lua
1 bjvxlx = {} 2 3 local per_mod = {} 4 5 --[[ bjvxlx.util.register_mod(name) 6 Creates a table under bjvxlx[`name`], 7 populates it with appropriate values for modname, modpath, and translate, 8 and defines per-mod utility functions on the table. 9 Returns the table created. ]] 10 local function register_mod(name) 11 bjvxlx[name] = {} 12 13 --[[ bjvxlx.*.modname 14 Name of the mod as understood by Minetest. ]] 15 bjvxlx[name].modname = minetest.get_current_modname() 16 17 --[[ bjvxlx.*.modpath 18 Install directory of the mod. ]] 19 bjvxlx[name].modpath = minetest.get_modpath(bjvxlx[name].modname) 20 21 --[[ bjvxlx.*.translate 22 Translator which Minetest provides for the mod. ]] 23 bjvxlx[name].translate = minetest.get_translator(bjvxlx[name].modname) 24 25 --[[ bjvxlx.*.global_storage 26 Minetest-allocated mod storage object for this mod. ]] 27 bjvxlx[name].storage = minetest.get_mod_storage() 28 29 --[[ bjvxlx.*.dofile(path) 30 Invokes builtin dofile, but relative to mod's modpath. ]] 31 bjvxlx[name].dofile = function (path) 32 return dofile(("%s/%s"):format(bjvxlx[name].modpath, path)) 33 end 34 35 for k, f in pairs(per_mod) do 36 bjvxlx[name][k] = f(bjvxlx) 37 end 38 39 return bjvxlx[name] 40 end 41 42 local util = register_mod('util') 43 util.per_mod = per_mod 44 util.register_mod = register_mod 45 46 --[[ bjvxlx.util.reregister_all_mods 47 Calls `bjvxlx.util.register_mod` again on every registered bjvxlx mod. 48 Intended use is to propagate changes to the behavior of `register_mod`, 49 such as when `bjvxlx.util.per_mod` changes. ]] 50 function util.reregister_all_mods() 51 local mods = {} 52 for name, mod in pairs(bjvxlx) do 53 mods[name] = mod 54 end 55 for name, mod in pairs(mods) do 56 util.register_mod(name) 57 for k, v in pairs(mod) do 58 bjvxlx[name][k] = bjvxlx[name][k] or v 59 end 60 end 61 end 62 63 util.dofile("general.lua") 64 util.dofile("functional.lua") 65 util.dofile("load_localization.lua") 66 util.dofile("storage_proxy.lua") 67 util.dofile("sandbox.lua") 68 util.dofile("oop.lua")