2017-07-27 19:29:05 -07:00
|
|
|
--[[ MIT LICENSE HEADER
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-07-27 19:29:05 -07:00
|
|
|
Copyright © 2017 Jordan Irwin (AntumDeluge)
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-07-27 19:29:05 -07:00
|
|
|
See: LICENSE.txt
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
2017-07-28 02:20:04 -07:00
|
|
|
--- *hidename* mod API
|
2017-08-04 16:25:32 -07:00
|
|
|
--
|
|
|
|
-- @script api.lua
|
2017-07-28 02:20:04 -07:00
|
|
|
|
|
|
|
|
2021-05-17 20:23:04 -07:00
|
|
|
local S = core.get_translator(hidename.modname)
|
2017-07-27 19:29:05 -07:00
|
|
|
|
|
|
|
|
|
|
|
--- Checks if player's nametag is hidden.
|
|
|
|
--
|
2017-07-27 20:45:30 -07:00
|
|
|
-- Compares alpha level of player's nametag against 0 (0 being transparent).
|
|
|
|
--
|
2017-07-27 19:29:05 -07:00
|
|
|
-- TODO: Check for empty string instead of alpha value
|
|
|
|
--
|
2017-08-04 18:03:56 -07:00
|
|
|
-- @tparam table nametag_data Nametag data retrieved by *player:get_nametag_attributes()*.
|
2017-08-04 17:05:54 -07:00
|
|
|
-- @treturn bool ***true*** if player's nametag is hidden
|
2017-08-04 18:03:56 -07:00
|
|
|
function hidename.hidden(nametag_data)
|
2017-08-04 18:32:35 -07:00
|
|
|
if hidename.use_alpha then
|
|
|
|
return nametag_data.color.a == 0
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2021-05-17 20:28:45 -07:00
|
|
|
return nametag_data.text == "" or nametag_data.text == nil
|
2017-07-27 19:29:05 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
|
2017-07-27 20:45:30 -07:00
|
|
|
--- Messages info to player about nametag text & visibility.
|
2017-07-27 20:27:33 -07:00
|
|
|
--
|
2017-08-04 17:05:54 -07:00
|
|
|
-- @tparam string name Name of player to check & message
|
2017-07-27 20:27:33 -07:00
|
|
|
function hidename.tellStatus(name)
|
|
|
|
local player = core.get_player_by_name(name)
|
|
|
|
local nametag = player:get_nametag_attributes()
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2021-05-17 20:28:45 -07:00
|
|
|
local status = "Status: "
|
2017-08-04 18:03:56 -07:00
|
|
|
if hidename.hidden(nametag) then
|
2021-05-17 20:28:45 -07:00
|
|
|
status = status .. "hidden"
|
2017-07-27 20:27:33 -07:00
|
|
|
else
|
2021-05-17 20:28:45 -07:00
|
|
|
status = status .. "visible"
|
2017-07-27 20:27:33 -07:00
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
-- Use name parameter value if nametag.text is empty
|
2021-05-17 20:28:45 -07:00
|
|
|
if nametag.text == "" or nametag.text == nil then
|
2017-07-27 20:27:33 -07:00
|
|
|
nametag.text = name
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("Nametag:") .. " " .. nametag.text)
|
2017-07-27 20:27:33 -07:00
|
|
|
core.chat_send_player(name, S(status))
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2017-07-27 19:29:05 -07:00
|
|
|
--- Hides a player's nametag.
|
|
|
|
--
|
2017-08-04 17:05:54 -07:00
|
|
|
-- @tparam string name Name of player whose nametag should be made hidden
|
|
|
|
-- @treturn bool ***true*** if player's nametag is hidden
|
2017-07-27 19:29:05 -07:00
|
|
|
function hidename.hide(name)
|
|
|
|
local player = core.get_player_by_name(name)
|
2017-08-04 18:03:56 -07:00
|
|
|
local nametag = player:get_nametag_attributes()
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:03:56 -07:00
|
|
|
if hidename.hidden(nametag) then
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("Nametag is already hidden"))
|
2017-07-27 19:29:05 -07:00
|
|
|
return true
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
if hidename.use_alpha then
|
2017-08-04 18:32:55 -07:00
|
|
|
-- Preserve nametag alpha level
|
2021-05-17 20:28:45 -07:00
|
|
|
player:set_attribute("nametag_stored_alpha", nametag.color.a)
|
2017-08-04 18:32:35 -07:00
|
|
|
nametag.color.a = 0
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
-- Set nametag alpha level to 0
|
|
|
|
player:set_nametag_attributes({
|
|
|
|
color = nametag.color,
|
|
|
|
})
|
|
|
|
else
|
|
|
|
-- Remove text from nametag
|
2021-05-17 20:33:40 -07:00
|
|
|
-- FIXME: doesn't work
|
2017-08-04 19:53:44 -07:00
|
|
|
player:set_nametag_attributes({
|
2021-05-17 20:28:45 -07:00
|
|
|
text = "",
|
2017-08-04 18:32:35 -07:00
|
|
|
})
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
if hidename.hidden(player:get_nametag_attributes()) then
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("Nametag is now hidden"))
|
2017-07-27 19:29:05 -07:00
|
|
|
else
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("ERROR: Could not hide nametag"))
|
|
|
|
core.log("error", "Could not set nametag to \"hidden\" for player " .. name)
|
|
|
|
core.log("error", "Please submit an error report to the \"hidename\" mod developer")
|
2017-07-27 19:29:05 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
--- Makes a player's nametag visible.
|
|
|
|
--
|
2017-08-04 17:05:54 -07:00
|
|
|
-- @tparam string name Name of player whose nametag should be made visible
|
|
|
|
-- @treturn bool ***true*** if player's nametag is visible
|
2017-07-27 19:29:05 -07:00
|
|
|
function hidename.show(name)
|
|
|
|
local player = core.get_player_by_name(name)
|
2017-08-04 18:03:56 -07:00
|
|
|
local nametag = player:get_nametag_attributes()
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:03:56 -07:00
|
|
|
if not hidename.hidden(nametag) then
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("Nametag is already visible"))
|
2017-07-27 19:29:05 -07:00
|
|
|
return true
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
if hidename.use_alpha then
|
|
|
|
-- Restore nametag alpha level
|
2021-05-17 20:28:45 -07:00
|
|
|
local stored_alpha = player:get_attribute("nametag_stored_alpha")
|
2017-08-04 18:32:55 -07:00
|
|
|
if stored_alpha ~= nil then
|
|
|
|
nametag.color.a = stored_alpha
|
|
|
|
-- Reset player attribute
|
2021-05-17 20:28:45 -07:00
|
|
|
player:set_attribute("nametag_stored_alpha", nil)
|
2017-08-04 18:32:55 -07:00
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
player:set_nametag_attributes({
|
|
|
|
color = nametag.color,
|
|
|
|
})
|
|
|
|
else
|
|
|
|
-- Restore nametag text
|
|
|
|
player:set_nametag_attributes({
|
|
|
|
text = name,
|
|
|
|
})
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 18:32:35 -07:00
|
|
|
if not hidename.hidden(player:get_nametag_attributes()) then
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("Nametag is now visible"))
|
2017-07-27 19:29:05 -07:00
|
|
|
else
|
2021-05-17 20:28:45 -07:00
|
|
|
core.chat_send_player(name, S("ERROR: Could not show nametag"))
|
|
|
|
core.log("error", "Could not set nametag to \"visible\" for player " .. name)
|
|
|
|
core.log("error", "Please submit an error report to the \"hidename\" mod developer")
|
2017-07-27 19:29:05 -07:00
|
|
|
end
|
|
|
|
end
|
2017-08-04 19:50:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
-- Ensure that nametag text attribute is not empty when player logs on
|
|
|
|
if not hidename.use_alpha then
|
|
|
|
-- Sets the player's nametag text attribute to player name.
|
|
|
|
local function setNametagText(player)
|
|
|
|
local nametag = player:get_nametag_attributes()
|
2021-05-17 20:28:45 -07:00
|
|
|
if nametag.text == "" or nametag.text == nil then
|
2017-08-04 19:50:58 -07:00
|
|
|
player:set_nametag_attributes({
|
|
|
|
text = player:get_player_name(),
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
2021-04-19 04:55:53 -07:00
|
|
|
|
2017-08-04 19:50:58 -07:00
|
|
|
core.register_on_joinplayer(setNametagText)
|
|
|
|
end
|