diff --git a/core/src/main/java/me/leoko/advancedban/manager/UpdateManager.java b/core/src/main/java/me/leoko/advancedban/manager/UpdateManager.java index 93d4815b..63c8d546 100644 --- a/core/src/main/java/me/leoko/advancedban/manager/UpdateManager.java +++ b/core/src/main/java/me/leoko/advancedban/manager/UpdateManager.java @@ -36,6 +36,25 @@ public void setup() { if (mi.isUnitTesting()) return; + if (!mi.contains(mi.getMessages(), "HistoryOwn")) { + addMessage("Warns:", "", 0); + addMessage("Warns:", "HistoryOwn:", -1); + addMessage("Warns:", " OutOfIndex: \"&cThere is no page %PAGE%!\"", -1); + addMessage("Warns:", " NoEntries: \"&c&oYou have no punishments yet\"", -1); + addMessage("Warns:", " Header:", -1); + addMessage("Warns:", " - \"%PREFIX% &7Your History:\"", -1); + addMessage("Warns:", " - \"&e&oDuration &8| &7&oOperator\"", -1); + addMessage("Warns:", " - \"&c&oType &8> &7&oReason\"", -1); + addMessage("Warns:", " - \"&7\"", -1); + addMessage("Warns:", " Entry:", -1); + addMessage("Warns:", " - \"&8[&e%DATE%&8]\"", -1); + addMessage("Warns:", " - \"&e%DURATION% &8| &7%OPERATOR%\"", -1); + addMessage("Warns:", " - \"&c%TYPE% &8> &7&o%REASON%\"", -1); + addMessage("Warns:", " - \"&7\"", -1); + addMessage("Warns:", " Footer: \"&7Page &e&o%CURRENT_PAGE% &7of &e&o%TOTAL_PAGES% &8| &7Total entries: &e&o%COUNT%\"", -1); + addMessage("Warns:", " PageFooter: \"&7Use &e&o/history %NEXT_PAGE% &7to see the next page\"", -1); + } + if(!mi.contains(mi.getConfig(), "FullHistory")){ try { FileUtils.writeLines(new File(mi.getDataFolder(), "config.yml"), "UTF8", Arrays.asList( diff --git a/core/src/main/java/me/leoko/advancedban/utils/Command.java b/core/src/main/java/me/leoko/advancedban/utils/Command.java index 444dbfcc..6ab5a2b4 100644 --- a/core/src/main/java/me/leoko/advancedban/utils/Command.java +++ b/core/src/main/java/me/leoko/advancedban/utils/Command.java @@ -281,24 +281,21 @@ public enum Command { "Banlist.Usage", "banlist"), - HISTORY("ab.history", - "\\S+( [1-9][0-9]*)?", + HISTORY(null, + "\\S+( [1-9][0-9]*)?|\\S+|", new CleanTabCompleter((user, args) -> { if(args.length == 1) - return list(CleanTabCompleter.PLAYER_PLACEHOLDER, "[Name]"); - else if(args.length == 2) + if(Universal.get().getMethods().hasPerms(user, "ab.history.other")) + return list(CleanTabCompleter.PLAYER_PLACEHOLDER, "", ""); + else + return list(""); + else if(args.length == 2 && !args[0].matches("\\d+")) return list(""); else return list(); }), input -> { - MethodInterface mi = Universal.get().getMethods(); - List putList = new ArrayList<>(); - mi.getStringList(mi.getConfig(),"FullHistory").forEach((typeString -> putList.add(PunishmentType.valueOf(typeString)))); - - new ListProcessor( - target -> PunishmentManager.get().getPunishmentsOfTypes(target, putList, false), - "History", true, true).accept(input); + hasPerm(input, "History", null, false); }, "History.Usage", "history"), @@ -316,29 +313,7 @@ else if(args.length == 2 && !args[0].matches("\\d+")) else return list(); }), - input -> { - if (input.hasNext() && !input.getPrimary().matches("[1-9][0-9]*")) { - if (!Universal.get().hasPerms(input.getSender(), "ab.warns.other")) { - MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); - return; - } - - new ListProcessor( - target -> PunishmentManager.get().getPunishments(target, PunishmentType.WARNING, true), - "Warns", false, true).accept(input); - } else { - if (!Universal.get().hasPerms(input.getSender(), "ab.warns.own")) { - MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); - return; - } - - String name = Universal.get().getMethods().getName(input.getSender()); - String identifier = processName(new Command.CommandInput(input.getSender(), new String[]{name})); - new ListProcessor( - target -> PunishmentManager.get().getPunishments(identifier, PunishmentType.WARNING, true), - "WarnsOwn", false, false).accept(input); - } - }, + input -> hasPerm(input, "Warns", PunishmentType.WARNING, true), "Warns.Usage", "warns"), NOTES(null, @@ -354,29 +329,7 @@ else if(args.length == 2 && !args[0].matches("\\d+")) else return list(); }), - input -> { - if (input.hasNext() && !input.getPrimary().matches("[1-9][0-9]*")) { - if (!Universal.get().hasPerms(input.getSender(), "ab.notes.other")) { - MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); - return; - } - - new ListProcessor( - target -> PunishmentManager.get().getPunishments(target, PunishmentType.NOTE, true), - "Notes", false, true).accept(input); - } else { - if (!Universal.get().hasPerms(input.getSender(), "ab.notes.own")) { - MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); - return; - } - - String name = Universal.get().getMethods().getName(input.getSender()); - String identifier = processName(new Command.CommandInput(input.getSender(), new String[]{name})); - new ListProcessor( - target -> PunishmentManager.get().getPunishments(identifier, PunishmentType.NOTE, true), - "NotesOwn", false, false).accept(input); - } - }, + input -> hasPerm(input, "Notes", PunishmentType.NOTE, true), "Notes.Usage", "notes"), @@ -531,6 +484,36 @@ else if(args.length == 2 && !args[0].matches("\\d+")) null, "advancedban"); + private static void hasPerm(Command.CommandInput input, String FriendlyName, PunishmentType put, boolean current){ + MethodInterface mi = Universal.get().getMethods(); + List Types = new ArrayList<>(); + + if(put == null) + mi.getStringList(mi.getConfig(),"FullHistory").forEach((typeString -> Types.add(PunishmentType.valueOf(typeString)))); + else + Types.add(put); + + if (input.hasNext() && !input.getPrimary().matches("[1-9][0-9]*")) { + if (!Universal.get().hasPerms(input.getSender(), "ab." + FriendlyName.toLowerCase() + ".other")) { + MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); + return; + } + new ListProcessor( + target -> PunishmentManager.get().getPunishmentsOfTypes(target, Types, current), + FriendlyName, put == null, true).accept(input); + } else { + if (!Universal.get().hasPerms(input.getSender(), "ab." + FriendlyName.toLowerCase() + ".own")) { + MessageManager.sendMessage(input.getSender(), "General.NoPerms", true); + return; + } + + String name = Universal.get().getMethods().getName(input.getSender()); + String identifier = processName(new Command.CommandInput(input.getSender(), new String[]{name})); + new ListProcessor( + target -> PunishmentManager.get().getPunishmentsOfTypes(identifier, Types, current), + FriendlyName + "Own", put == null, false).accept(input); + } + } private final String permission; private final Predicate syntaxValidator; private final TabCompleter tabCompleter; diff --git a/core/src/main/resources/Messages.yml b/core/src/main/resources/Messages.yml index f817ddb4..a80028cb 100644 --- a/core/src/main/resources/Messages.yml +++ b/core/src/main/resources/Messages.yml @@ -225,6 +225,22 @@ History: Footer: "&7Page &e&o%CURRENT_PAGE% &7of &e&o%TOTAL_PAGES% &8| &7Total entries: &e&o%COUNT%" PageFooter: "&7Use &e&o/history %NAME% %NEXT_PAGE% &7to see the next page" +HistoryOwn: + OutOfIndex: "&cThere is no page %PAGE%!" + NoEntries: "&c&oCould not find the history of %NAME% :(" + Header: + - "%PREFIX% &7Your History:" + - "&e&oDuration &8| &7&oOperator" + - "&c&oType &8> &7&oReason" + - "&7" + Entry: + - "&8[&e%DATE%&8]" + - "&e%DURATION% &8| &7%OPERATOR%" + - "&c%TYPE% &8> &7&o%REASON%" + - "&7" + Footer: "&7Page &e&o%CURRENT_PAGE% &7of &e&o%TOTAL_PAGES% &8| &7Total entries: &e&o%COUNT%" + PageFooter: "&7Use &e&o/history %NEXT_PAGE% &7to see the next page" + Warns: Usage: "&cUsage &8ยป &7&o/warns [Name] &cor &7&o/warns " OutOfIndex: "&cThere is no page %PAGE%!"