2019-11-12 09:37:39 -08:00
|
|
|
|
2021-05-08 08:14:09 -07:00
|
|
|
-- Add/join player to channel
|
2021-05-08 10:39:50 -07:00
|
|
|
beerchat.add_player_channel = function(name, channel, mode)
|
2021-05-08 08:14:09 -07:00
|
|
|
if not beerchat.playersChannels[name][channel] then
|
|
|
|
local meta = minetest.get_player_by_name(name):get_meta()
|
2021-05-08 10:39:50 -07:00
|
|
|
beerchat.playersChannels[name][channel] = mode or "joined"
|
2021-05-08 08:14:09 -07:00
|
|
|
meta:set_string("beerchat:channels", minetest.write_json(beerchat.playersChannels[name]))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Remove/part player from channel
|
|
|
|
beerchat.remove_player_channel = function(name, channel)
|
|
|
|
if beerchat.playersChannels[name][channel] then
|
|
|
|
local meta = minetest.get_player_by_name(name):get_meta()
|
|
|
|
beerchat.playersChannels[name][channel] = nil
|
|
|
|
meta:set_string("beerchat:channels", minetest.write_json(beerchat.playersChannels[name]))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Set active channel of player, join player to channel if not already joined
|
|
|
|
beerchat.set_player_channel = function(name, channel)
|
|
|
|
if beerchat.currentPlayerChannel[name] ~= channel then
|
|
|
|
beerchat.add_player_channel(name, channel)
|
|
|
|
local meta = minetest.get_player_by_name(name):get_meta()
|
|
|
|
beerchat.currentPlayerChannel[name] = channel
|
|
|
|
meta:set_string("beerchat:current_channel", channel)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-04-07 08:37:44 -07:00
|
|
|
beerchat.get_player_channel = function(name)
|
|
|
|
if type(name) == "string" then
|
|
|
|
local channel = beerchat.currentPlayerChannel[name]
|
|
|
|
if channel and beerchat.channels[channel] then
|
|
|
|
return channel
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
beerchat.fix_player_channel = function(name, notify)
|
|
|
|
if notify or notify == nil then
|
|
|
|
minetest.chat_send_player(
|
|
|
|
name,
|
|
|
|
"Channel "..beerchat.currentPlayerChannel[name].." does not exist, switching back to "..
|
|
|
|
beerchat.main_channel_name..". Please resend your message"
|
|
|
|
)
|
|
|
|
end
|
2021-05-08 08:14:09 -07:00
|
|
|
beerchat.set_player_channel(name, beerchat.main_channel_name)
|
2021-04-07 08:37:44 -07:00
|
|
|
end
|
|
|
|
|
2022-08-11 14:23:49 -07:00
|
|
|
beerchat.join_channel = function(name, channel, set_default)
|
|
|
|
if not beerchat.execute_callbacks('before_join', name, channel) then
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
(set_default and beerchat.set_player_channel or beerchat.add_player_channel)(name, channel)
|
|
|
|
if beerchat.enable_sounds then
|
|
|
|
minetest.sound_play("beerchat_chirp", { to_player = name, gain = beerchat.sounds_default_gain })
|
|
|
|
end
|
|
|
|
local msg = beerchat.format_message("|#${channel_name}| Joined channel", { channel_name = channel })
|
|
|
|
minetest.chat_send_player(name, msg)
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
2019-11-12 09:37:39 -08:00
|
|
|
beerchat.has_player_muted_player = function(name, other_name)
|
2020-02-11 15:05:16 -08:00
|
|
|
local cb_result = beerchat.execute_callbacks('before_check_muted', name, other_name)
|
|
|
|
if cb_result ~= nil then
|
|
|
|
return cb_result
|
2020-02-10 23:24:39 -08:00
|
|
|
end
|
2020-02-11 15:05:16 -08:00
|
|
|
|
2019-11-12 09:37:39 -08:00
|
|
|
local player = minetest.get_player_by_name(name)
|
|
|
|
-- check jic method is used incorrectly
|
2020-02-10 23:24:39 -08:00
|
|
|
if not player then
|
|
|
|
return true
|
|
|
|
end
|
2019-11-12 09:37:39 -08:00
|
|
|
|
|
|
|
local key = "beerchat:muted:" .. other_name
|
|
|
|
local meta = player:get_meta()
|
|
|
|
return "true" == meta:get_string(key)
|
2021-04-07 08:37:44 -07:00
|
|
|
end
|
2019-11-12 09:37:39 -08:00
|
|
|
|
|
|
|
beerchat.is_player_subscribed_to_channel = function(name, channel)
|
|
|
|
return (nil ~= beerchat.playersChannels[name])
|
|
|
|
and (nil ~= beerchat.playersChannels[name][channel])
|
2021-04-07 08:37:44 -07:00
|
|
|
end
|
2019-11-12 09:37:39 -08:00
|
|
|
|
|
|
|
beerchat.send_message = function(name, message, channel)
|
2020-02-11 15:05:16 -08:00
|
|
|
if not beerchat.execute_callbacks('before_send', name, message, channel) then
|
2020-02-10 23:24:39 -08:00
|
|
|
return
|
|
|
|
end
|
2020-02-11 15:05:16 -08:00
|
|
|
|
2019-11-12 09:37:39 -08:00
|
|
|
minetest.chat_send_player(name, message)
|
2021-05-05 04:30:24 -07:00
|
|
|
--[[ TODO: read player settings for channel sounds
|
2019-11-12 09:37:39 -08:00
|
|
|
if beerchat.enable_sounds and channel ~= beerchat.main_channel_name then
|
2021-04-09 03:36:49 -07:00
|
|
|
minetest.sound_play(
|
|
|
|
beerchat.channel_message_sound, {
|
|
|
|
to_player = name,
|
|
|
|
gain = beerchat.sounds_default_gain
|
|
|
|
},
|
|
|
|
true
|
|
|
|
)
|
2021-05-05 04:30:24 -07:00
|
|
|
end --]]
|
2021-04-07 08:37:44 -07:00
|
|
|
end
|