public static boolean removeFriend(ProxiedPlayer p, String who) {
   if (who == null || who == "") {
     Messages.FRIEND_FAIL_REMOVED.msg(p, "%player%", who);
     return false;
   } // Parameter fehlt bzw. ungültig
   ProxiedPlayer whoPlayer = Util.getPlayer(who);
   PlayerData pd = PlayerData.get(p.getUniqueId());
   if (whoPlayer == null) {
     for (UUID uuid : pd.getFriends().keySet()) {
       Friend friend = pd.getFriends().get(uuid);
       if (friend.getFriendName().equalsIgnoreCase(who)) {
         friend.remove(true);
         pd.getFriends().remove(uuid);
         Messages.FRIEND_REMOVED.msg(p, "%player%", who);
         PluginMessenger.sendMessage(p, "Friend", "Update");
         return true;
       }
     }
     Messages.FRIEND_NOT_IN_FRIENDLIST.msg(p, "%player%", who);
     return false;
   } else {
     if (pd.getFriends().containsKey(whoPlayer.getUniqueId())) {
       pd.getFriends().remove(whoPlayer.getUniqueId());
       Messages.FRIEND_REMOVED.msg(p, "%player%", whoPlayer.getName());
       PluginMessenger.sendMessage(p, "Friend", "Update");
       return true;
     }
     Messages.FRIEND_NOT_IN_FRIENDLIST.msg(p, "%player%", who);
     return false;
   }
 }
  @Override
  public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
    if (args.length <= 0) return null;
    Set<String> matches = new HashSet<>();
    switch (args[0].toLowerCase()) {
      case "add":
        {
          if (args.length != 2) break;
          if (args[1].length() >= 2) {
            String search = args[1].toLowerCase();
            for (ProxiedPlayer p : Util.PROXY.getPlayers()) {
              if (p.getName().toLowerCase().startsWith(search)) matches.add(p.getName());
            }
            return matches;
          }
          break;
        }

      case "remove":
        {
          if (args.length != 2) break;
          if (args[1].length() >= 2) {
            if (!(sender instanceof ProxiedPlayer)) return null;
            ProxiedPlayer player = (ProxiedPlayer) sender;
            String search = args[1].toLowerCase();
            PlayerData pd = PlayerData.get(player.getUniqueId());
            for (Friend friend : pd.getFriends().values()) {
              if (friend.getFriendName().toLowerCase().startsWith(search))
                matches.add(friend.getFriendName());
            }
          }
          break;
        }

      case "accept":
        {
          if (args.length != 3) break;
          if (args[2].length() >= 2) {
            if (!(sender instanceof ProxiedPlayer)) return null;
            ProxiedPlayer player = (ProxiedPlayer) sender;
            String search = args[2].toLowerCase();
            PlayerData pd = PlayerData.get(player.getUniqueId());
            for (FriendRequest fr : pd.getFriendRequests()) {
              if (fr.getSender().getName().toLowerCase().startsWith(search))
                matches.add(fr.getSender().getName());
            }
          }
          break;
        }

      default:
        {
          if (args.length == 1) {
            String search = args[0].toLowerCase();
            for (String subcmd : Util.FRIEND_SUBCOMMANDS) {
              if (subcmd.toLowerCase().startsWith(search)) matches.add(subcmd);
            }
          }
          break;
        }
    }
    return matches;
  }