0172cf2feb
This reverts commit 522a7a99a1
.
122 lines
3.4 KiB
Python
122 lines
3.4 KiB
Python
from helpers import *
|
|
from basecommands import simplecommand
|
|
from basecommands import Validate
|
|
|
|
vanished = []
|
|
|
|
|
|
def is_authorized(player):
|
|
return player.hasPermission("utils.vanish")
|
|
|
|
|
|
def is_vanished(player):
|
|
return uid(player) in vanished
|
|
|
|
|
|
#this can be used to silently set the vanished state of a player
|
|
def set_state(player, state):
|
|
if state == is_vanished(player):
|
|
return
|
|
|
|
if state:
|
|
enable_vanish(player)
|
|
else:
|
|
disable_vanish(player)
|
|
|
|
|
|
def enable_vanish(target):
|
|
vanished.append(uid(target))
|
|
for player in list(server.getOnlinePlayers()):
|
|
if not is_authorized(player):
|
|
player.hidePlayer(target)
|
|
|
|
|
|
def disable_vanish(target):
|
|
vanished.remove(uid(target))
|
|
for player in list(server.getOnlinePlayers()):
|
|
player.showPlayer(target)
|
|
|
|
|
|
@simplecommand("vanish",
|
|
aliases = ["v"],
|
|
usage = "[on/off]",
|
|
description = "Toggles vanish mode, hiding you and your online status \nfrom other players.",
|
|
senderLimit = 0,
|
|
amin = 0,
|
|
amax = 1,
|
|
helpNoargs = False,
|
|
helpSubcmd = True
|
|
)
|
|
def vanish_command(sender, command, label, args):
|
|
try:
|
|
current_state = is_vanished(sender)
|
|
new_state = not current_state
|
|
|
|
if len(args) == 1:
|
|
arg = args[0].lower()
|
|
if arg == "on":
|
|
new_state = True
|
|
elif arg == "off":
|
|
new_state = False
|
|
|
|
if current_state == new_state:
|
|
return "&cYou were %s vanished!" % ("already" if current_state else "not yet")
|
|
|
|
set_state(sender, new_state)
|
|
return "&a%s vanish mode!" % ("Enabled" if new_state else "Disabled")
|
|
except:
|
|
error(trace())
|
|
|
|
|
|
@hook.event("player.PlayerJoinEvent")
|
|
def on_player_join(event):
|
|
player = event.getPlayer()
|
|
|
|
if not is_authorized(player):
|
|
for uuid in vanished:
|
|
player.hidePlayer(retrieve_player(uuid))
|
|
|
|
elif is_vanished(player):
|
|
msg(player, "&cKeep in mind that you are still vanished! Use /vanish to disable.")
|
|
|
|
|
|
@hook.event("player.PlayerQuitEvent")
|
|
def on_player_quit(event):
|
|
player = event.getPlayer()
|
|
|
|
if not is_authorized(player):
|
|
for uuid in vanished:
|
|
player.showPlayer(retrieve_player(uuid))
|
|
|
|
|
|
@simplecommand("vanishother",
|
|
usage = "{player} [on/off]",
|
|
description = "Toggles vanish mode for someone, hiding them and their online status from other players.",
|
|
amin = 1,
|
|
amax = 2,
|
|
helpNoargs = True,
|
|
helpSubcmd = True)
|
|
def vanishother_command(sender, command, label, args):
|
|
target = server.getPlayer(args[0])
|
|
Validate.notNone(target, "&cThe specified player is not online")
|
|
|
|
current_state = is_vanished(target)
|
|
new_state = not current_state
|
|
|
|
if len(args) == 2:
|
|
arg = args[1].lower()
|
|
if arg == "on":
|
|
new_state = True
|
|
elif arg == "off":
|
|
new_state = False
|
|
|
|
if current_state == new_state:
|
|
return "&cThat player was already vanished!" if current_state else "&cThat player was not yet vanished!"
|
|
|
|
set_state(target, new_state)
|
|
|
|
enabled_str = "enabled" if new_state else "disabled"
|
|
if target != sender:
|
|
msg(target, "&aVanish mode %s by %s" % (enabled_str, sender.getDisplayName() if is_player(sender) else "&9CONSOLE"))
|
|
return "&aVanish mode %s%s" % (enabled_str, " for " + target.getDisplayName() if target != sender else "")
|