tidy code
This commit is contained in:
parent
c348c4be5d
commit
e52fd6483f
109
init.lua
109
init.lua
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user