    public void execute() throws CommandException{
        if (args.size() == 0 && !isPlayer){
            throw new CommandException("&cプレイヤー名を指定してください！");
        }
        final Player target = (args.size() > 0) ? Bukkit.getPlayer(args.get(0)) : player;
        if (target == null || !target.isOnline()){
            throw new CommandException("&cプレイヤーが見つかりません！");
        }
        final SakuraPlayer sp = PlayerManager.getPlayer(target);
        InvisibleWorker worker = InvisibleWorker.getInstance();
        if (worker.isInvisible(target)){
            worker.reappear(target);
            String msg = _("joinMessage", I18n.PLAYER, sp.getName(true));
            if (msg != null && !msg.isEmpty()) {
                if (SCHelper.getInstance().getConfig().getUseGeoIP() && !Perms.HIDE_GEOIP.has(player)){
                    String geoStr = GeoIP.getInstance().getGeoIpString(player, SCHelper.getInstance().getConfig().getUseSimpleFormatOnJoin());
                    msg = msg + Util.coloring("&7") + " (" + geoStr + ")";
                }
                Util.broadcastMessage(msg);
            }
            if (!sender.equals(target)){
                Util.message(sender, "&a" + sp.getName() + " &aの透明モードを解除しました");
            }
            Util.message(target, "&aあなたの透明モードは解除されました");
            SakuraCmdUtil.sendlog(sender, sp.getName() + "&a が透明モードを解除しました");
        }else{
            worker.vanish(target, false);
            String msg = _("quitMessage", I18n.PLAYER, sp.getName(true));
            if (msg != null && !msg.isEmpty()) {
                Util.broadcastMessage(msg);
            }
            if (!sender.equals(target)){
                Util.message(sender, "&c" + sp.getName() + " &cを透明モードにしました");
            }
            Util.message(target, "&cあなたは透明モードになりました");
            SakuraCmdUtil.sendlog(sender, sp.getName() + "&c が透明モードになりました");
        }
    }

    public void execute() throws CommandException{
        if (args.size() == 0 && !isPlayer){
            throw new CommandException("&cプレイヤー名を指定してください！");
        }
        final Player target = (args.size() > 0) ? Bukkit.getPlayer(args.get(0)) : player;
        if (target == null || !target.isOnline()){
            throw new CommandException("&cプレイヤーが見つかりません！");
        }
        final SakuraPlayer sp = PlayerManager.getPlayer(target);
        InvisibleWorker worker = InvisibleWorker.getInstance();
        if (worker.isInvisible(target)){
            worker.reappear(target);
            String msg = _("joinMessage", I18n.PLAYER, sp.getName(true));
            if (msg != null && !msg.isEmpty()) {
                if (SCHelper.getInstance().getConfig().getUseGeoIP() && !Perms.HIDE_GEOIP.has(target)){
                    String geoStr = GeoIP.getInstance().getGeoIpString(target, SCHelper.getInstance().getConfig().getUseSimpleFormatOnJoin());
                    msg = msg + Util.coloring("&7") + " (" + geoStr + ")";
                }
                Util.broadcastMessage(msg);
            }
            if (!sender.equals(target)){
                Util.message(sender, "&a" + sp.getName() + " &aの透明モードを解除しました");
            }
            Util.message(target, "&aあなたの透明モードは解除されました");
            SakuraCmdUtil.sendlog(sender, sp.getName() + "&a が透明モードを解除しました");
        }else{
            worker.vanish(target, false);
            String msg = _("quitMessage", I18n.PLAYER, sp.getName(true));
            if (msg != null && !msg.isEmpty()) {
                Util.broadcastMessage(msg);
            }
            if (!sender.equals(target)){
                Util.message(sender, "&c" + sp.getName() + " &cを透明モードにしました");
            }
            Util.message(target, "&cあなたは透明モードになりました");
            SakuraCmdUtil.sendlog(sender, sp.getName() + "&c が透明モードになりました");
        }
    }
