private String getStartHover(final CraftoPlayer p, final Record r) { final CraftoPlayer creator = CraftoPlayer.getPlayer(r.getCreated_by()); return ChatColor.YELLOW + "" + ChatColor.UNDERLINE + "Eintrag #" + r.getId() + " über " + p.getIdName() + ": " + ChatColor.RESET + " \n" + "- Erstellt am: §7" + CraftoTime.getTime(r.getCreated_at()) + "§r \n" + "- Erstellt von: §7" + (creator != null ? creator.getIdName() : "Spieler #" + r.getCreated_at()) + "§r \n" + "- Eintragstyp: §7" + r.getType().toString() + "§r \n" + "- Text: §7" + r.getInfo() + "§r \n" + "- Koordinaten: §7" + r.getLocation().replaceAll(" ", ", "); }
@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."); } } }