From 378a841b7dfd7f219ccdaa74e570539408a136a2 Mon Sep 17 00:00:00 2001 From: crabman77 Date: Fri, 2 Dec 2016 23:09:14 +0100 Subject: [PATCH] add chatcommand to update IRC server ingame without update minetest.conf and reboot --- irc/chatcmds.lua | 16 ++++++++++++++++ irc/config.lua | 30 ++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/irc/chatcmds.lua b/irc/chatcmds.lua index ce7aab7..7a56264 100644 --- a/irc/chatcmds.lua +++ b/irc/chatcmds.lua @@ -124,3 +124,19 @@ minetest.chatcommands["me"].func = function(name, param, ...) irc:say(("* %s %s"):format(name, param)) end +minetest.register_chatcommand("irc_change_server", { + params = "", + description = "Change the IRC server.", + privs = {irc_admin=true}, + func = function(name, param) + if param == "" then + minetest.chat_send_player(name, "Missing argument servername") + return + end + irc.config.server = param + irc.save_config() + minetest.chat_send_player(name, "New server IRC is \"".. param.."\".") + minetest.chat_send_player(name, "type \"/irc_reconnect\" to reconnect IRC.") + end +}) + diff --git a/irc/config.lua b/irc/config.lua index 8dfd381..d5806d5 100644 --- a/irc/config.lua +++ b/irc/config.lua @@ -57,3 +57,33 @@ if not irc.config.nick then ) end + +local config_file = minetest.get_worldpath() .. "/irc.txt" + +function irc.save_config() + local input, err = io.open(config_file, "w") + if input then + local conf = {server = irc.config.server} + input:write(minetest.serialize(conf)) + input:close() + else + minetest.log("error", "open(" .. config_file .. ", 'w') failed: " .. err) + end +end + +function irc.load_config() + local file = io.open(config_file, "r") + local settings = {} + if file then + settings = minetest.deserialize(file:read("*all")) + file:close() + if settings and type(settings) == "table" then + if settings["server"] ~= nil then + irc.config.server = settings["server"] + end + end + end +end + +irc.load_config() +