private String getPlayerHover(final CraftoPlayer player, final int index) {
   if (player != null) {
     return "§e§nEintrag #"
         + index
         + "\n"
         + "§rId: §7"
         + player.getId()
         + " \n"
         + "§rSpielername: §7"
         + player.getName()
         + " \n"
         + "§rIP-Addresse: §7"
         + player.getIp()
         + " \n"
         + "§rErster Beitritt: §7"
         + player.getFirstJoinedAsString()
         + " \n"
         + "§rLetzter Beitritt: §7"
         + player.getLastJoinedAsString()
         + " \n"
         + "§rErster bekannter Name: §7"
         + player.getFirstname()
         + " \n"
         + "§rSpielzeit: §7"
         + player.getPlaytimeAsString();
   } else {
     return "Spieler unbekannt.";
   }
 }
  @Command(
      value = "akte",
      perm = "craftoplugin.moderator",
      desc = "Verwaltet gemerkte Dinge zu Spielern")
  public void onCommand(final CommandSender cs, final String[] args) {
    if (args.length < 1) {
      CraftoMessenger.sendMessage(cs, "Anwendung: /akte <spieler> [add]");
    } else {
      final CraftoPlayer p = CraftoPlayer.getPlayer(args[0]);
      final List<Record> records = this.getRecords(p);
      if (p != null && records != null) {
        if (args.length < 2) {
          if (records.size() > 0) {
            final Json header =
                new Json()
                    .add("CraftoPlugin // ", Format.GOLD)
                    .add("Alle Einträge zu " + p.getIdName() + ": ", Format.YELLOW);
            header.add("[", Format.GRAY);
            header.add(
                "+",
                "Neuen Eintrag erstellen...",
                "suggest_command",
                "/akte " + p.getName() + " add ",
                Format.WHITE);
            header.add("]", Format.GRAY);
            header.sendTo(cs.getName());
            for (final Record r : records) {
              final CraftoPlayer creator = CraftoPlayer.getPlayer(r.getCreated_by());
              // Format: + [456] Von Fear837: Hat eine ganz tolle Stadt aufgebaut.
              final Json json = new Json().s();
              if (r.getType().equals(RecordType.POSITIVE)) {
                json.add(
                        "+",
                        this.getStartHover(p, r),
                        "run_command",
                        "/record " + r.getId(),
                        Format.GREEN)
                    .s();
              } else if (r.getType().equals(RecordType.NEGATIVE)) {
                json.add(
                        "-",
                        this.getStartHover(p, r),
                        "run_command",
                        "/record " + r.getId(),
                        Format.RED)
                    .s();
              } else {
                json.add(
                        "*",
                        this.getStartHover(p, r),
                        "run_command",
                        "/record " + r.getId(),
                        Format.AQUA)
                    .s();
              }
              json.add("[", Format.GRAY);
              json.add(
                  "" + r.getId(),
                  this.getStartHover(p, r),
                  "run_command",
                  "/tp " + r.getLocation(),
                  Format.GRAY);
              json.add("]", Format.GRAY).s();

              if (creator != null) {
                json.add(
                    creator.getName(), this.getPlayerHover(creator, r.getId()), Format.DARK_AQUA);
              } else {
                json.add("Craftobot", Format.DARK_AQUA);
              }
              json.add(" schrieb: ", Format.WHITE);

              json.add(r.getInfo(), Format.GRAY);
              // json.add("[", Format.GRAY);
              // json.add(">>", "Teleportieren zu "+r.getLocation(), "run_command", "/tp
              // "+r.getLocation(), Format.WHITE);
              // json.add("]", Format.GRAY);
              json.sendTo(cs.getName());
            }
          } else {
            CraftoMessenger.sendFailed(
                cs, "Der angegebene Spieler hat noch keine Einträge in seiner Akte.");
          }
        } else if (cs instanceof Player) {
          final Player pSender = (Player) cs;
          final CraftoPlayer cSender = CraftoPlayer.getPlayer(pSender.getUniqueId());
          if (args[1].equalsIgnoreCase("add")
              || args[0].equalsIgnoreCase("new")) { // /akte <name> add <type> <text>
            if (args.length > 3) {
              RecordType type = null;
              String text = null;

              if (args[2].equalsIgnoreCase("+")) {
                type = RecordType.POSITIVE;
              } else if (args[2].equalsIgnoreCase("-")) {
                type = RecordType.NEGATIVE;
              } else if (args[2].equalsIgnoreCase("*")) {
                type = RecordType.NEUTRAL;
              } else {
                CraftoMessenger.sendFailed(cs, "Ungültiger Typ! (+, -, *)");
                return;
              }

              final StringBuilder b = new StringBuilder();
              for (int i = 3; i < args.length; i++) {
                b.append(args[i] + " ");
              }
              text = b.toString();

              if (text != null && !text.isEmpty()) {
                final Record r = p.addRecord(type, text, cSender.getId(), pSender.getLocation());
                if (r != null) {
                  CraftoMessenger.sendSuccess(
                      cs, "Der Akteneintrag wurde erfolgreich erstellt. (#" + r.getId() + ")");
                } else {
                  CraftoMessenger.sendFailed(
                      cs, "Ein Fehler ist beim Erstellen des Eintrags aufgetreten.");
                }
              } else {
                CraftoMessenger.sendFailed(cs, "Es wurde kein Text zu dem Eintrag angegeben.");
              }
            } else {
              CraftoMessenger.sendFailed(
                  cs, "Zu wenige Argumente! (/akte <name> add <type> <text>");
              return;
            }
          } else if (args[1].equalsIgnoreCase("+")
              || args[1].equalsIgnoreCase("-")
              || args[1].equalsIgnoreCase("*")) {
            // /akte <name> <type> <text>
            if (args.length > 2) {
              RecordType type = null;
              String text = null;

              if (args[1].equalsIgnoreCase("+")) {
                type = RecordType.POSITIVE;
              } else if (args[1].equalsIgnoreCase("-")) {
                type = RecordType.NEGATIVE;
              } else if (args[1].equalsIgnoreCase("*")) {
                type = RecordType.NEUTRAL;
              } else {
                CraftoMessenger.sendFailed(cs, "Ungültiger Typ! (+, -, *)");
                return;
              }

              final StringBuilder b = new StringBuilder();
              for (int i = 2; i < args.length; i++) {
                b.append(args[i] + " ");
              }
              text = b.toString();

              if (text != null && !text.isEmpty()) {
                final Record r = p.addRecord(type, text, cSender.getId(), pSender.getLocation());
                if (r != null) {
                  CraftoMessenger.sendSuccess(
                      cs, "Der Akteneintrag wurde erfolgreich erstellt. (#" + r.getId() + ")");
                } else {
                  CraftoMessenger.sendFailed(
                      cs, "Ein Fehler ist beim Erstellen des Eintrags aufgetreten.");
                }
              } else {
                CraftoMessenger.sendFailed(cs, "Es wurde kein Text zu dem Eintrag angegeben.");
              }
            } else {
              CraftoMessenger.sendFailed(
                  cs, "Zu wenige Argumente! (/akte <name> add <type> <text>");
              return;
            }
          } else {
            // TODO? Eintrag anlegen auch ohne +-*
            CraftoMessenger.sendFailed(cs, "Ungültige Argumente angegeben.");
          }
        } else {
          CraftoMessenger.sendFailed(
              cs, "Dieses Kommando kann nur von Spielern ausgeführt werden.");
        }
      } else {
        CraftoMessenger.sendFailed(cs, "Es wurde keine Akte zu dem angegebenen Spieler gefunden.");
      }
    }
  }