diff options
Diffstat (limited to 'vanish.py')
-rw-r--r-- | vanish.py | 53 |
1 files changed, 24 insertions, 29 deletions
@@ -13,7 +13,7 @@ def is_vanished(player): return uid(player) in vanished -#this can be used to silently set the vanished state of a player +#this can be used to silently set the vanished state of a player I guess. def set_state(player, state): if state == is_vanished(player): return @@ -37,6 +37,10 @@ def disable_vanish(target): player.showPlayer(target) +def get_online_vanished_players(): + return (player.getPlayer() for player in (retrieve_player(uuid) for uuid in vanished) if player.isOnline()) + + @simplecommand("vanish", aliases = ["v"], usage = "[on/off]", @@ -48,45 +52,38 @@ def disable_vanish(target): helpSubcmd = True ) def vanish_command(sender, command, label, args): - try: - current_state = is_vanished(sender) - new_state = not current_state + 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") + if len(args) == 1: + arg = args[0].lower() + if arg == "on": + new_state = True + elif arg == "off": + new_state = False - set_state(sender, new_state) - return "&a%s vanish mode!" % ("Enabled" if new_state else "Disabled") - except: - error(trace()) + Validate.isTrue(current_state != new_state, "&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") @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.") + for vanished in get_online_vanished_players(): + player.hidePlayer(vanished) @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)) + for vanished in get_online_vanished_players(): + player.showPlayer(vanished) + + elif is_vanished(player): + disable_vanish(player) @simplecommand("vanishother", @@ -110,9 +107,7 @@ def vanishother_command(sender, command, label, args): 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!" - + Validate.isTrue(current_state != new_state, "&cThat player was %s vanished!" % ("already" if current_state else "not yet")) set_state(target, new_state) enabled_str = "enabled" if new_state else "disabled" |