tidy code

This commit is contained in:
tenplus1 2024-08-08 14:17:01 +01:00
parent c348c4be5d
commit e52fd6483f
2 changed files with 47 additions and 72 deletions

109
init.lua
View File

@ -2,23 +2,10 @@
invisibility = {}
local effect_time = 180 -- 3 minutes
-- translation support
local S
if minetest.get_translator then
S = minetest.get_translator("invisibility") -- 5.x translation function
else -- boilerplate function
S = function(str, ...)
local args = {...}
return str:gsub("@%d+", function(match)
return args[tonumber(match:sub(2))]
end)
end
end
local S = minetest.get_translator("invisibility") -- translation support
-- reset player invisibility if they go offline
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
@ -28,15 +15,45 @@ minetest.register_on_leaveplayer(function(player)
end
end)
-- creative check
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
local function is_creative(name)
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
end
-- invisibility function
local function invisible(player, toggle)
if not player then return false end
local name = player:get_player_name()
invisibility[name] = toggle
local prop
if toggle == true then -- hide player and name tag
prop = {visual_size = {x = 0, y = 0}}
player:set_nametag_attributes({
color = {a = 0, r = 255, g = 255, b = 255}
})
else -- show player and tag
prop = {visual_size = {x = 1, y = 1}}
player:set_nametag_attributes({
color = {a = 255, r = 255, g = 255, b = 255}
})
end
player:set_properties(prop)
end
-- invisibility potion
minetest.register_node("invisibility:potion", {
description = S("Invisibility Potion"),
drawtype = "plantlike",
@ -66,7 +83,6 @@ minetest.register_node("invisibility:potion", {
return itemstack
end
-- make player invisible
invisible(user, true)
@ -77,8 +93,7 @@ minetest.register_node("invisibility:potion", {
-- display 10 second warning
minetest.after(effect_time - 10, function()
if invisibility[name]
and user:get_pos() then
if invisibility[name] and user:get_pos() then
minetest.chat_send_player(name,
S(">>> You have 10 seconds before invisibility wears off!"))
@ -88,10 +103,9 @@ minetest.register_node("invisibility:potion", {
-- make player visible 5 minutes later
minetest.after(effect_time, function()
if invisibility[name]
and user:get_pos() then
if invisibility[name] and user:get_pos() then
-- show aready hidden player
-- show hidden player
invisible(user, nil)
-- play sound
@ -128,58 +142,20 @@ minetest.register_node("invisibility:potion", {
end
})
-- craft recipe
minetest.register_craft( {
output = "invisibility:potion",
type = "shapeless",
recipe = {
"default:sapling", "default:junglesapling",
"default:pine_sapling", "default:acacia_sapling",
"default:aspen_sapling", "default:bush_sapling",
"default:acacia_bush_sapling",
"vessels:glass_bottle", "flowers:mushroom_red",
"default:sapling", "default:junglesapling", "default:pine_sapling",
"default:acacia_sapling", "default:aspen_sapling", "default:bush_sapling",
"default:acacia_bush_sapling", "vessels:glass_bottle", "flowers:mushroom_red"
}
})
-- invisibility function
invisible = function(player, toggle)
if not player then return false end
local name = player:get_player_name()
invisibility[name] = toggle
local prop
if toggle == true then
-- hide player and name tag
prop = {
visual_size = {x = 0, y = 0}
}
player:set_nametag_attributes({
color = {a = 0, r = 255, g = 255, b = 255}
})
else
-- show player and tag
prop = {
visual_size = {x = 1, y = 1}
}
player:set_nametag_attributes({
color = {a = 255, r = 255, g = 255, b = 255}
})
end
player:set_properties(prop)
end
-- vanish command (admin only)
minetest.register_chatcommand("vanish", {
params = "<name>",
description = "Make player invisible",
@ -188,8 +164,7 @@ minetest.register_chatcommand("vanish", {
func = function(name, param)
-- player online
if param ~= ""
and minetest.get_player_by_name(param) then
if param ~= "" and minetest.get_player_by_name(param) then
name = param

View File

@ -1,4 +1,4 @@
name = invisibility
depends = default, vessels, flowers
optional_depends =
description = Craft a potion to make yourself invisible.
depends = default
min_minetest_version = 5.0