Merge https://github.com/minetest-mods/irc into HEAD
This commit is contained in:
commit
b1dfdbaec8
11
.github/workflows/check-release.yml
vendored
Normal file
11
.github/workflows/check-release.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
on: [push, pull_request]
|
||||
name: Check & Release
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: lint
|
||||
uses: Roang-zero1/factorio-mod-luacheck@master
|
||||
with:
|
||||
luacheckrc_url: https://raw.githubusercontent.com/minetest-mods/irc/master/.luacheckrc
|
@ -2,7 +2,7 @@
|
||||
allow_defined_top = true
|
||||
|
||||
read_globals = {
|
||||
"minetest",
|
||||
"minetest"
|
||||
}
|
||||
|
||||
exclude_files = {
|
||||
|
@ -1,3 +1,4 @@
|
||||
[![](https://github.com/minetest-mods/irc/workflows/Check%20&%20Release/badge.svg)](https://github.com/minetest-mods/irc/actions)
|
||||
|
||||
IRC Mod for Minetest
|
||||
====================
|
||||
|
@ -51,7 +51,8 @@ function irc.bot_command(msg, text)
|
||||
return
|
||||
end
|
||||
minetest.chat_send_player(player_to,
|
||||
"PM from "..msg.user.nick.."@IRC: "..message, false)
|
||||
minetest.colorize(irc.config.pm_color,
|
||||
"PM from "..msg.user.nick.."@IRC: "..message, false))
|
||||
irc.reply("Message sent!")
|
||||
return
|
||||
end
|
||||
@ -138,7 +139,7 @@ irc.register_bot_command("whereis", {
|
||||
return false, "There is no player named '"..args.."'"
|
||||
end
|
||||
local fmt = "Player %s is at (%.2f,%.2f,%.2f)"
|
||||
local pos = player:getpos()
|
||||
local pos = player:get_pos()
|
||||
return true, fmt:format(args, pos.x, pos.y, pos.z)
|
||||
end
|
||||
})
|
||||
|
@ -31,7 +31,7 @@ minetest.register_on_chat_message(function(name, message)
|
||||
if nl then
|
||||
message = message:sub(1, nl - 1)
|
||||
end
|
||||
irc.say(irc.playerMessage(name, core.strip_colors(message)))
|
||||
irc.say(irc.playerMessage(name, minetest.strip_colors(message)))
|
||||
end)
|
||||
|
||||
|
||||
|
17
config.lua
17
config.lua
@ -6,12 +6,14 @@ irc.config = {}
|
||||
|
||||
local function setting(stype, name, default, required)
|
||||
local value
|
||||
if stype == "bool" then
|
||||
value = minetest.setting_getbool("irc."..name)
|
||||
elseif stype == "string" then
|
||||
value = minetest.setting_get("irc."..name)
|
||||
elseif stype == "number" then
|
||||
value = tonumber(minetest.setting_get("irc."..name))
|
||||
if minetest.settings and minetest.settings.get and minetest.settings.get_bool then
|
||||
if stype == "bool" then
|
||||
value = minetest.settings:get_bool("irc."..name)
|
||||
elseif stype == "string" then
|
||||
value = minetest.settings:get("irc."..name)
|
||||
elseif stype == "number" then
|
||||
value = tonumber(minetest.settings:get("irc."..name))
|
||||
end
|
||||
end
|
||||
if value == nil then
|
||||
if required then
|
||||
@ -53,4 +55,5 @@ setting("bool", "debug", false) -- Enable debug output
|
||||
setting("bool", "enable_player_part", true) -- Whether to enable players joining and parting the channel
|
||||
setting("bool", "auto_join", true) -- Whether to automatically show players in the channel when they join
|
||||
setting("bool", "auto_connect", true) -- Whether to automatically connect to the server on mod load
|
||||
|
||||
setting("string", "chat_color", "#339933") -- Color of IRC chat in-game, green by default
|
||||
setting("string", "pm_color", "#8800AA") -- Color of IRC PMs in-game, purple by default
|
||||
|
@ -1,4 +0,0 @@
|
||||
This mod is just a glue between IRC and Minetest.
|
||||
|
||||
It provides two-way communication between the
|
||||
in-game chat, and an arbitrary IRC channel.
|
@ -122,6 +122,8 @@ function irc.hooks.channelChat(msg)
|
||||
text:find("^%*%*%* ([^%s]+) joined the game$")
|
||||
local foundleave, _, leavenick =
|
||||
text:find("^%*%*%* ([^%s]+) left the game$")
|
||||
local foundtimedout, _, timedoutnick =
|
||||
text:find("^%*%*%* ([^%s]+) left the game %(Timed out%)$")
|
||||
local foundaction, _, actionnick, actionmessage =
|
||||
text:find("^%* ([^%s]+) (.*)$")
|
||||
|
||||
@ -136,6 +138,9 @@ function irc.hooks.channelChat(msg)
|
||||
elseif foundleave then
|
||||
irc.sendLocal((core.colorize("#c44e4e", "⬅ ")..core.colorize(failure, " %s")..core.colorize(important," just left %s... ."))
|
||||
:format(leavenick, msg.user.nick))
|
||||
elseif foundtimedout then
|
||||
irc.sendLocal(("*** %s left %s (Timed out)")
|
||||
:format(timedoutnick, msg.user.nick))
|
||||
elseif foundaction then
|
||||
irc.sendLocal(("* %s"..core.colorize("#A3B5CB","@%s").." %s")
|
||||
:format(actionnick, msg.user.nick, actionmessage))
|
||||
|
12
init.lua
12
init.lua
@ -23,11 +23,18 @@ ie.package.path =
|
||||
-- /usr/local/share and /usr/local/lib but LuaSocket is often installed under
|
||||
-- /usr/share and /usr/lib.
|
||||
if not rawget(_G, "jit") and package.config:sub(1, 1) == "/" then
|
||||
|
||||
ie.package.path = ie.package.path..
|
||||
";/usr/share/lua/5.1/?.lua"..
|
||||
";/usr/share/lua/5.1/?/init.lua"
|
||||
|
||||
ie.package.cpath = ie.package.cpath..
|
||||
";/usr/lib/lua/5.1/?.so"
|
||||
";/usr/lib/lua/5.1/?.so"..
|
||||
";/usr/lib64/lua/5.1/?.so"
|
||||
|
||||
ie.package.cpath = "/usr/lib/x86_64-linux-gnu/lua/5.1/?.so;"..ie.package.cpath
|
||||
|
||||
|
||||
end
|
||||
|
||||
-- Temporarily set require so that LuaIRC can access it
|
||||
@ -104,7 +111,8 @@ end
|
||||
|
||||
minetest.register_privilege("irc_admin", {
|
||||
description = "Allow IRC administrative tasks to be performed.",
|
||||
give_to_singleplayer = true
|
||||
give_to_singleplayer = true,
|
||||
give_to_admin = true,
|
||||
})
|
||||
|
||||
local stepnum = 0
|
||||
|
@ -8,7 +8,7 @@ function irc.logChat(message)
|
||||
end
|
||||
|
||||
function irc.sendLocal(message)
|
||||
minetest.chat_send_all(message)
|
||||
minetest.chat_send_all(minetest.colorize(irc.config.chat_color, message))
|
||||
irc.logChat(message)
|
||||
end
|
||||
|
||||
|
4
mod.conf
4
mod.conf
@ -1 +1,5 @@
|
||||
name = irc
|
||||
description = """
|
||||
This mod is just a glue between IRC and Minetest.
|
||||
It provides two-way communication between the in-game chat, and an arbitrary IRC channel.
|
||||
"""
|
||||
|
@ -13,6 +13,8 @@ end
|
||||
function irc.player_join(name)
|
||||
if irc.joined_players[name] then
|
||||
return false, "You are already in the channel"
|
||||
elseif not minetest.get_player_by_name(name) then
|
||||
return false, "You need to be in-game to join the channel"
|
||||
end
|
||||
irc.joined_players[name] = true
|
||||
return true, "You joined the channel"
|
||||
@ -45,7 +47,7 @@ minetest.register_chatcommand("who", {
|
||||
out[n] = plname
|
||||
end
|
||||
table.sort(out)
|
||||
return true, "Players in channel: "..table.concat(out, ", ")
|
||||
return true, n.." player(s) in channel: "..table.concat(out, ", ")
|
||||
end
|
||||
})
|
||||
|
||||
@ -63,7 +65,8 @@ end)
|
||||
|
||||
function irc.sendLocal(message)
|
||||
for name, _ in pairs(irc.joined_players) do
|
||||
minetest.chat_send_player(name, message)
|
||||
minetest.chat_send_player(name,
|
||||
minetest.colorize(irc.config.chat_color, message))
|
||||
end
|
||||
irc.logChat(message)
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user