Milan 2021-09-03 22:47:28 +02:00
commit b1dfdbaec8
12 changed files with 52 additions and 20 deletions

11
.github/workflows/check-release.yml vendored Normal file
View 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

View File

@ -2,7 +2,7 @@
allow_defined_top = true
read_globals = {
"minetest",
"minetest"
}
exclude_files = {

View File

@ -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
====================

View File

@ -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
})

View File

@ -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)

View File

@ -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

View File

@ -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.

View File

@ -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))

View File

@ -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

View File

@ -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

View File

@ -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.
"""

View File

@ -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