/* * Copyright © 2015, Leon Mangler and the SuperVanish contributors * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package de.myzelyam.supervanish.commands.subcommands; import de.myzelyam.supervanish.SuperVanish; import de.myzelyam.supervanish.commands.CommandAction; import de.myzelyam.supervanish.commands.SubCommand; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.UUID; public class VanishOther extends SubCommand { private Player specifiedPlayer; public VanishOther(SuperVanish plugin) { this(null, plugin); } public VanishOther(Player specifiedPlayer, SuperVanish plugin) { super(plugin); this.specifiedPlayer = specifiedPlayer; } @Override public void execute(Command cmd, CommandSender sender, String[] args, String label) { if (canDo(sender, CommandAction.VANISH_OTHER, true)) { boolean hide = false, offline = false, silent = false; Player target; String name; UUID uuid; if (specifiedPlayer == null) { if (args[0].equalsIgnoreCase("on") || args[0].equalsIgnoreCase("enable") || args[0].equalsIgnoreCase("vanish")) hide = true; target = Bukkit.getPlayer(args[1]); name = target == null ? args[1] : target.getName(); } else { target = specifiedPlayer; name = specifiedPlayer.getName(); hide = !isVanished(target.getUniqueId()); } if (target == null) { offline = true; uuid = plugin.getVanishStateMgr().getVanishedUUIDFromNameOnFile(name); if (uuid == null) { plugin.sendMessage(sender, "PlayerNonExistent", sender, name); return; } } else { name = target.getName(); uuid = target.getUniqueId(); } if (!offline && sender instanceof Player && sender != target && target.hasPermission("sv.notoggle")) { plugin.sendMessage(sender, "CannotHideOtherPlayer", sender, name); return; } if (plugin.getSettings().getBoolean( "IndicationFeatures.LayeredPermissions.HideInvisibleInCommands", false) && target != null && sender instanceof Player && !plugin.hasPermissionToSee((Player) sender, target)) { plugin.sendMessage(sender, "PlayerNonExistent", sender, name); return; } if (hide && (offline ? isVanished(uuid) : isVanished(uuid))) { plugin.sendMessage(sender, "AlreadyInvisibleMessage", sender, name); return; } else if (!hide && !(offline ? isVanished(uuid) : isVanished(uuid))) { plugin.sendMessage(sender, "AlreadyVisibleMessage", sender, name); return; } if (args.length == 3) silent = args[2].equalsIgnoreCase("-s"); else if (args.length == 2) silent = args[1].equalsIgnoreCase("-s"); if (!offline) { if (hide) { plugin.getVisibilityChanger().hidePlayer(target, sender.getName(), silent); plugin.sendMessage(sender, "HideOtherMessage", sender, name); } else { plugin.getVisibilityChanger().showPlayer(target, sender.getName()); plugin.sendMessage(sender, "ShowOtherMessage", sender, name, silent); } } else { if (hide) { plugin.getVanishStateMgr().setVanishedState(uuid, name, true, sender.getName()); plugin.sendMessage(sender, "HideOtherMessage", sender, name); } else { plugin.getVanishStateMgr().setVanishedState(uuid, name, false, sender.getName()); plugin.sendMessage(sender, "ShowOtherMessage", sender, name); } } } } }