tidy code
This commit is contained in:
parent
c348c4be5d
commit
e52fd6483f
109
init.lua
109
init.lua
@ -2,23 +2,10 @@
|
|||||||
invisibility = {}
|
invisibility = {}
|
||||||
|
|
||||||
local effect_time = 180 -- 3 minutes
|
local effect_time = 180 -- 3 minutes
|
||||||
|
local S = minetest.get_translator("invisibility") -- translation support
|
||||||
|
|
||||||
-- 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
|
|
||||||
|
|
||||||
|
|
||||||
-- reset player invisibility if they go offline
|
-- reset player invisibility if they go offline
|
||||||
|
|
||||||
minetest.register_on_leaveplayer(function(player)
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
@ -28,15 +15,45 @@ minetest.register_on_leaveplayer(function(player)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
-- creative check
|
-- creative check
|
||||||
|
|
||||||
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
|
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
|
||||||
local function is_creative(name)
|
local function is_creative(name)
|
||||||
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
|
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
|
||||||
end
|
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
|
-- invisibility potion
|
||||||
|
|
||||||
minetest.register_node("invisibility:potion", {
|
minetest.register_node("invisibility:potion", {
|
||||||
description = S("Invisibility Potion"),
|
description = S("Invisibility Potion"),
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
@ -66,7 +83,6 @@ minetest.register_node("invisibility:potion", {
|
|||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- make player invisible
|
-- make player invisible
|
||||||
invisible(user, true)
|
invisible(user, true)
|
||||||
|
|
||||||
@ -77,8 +93,7 @@ minetest.register_node("invisibility:potion", {
|
|||||||
-- display 10 second warning
|
-- display 10 second warning
|
||||||
minetest.after(effect_time - 10, function()
|
minetest.after(effect_time - 10, function()
|
||||||
|
|
||||||
if invisibility[name]
|
if invisibility[name] and user:get_pos() then
|
||||||
and user:get_pos() then
|
|
||||||
|
|
||||||
minetest.chat_send_player(name,
|
minetest.chat_send_player(name,
|
||||||
S(">>> You have 10 seconds before invisibility wears off!"))
|
S(">>> You have 10 seconds before invisibility wears off!"))
|
||||||
@ -88,10 +103,9 @@ minetest.register_node("invisibility:potion", {
|
|||||||
-- make player visible 5 minutes later
|
-- make player visible 5 minutes later
|
||||||
minetest.after(effect_time, function()
|
minetest.after(effect_time, function()
|
||||||
|
|
||||||
if invisibility[name]
|
if invisibility[name] and user:get_pos() then
|
||||||
and user:get_pos() then
|
|
||||||
|
|
||||||
-- show aready hidden player
|
-- show hidden player
|
||||||
invisible(user, nil)
|
invisible(user, nil)
|
||||||
|
|
||||||
-- play sound
|
-- play sound
|
||||||
@ -128,58 +142,20 @@ minetest.register_node("invisibility:potion", {
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- craft recipe
|
-- craft recipe
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
output = "invisibility:potion",
|
output = "invisibility:potion",
|
||||||
type = "shapeless",
|
type = "shapeless",
|
||||||
recipe = {
|
recipe = {
|
||||||
"default:sapling", "default:junglesapling",
|
"default:sapling", "default:junglesapling", "default:pine_sapling",
|
||||||
"default:pine_sapling", "default:acacia_sapling",
|
"default:acacia_sapling", "default:aspen_sapling", "default:bush_sapling",
|
||||||
"default:aspen_sapling", "default:bush_sapling",
|
"default:acacia_bush_sapling", "vessels:glass_bottle", "flowers:mushroom_red"
|
||||||
"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)
|
-- vanish command (admin only)
|
||||||
|
|
||||||
minetest.register_chatcommand("vanish", {
|
minetest.register_chatcommand("vanish", {
|
||||||
params = "<name>",
|
params = "<name>",
|
||||||
description = "Make player invisible",
|
description = "Make player invisible",
|
||||||
@ -188,8 +164,7 @@ minetest.register_chatcommand("vanish", {
|
|||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
|
|
||||||
-- player online
|
-- player online
|
||||||
if param ~= ""
|
if param ~= "" and minetest.get_player_by_name(param) then
|
||||||
and minetest.get_player_by_name(param) then
|
|
||||||
|
|
||||||
name = param
|
name = param
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user