diff --git a/Readme.md b/Readme.md index c04f47d..88183d0 100644 --- a/Readme.md +++ b/Readme.md @@ -1,34 +1,11 @@ # modlib -Lightweight Minetest Modding Library + +Multipurpose Minetest Modding Library ## About -No dependencies. Compatibility is checked automatically. -Licensed under the MIT License. Written by Lars Mueller aka LMD or appguru(eu). + +No dependencies. Licensed under the MIT License. Written by Lars Mueller aka LMD or appguru(eu). ## API -### Some more stuff -The things listed below are just a few, and as the library grows, I am not mentioning them all here, but I hope the function names are self-explaining. If not, feel free to contact me or create an issue / PR on GitHub. -### `table_ext` -Table Helpers. Self-explaining - merge tables, count tables, add items to tables, etc. -### `number_ext` -Number Helpers. Also self-explaining. Currently only rounding. -### `log` -Several logchannels which can be written to. Look at sourcecode. -### `conf` -Configuration files as .json - world specific. Constraint checks can be done. -Use `load_or_create(confname, replacement_file, constraints)` to load the conf, if it does not exist create it using replacement file, and then load it, checking the constraints. -##### Constraints -Are a table. -``` -{ - type="boolean"/"number"/"string"/"table", - If type = table : - keys = constraints_for_keys, - values = constraints_for_values - children = {child_key:constraints_for_value}, - If type = number or string : - range={start=num, end=num}, - func=function(value) returns error or nil, - possible_values = {v1, v2} -} -``` + +Mostly self-documenting code. Mod namespace is `modlib` or `_ml`, containing all variables & functions. \ No newline at end of file diff --git a/log.lua b/log.lua index dbab743..62e34c2 100644 --- a/log.lua +++ b/log.lua @@ -1,24 +1,24 @@ -- Log helpers - write to log, force writing to file -minetest.mkdir(minetest.get_worldpath().."/logs") -channels={} -last_day=os.date("%d") +minetest.mkdir(minetest.get_worldpath() .. "/logs") +channels = {} +last_day = os.date("%d") function get_path(logname) - return minetest.get_worldpath().."/logs/"..logname + return minetest.get_worldpath() .. "/logs/" .. logname end function create_channel(title) - local dir=get_path(title) + local dir = get_path(title) minetest.mkdir(dir) - channels[title]={dirname=dir,queue={}} + channels[title] = {dirname = dir, queue = {}} write(title, "Initialisation") end function write(channelname, msg) - local channel=channels[channelname] - local current_day=os.date("%d") + local channel = channels[channelname] + local current_day = os.date("%d") if current_day ~= last_day then - last_day=current_day + last_day = current_day write_to_file(channelname, channel, os.date("%Y-%m-%d")) end - table.insert(channel.queue, os.date("[%H:%M:%S] ")..msg) + table.insert(channel.queue, os.date("[%H:%M:%S] ") .. msg) end function write_to_all(msg) for channelname, _ in pairs(channels) do @@ -27,40 +27,46 @@ function write_to_all(msg) end function write_to_file(name, channel, current_date) if not channel then - channel=channels[name] + channel = channels[name] end if #(channel.queue) > 0 then - local filename=channel.dirname.."/"..(current_date or os.date("%Y-%m-%d"))..".txt" - local rope={} + local filename = channel.dirname .. "/" .. (current_date or os.date("%Y-%m-%d")) .. ".txt" + local rope = {} for _, msg in ipairs(channel.queue) do table.insert(rope, msg) end - modlib.file.append(filename, table.concat(rope, "\n").."\n") - channels[name].queue={} + modlib.file.append(filename, table.concat(rope, "\n") .. "\n") + channels[name].queue = {} end end function write_all_to_file() - local current_date=os.date("%Y-%m-%d") + local current_date = os.date("%Y-%m-%d") for name, channel in pairs(channels) do write_to_file(name, channel, current_date) end end -local timer=0 +local timer = 0 -minetest.register_globalstep(function(dtime) - timer=timer+dtime - if timer > 5 then - write_all_to_file() - timer=0 +minetest.register_globalstep( + function(dtime) + timer = timer + dtime + if timer > 5 then + write_all_to_file() + timer = 0 + end end -end) +) -minetest.register_on_mods_loaded(function() - write_to_all("Mods loaded") -end) +minetest.register_on_mods_loaded( + function() + write_to_all("Mods loaded") + end +) -minetest.register_on_shutdown(function() - write_to_all("Shutdown") - write_all_to_file() -end) +minetest.register_on_shutdown( + function() + write_to_all("Shutdown") + write_all_to_file() + end +) diff --git a/mod.conf b/mod.conf index 32bafb9..9878aae 100644 --- a/mod.conf +++ b/mod.conf @@ -1,2 +1,2 @@ name=modlib -description=A lightweight modding library. +description=Multipurpose Minetest Modding Library diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..38c62a2 Binary files /dev/null and b/screenshot.png differ