move deaf mode to an interceptor

This commit is contained in:
Tai @ Flex 2017-03-03 15:50:29 +00:00
parent c026ee0e9d
commit 8e9b9f5a7e
2 changed files with 31 additions and 23 deletions

26
api.lua
View File

@ -33,9 +33,6 @@ local interceptors = {} -- name --> function(playername, message, playerlist)
-- Keep track of what mode players are in
local playermodes = {} -- playername => modestring
-- Keep track of players who have deafened themselves
local deafplayers = {}
-- If the user activates chat_modes but does not properly configure it, just activate "shout"
local defaultmode = minetest.setting_get("chat_modes.mode") or "shout"
@ -56,15 +53,13 @@ function chat_modes.register_interceptor(name, handler)
interceptors[name] = handler
end
-- Send a player chat, unless the player has set themselves ass deaf
-- Send a player chat
function chat_modes.chatsend(player, message)
if type(player) ~= "string" then
player = player:get_player_name()
end
if not deafplayers[player] then
minetest.chat_send_player(player, message)
end
minetest.chat_send_player(player, message)
end
-- ================================
@ -109,24 +104,10 @@ end
-- General chat utilities
dodebug("Define extra commands")
minetest.register_chatcommand("deaf", {
description = "Toggle deaf status. If you are deaf (Deaf mode 'on'), you do not receive any chat messages.",
privs = {shout = true},
func = function(playername, args)
if deafplayers[playername] then
deafplayers[playername] = nil
minetest.chat_send_player(playername, "Deaf mode OFF")
else
deafplayers[playername] = true
minetest.chat_send_player(playername, "Deaf mode ON")
end
end,
})
-- Send message to all, named after the UNIX command of the same name
minetest.register_chatcommand("wall", {
params = "<compulsory message>",
description = "Send a message to all players, regardless of chat mode or deaf status - for moderators.",
description = "Send a message to all players, regardless of chat mode or interceptors - for moderators.",
privs = {shout = true, basic_privs = true},
func = function(playername, message)
minetest.chat_send_all("MODERATOR "..playername..": "..message)
@ -177,7 +158,6 @@ minetest.register_chatcommand("chatmodes", {
minetest.chat_send_player(playername, modename.." : "..helptext )
end
minetest.chat_send_player(playername, "deaf : stop receiving any chats from players")
end,
})

28
deaf_interceptor.lua Normal file
View File

@ -0,0 +1,28 @@
-- Keep track of players who have deafened themselves
local deafplayers = {}
minetest.register_chatcommand("deaf", {
description = "Toggle deaf status. If you are deaf (Deaf mode 'on'), you do not receive any chat messages.",
privs = {shout = true},
func = function(playername, args)
if deafplayers[playername] then
deafplayers[playername] = nil
minetest.chat_send_player(playername, "Deaf mode OFF")
else
deafplayers[playername] = true
minetest.chat_send_player(playername, "Deaf mode ON")
end
end,
})
chat_modes.register_interceptor("deaf mode", function(sender, message, targets)
local newtargets = {}
for _,player in pairs(targets) do
if not deafplayers[player:get_player_name()] then
newtargets[#newtargets+1] = player
end
end
return newtargets
end)