From cb47f9f94be12dab1cae791f8026e05b18bf3264 Mon Sep 17 00:00:00 2001 From: Luck Date: Sun, 17 Dec 2017 17:47:10 +0000 Subject: [PATCH] Change log output format, refactor log pagination --- common/pom.xml | 4 ++ .../common/actionlog/ExtendedLogEntry.java | 28 ++++++---- .../lucko/luckperms/common/actionlog/Log.java | 53 +++++++++---------- .../common/actionlog/LogDispatcher.java | 18 ++++--- .../common/api/delegates/model/ApiLog.java | 25 ++++----- .../commands/impl/log/LogGroupHistory.java | 17 ++++-- .../common/commands/impl/log/LogRecent.java | 24 ++++++--- .../common/commands/impl/log/LogSearch.java | 17 ++++-- .../commands/impl/log/LogTrackHistory.java | 17 ++++-- .../commands/impl/log/LogUserHistory.java | 19 +++++-- .../luckperms/common/locale/Message.java | 31 ++++++----- 11 files changed, 158 insertions(+), 95 deletions(-) diff --git a/common/pom.xml b/common/pom.xml index 46e2671ed..67f03e48c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -54,6 +54,10 @@ com.google.guava guava + + net.kyori + blizzard + diff --git a/common/src/main/java/me/lucko/luckperms/common/actionlog/ExtendedLogEntry.java b/common/src/main/java/me/lucko/luckperms/common/actionlog/ExtendedLogEntry.java index 9f522cd0f..95e143810 100644 --- a/common/src/main/java/me/lucko/luckperms/common/actionlog/ExtendedLogEntry.java +++ b/common/src/main/java/me/lucko/luckperms/common/actionlog/ExtendedLogEntry.java @@ -30,6 +30,7 @@ import lombok.AllArgsConstructor; import lombok.ToString; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.collect.Maps; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; @@ -60,8 +61,6 @@ import java.util.stream.Collectors; @AllArgsConstructor(access = AccessLevel.PRIVATE) public class ExtendedLogEntry implements LogEntry { - private static final String FORMAT = "&8(&e%s&8) [&a%s&8] (&b%s&8) &7--> &f%s"; - private static final Comparator COMPARATOR = Comparator .comparingLong(LogEntry::getTimestamp) .thenComparing(LogEntry::getActor) @@ -103,6 +102,13 @@ public class ExtendedLogEntry implements LogEntry { return actorName; } + public String getActorFriendlyString() { + if (Strings.isNullOrEmpty(actorName) || actorName.equals("null")) { + return actor.toString(); + } + return actorName; + } + @Override public Type getType() { return type; @@ -118,6 +124,15 @@ public class ExtendedLogEntry implements LogEntry { return actedName; } + public String getActedFriendlyString() { + if (Strings.isNullOrEmpty(actedName) || actedName.equals("null")) { + if (acted != null) { + return acted.toString(); + } + } + return String.valueOf(actorName); + } + @Override public String getAction() { return action; @@ -136,15 +151,6 @@ public class ExtendedLogEntry implements LogEntry { action.toLowerCase().contains(query); } - public String getFormatted() { - return String.format(FORMAT, - String.valueOf(actorName).equals("null") ? actor.toString() : actorName, - Character.toString(type.getCode()), - String.valueOf(actedName).equals("null") && acted != null ? acted.toString() : actedName, - action - ); - } - public void submit(LuckPermsPlugin plugin, Sender sender) { plugin.getLogDispatcher().dispatch(this, sender); } diff --git a/common/src/main/java/me/lucko/luckperms/common/actionlog/Log.java b/common/src/main/java/me/lucko/luckperms/common/actionlog/Log.java index ec871f43f..ce3420281 100644 --- a/common/src/main/java/me/lucko/luckperms/common/actionlog/Log.java +++ b/common/src/main/java/me/lucko/luckperms/common/actionlog/Log.java @@ -40,7 +40,6 @@ import java.util.UUID; import java.util.stream.Collectors; public class Log { - private static final int PAGE_ENTRIES = 5; public static Builder builder() { return new Builder(); @@ -74,10 +73,6 @@ public class Log { return out; } - private static int getMaxPages(int size, int entries) { - return (int) Math.ceil((double) size / entries); - } - private static int getMaxPages(long size, int entries) { return (int) Math.ceil((double) size / entries); } @@ -93,12 +88,12 @@ public class Log { return content; } - public SortedMap getRecent(int pageNo) { - return getPage(content, pageNo, PAGE_ENTRIES); + public SortedMap getRecent(int pageNo, int entriesPerPage) { + return getPage(content, pageNo, entriesPerPage); } - public int getRecentMaxPages() { - return getMaxPages(content.size(), PAGE_ENTRIES); + public int getRecentMaxPages(int entriesPerPage) { + return getMaxPages(content.size(), entriesPerPage); } public SortedSet getRecent(UUID actor) { @@ -107,14 +102,14 @@ public class Log { .collect(Collectors.toCollection(TreeSet::new)); } - public SortedMap getRecent(int pageNo, UUID actor) { - return getPage(getRecent(actor), pageNo, PAGE_ENTRIES); + public SortedMap getRecent(int pageNo, UUID actor, int entriesPerPage) { + return getPage(getRecent(actor), pageNo, entriesPerPage); } - public int getRecentMaxPages(UUID actor) { + public int getRecentMaxPages(UUID actor, int entriesPerPage) { return getMaxPages(content.stream() .filter(e -> e.getActor().equals(actor)) - .count(), PAGE_ENTRIES); + .count(), entriesPerPage); } public SortedSet getUserHistory(UUID uuid) { @@ -125,16 +120,16 @@ public class Log { .collect(Collectors.toCollection(TreeSet::new)); } - public SortedMap getUserHistory(int pageNo, UUID uuid) { - return getPage(getUserHistory(uuid), pageNo, PAGE_ENTRIES); + public SortedMap getUserHistory(int pageNo, UUID uuid, int entriesPerPage) { + return getPage(getUserHistory(uuid), pageNo, entriesPerPage); } - public int getUserHistoryMaxPages(UUID uuid) { + public int getUserHistoryMaxPages(UUID uuid, int entriesPerPage) { return getMaxPages(content.stream() .filter(e -> e.getType() == LogEntry.Type.USER) .filter(e -> e.getActed().isPresent()) .filter(e -> e.getActed().get().equals(uuid)) - .count(), PAGE_ENTRIES); + .count(), entriesPerPage); } public SortedSet getGroupHistory(String name) { @@ -144,15 +139,15 @@ public class Log { .collect(Collectors.toCollection(TreeSet::new)); } - public SortedMap getGroupHistory(int pageNo, String name) { - return getPage(getGroupHistory(name), pageNo, PAGE_ENTRIES); + public SortedMap getGroupHistory(int pageNo, String name, int entriesPerPage) { + return getPage(getGroupHistory(name), pageNo, entriesPerPage); } - public int getGroupHistoryMaxPages(String name) { + public int getGroupHistoryMaxPages(String name, int entriesPerPage) { return getMaxPages(content.stream() .filter(e -> e.getType() == LogEntry.Type.GROUP) .filter(e -> e.getActedName().equals(name)) - .count(), PAGE_ENTRIES); + .count(), entriesPerPage); } public SortedSet getTrackHistory(String name) { @@ -162,15 +157,15 @@ public class Log { .collect(Collectors.toCollection(TreeSet::new)); } - public SortedMap getTrackHistory(int pageNo, String name) { - return getPage(getTrackHistory(name), pageNo, PAGE_ENTRIES); + public SortedMap getTrackHistory(int pageNo, String name, int entriesPerPage) { + return getPage(getTrackHistory(name), pageNo, entriesPerPage); } - public int getTrackHistoryMaxPages(String name) { + public int getTrackHistoryMaxPages(String name, int entriesPerPage) { return getMaxPages(content.stream() .filter(e -> e.getType() == LogEntry.Type.TRACK) .filter(e -> e.getActedName().equals(name)) - .count(), PAGE_ENTRIES); + .count(), entriesPerPage); } public SortedSet getSearch(String query) { @@ -179,14 +174,14 @@ public class Log { .collect(Collectors.toCollection(TreeSet::new)); } - public SortedMap getSearch(int pageNo, String query) { - return getPage(getSearch(query), pageNo, PAGE_ENTRIES); + public SortedMap getSearch(int pageNo, String query, int entriesPerPage) { + return getPage(getSearch(query), pageNo, entriesPerPage); } - public int getSearchMaxPages(String query) { + public int getSearchMaxPages(String query, int entriesPerPage) { return getMaxPages(content.stream() .filter(e -> e.matchesSearch(query)) - .count(), PAGE_ENTRIES); + .count(), entriesPerPage); } @SuppressWarnings("WeakerAccess") diff --git a/common/src/main/java/me/lucko/luckperms/common/actionlog/LogDispatcher.java b/common/src/main/java/me/lucko/luckperms/common/actionlog/LogDispatcher.java index 9d7dfefbe..3535e0cb3 100644 --- a/common/src/main/java/me/lucko/luckperms/common/actionlog/LogDispatcher.java +++ b/common/src/main/java/me/lucko/luckperms/common/actionlog/LogDispatcher.java @@ -59,13 +59,16 @@ public class LogDispatcher { } if (!plugin.getApiProvider().getEventFactory().handleLogBroadcast(!plugin.getConfiguration().get(ConfigKeys.LOG_NOTIFY), entry, LogBroadcastEvent.Origin.LOCAL)) { - final String msg = entry.getFormatted(); - plugin.getOnlineSenders() .filter(CommandPermission.LOG_NOTIFY::isAuthorized) .filter(s -> !LogNotify.isIgnoring(plugin, s.getUuid())) .filter(s -> !s.getUuid().equals(sender.getUuid())) - .forEach(s -> Message.LOG.send(s, msg)); + .forEach(s -> Message.LOG.send(s, + entry.getActorFriendlyString(), + Character.toString(entry.getType().getCode()), + entry.getActedFriendlyString(), + entry.getAction() + )); } } @@ -75,12 +78,15 @@ public class LogDispatcher { } if (!plugin.getApiProvider().getEventFactory().handleLogBroadcast(!plugin.getConfiguration().get(ConfigKeys.LOG_NOTIFY), entry, LogBroadcastEvent.Origin.REMOTE)) { - final String msg = entry.getFormatted(); - plugin.getOnlineSenders() .filter(CommandPermission.LOG_NOTIFY::isAuthorized) .filter(s -> !LogNotify.isIgnoring(plugin, s.getUuid())) - .forEach(s -> Message.LOG.send(s, msg)); + .forEach(s -> Message.LOG.send(s, + entry.getActorFriendlyString(), + Character.toString(entry.getType().getCode()), + entry.getActedFriendlyString(), + entry.getAction() + )); } } } diff --git a/common/src/main/java/me/lucko/luckperms/common/api/delegates/model/ApiLog.java b/common/src/main/java/me/lucko/luckperms/common/api/delegates/model/ApiLog.java index 48b41ee3d..8091070ac 100644 --- a/common/src/main/java/me/lucko/luckperms/common/api/delegates/model/ApiLog.java +++ b/common/src/main/java/me/lucko/luckperms/common/api/delegates/model/ApiLog.java @@ -40,6 +40,7 @@ import static me.lucko.luckperms.common.api.ApiUtils.checkName; @SuppressWarnings("unchecked") @AllArgsConstructor public class ApiLog implements Log { + private static final int ENTRIES_PER_PAGE = 5; private final me.lucko.luckperms.common.actionlog.Log handle; @Override @@ -54,12 +55,12 @@ public class ApiLog implements Log { @Override public SortedMap getRecent(int pageNo) { - return (SortedMap) handle.getRecent(pageNo); + return (SortedMap) handle.getRecent(pageNo, ENTRIES_PER_PAGE); } @Override public int getRecentMaxPages() { - return handle.getRecentMaxPages(); + return handle.getRecentMaxPages(ENTRIES_PER_PAGE); } @Override @@ -69,12 +70,12 @@ public class ApiLog implements Log { @Override public SortedMap getRecent(int pageNo, @NonNull UUID actor) { - return (SortedMap) handle.getRecent(pageNo, actor); + return (SortedMap) handle.getRecent(pageNo, actor, ENTRIES_PER_PAGE); } @Override public int getRecentMaxPages(@NonNull UUID actor) { - return handle.getRecentMaxPages(actor); + return handle.getRecentMaxPages(actor, ENTRIES_PER_PAGE); } @Override @@ -84,12 +85,12 @@ public class ApiLog implements Log { @Override public SortedMap getUserHistory(int pageNo, @NonNull UUID uuid) { - return (SortedMap) handle.getUserHistory(pageNo, uuid); + return (SortedMap) handle.getUserHistory(pageNo, uuid, ENTRIES_PER_PAGE); } @Override public int getUserHistoryMaxPages(@NonNull UUID uuid) { - return handle.getUserHistoryMaxPages(uuid); + return handle.getUserHistoryMaxPages(uuid, ENTRIES_PER_PAGE); } @Override @@ -99,12 +100,12 @@ public class ApiLog implements Log { @Override public SortedMap getGroupHistory(int pageNo, @NonNull String name) { - return (SortedMap) handle.getGroupHistory(pageNo, checkName(name)); + return (SortedMap) handle.getGroupHistory(pageNo, checkName(name), ENTRIES_PER_PAGE); } @Override public int getGroupHistoryMaxPages(@NonNull String name) { - return handle.getGroupHistoryMaxPages(checkName(name)); + return handle.getGroupHistoryMaxPages(checkName(name), ENTRIES_PER_PAGE); } @Override @@ -114,12 +115,12 @@ public class ApiLog implements Log { @Override public SortedMap getTrackHistory(int pageNo, @NonNull String name) { - return (SortedMap) handle.getTrackHistory(pageNo, checkName(name)); + return (SortedMap) handle.getTrackHistory(pageNo, checkName(name), ENTRIES_PER_PAGE); } @Override public int getTrackHistoryMaxPages(@NonNull String name) { - return handle.getTrackHistoryMaxPages(checkName(name)); + return handle.getTrackHistoryMaxPages(checkName(name), ENTRIES_PER_PAGE); } @Override @@ -129,11 +130,11 @@ public class ApiLog implements Log { @Override public SortedMap getSearch(int pageNo, @NonNull String query) { - return (SortedMap) handle.getSearch(pageNo, query); + return (SortedMap) handle.getSearch(pageNo, query, ENTRIES_PER_PAGE); } @Override public int getSearchMaxPages(@NonNull String query) { - return handle.getSearchMaxPages(query); + return handle.getSearchMaxPages(query, ENTRIES_PER_PAGE); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java index b440dff2a..f6ad55ef5 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogGroupHistory.java @@ -45,6 +45,8 @@ import java.util.Map; import java.util.SortedMap; public class LogGroupHistory extends SubCommand { + private static final int ENTRIES_PER_PAGE = 10; + public LogGroupHistory(LocaleManager locale) { super(CommandSpec.LOG_GROUP_HISTORY.spec(locale), "grouphistory", CommandPermission.LOG_GROUP_HISTORY, Predicates.notInRange(1, 2)); } @@ -69,7 +71,7 @@ public class LogGroupHistory extends SubCommand { return CommandResult.INVALID_ARGS; } - int maxPage = log.getGroupHistoryMaxPages(group); + int maxPage = log.getGroupHistoryMaxPages(group, ENTRIES_PER_PAGE); if (maxPage == 0) { Message.LOG_NO_ENTRIES.send(sender); return CommandResult.STATE_ERROR; @@ -84,14 +86,21 @@ public class LogGroupHistory extends SubCommand { return CommandResult.INVALID_ARGS; } - SortedMap entries = log.getGroupHistory(page, group); + SortedMap entries = log.getGroupHistory(page, group, ENTRIES_PER_PAGE); String name = entries.values().stream().findAny().get().getActedName(); Message.LOG_HISTORY_GROUP_HEADER.send(sender, name, page, maxPage); + long now = DateUtil.unixSecondsNow(); for (Map.Entry e : entries.entrySet()) { long time = e.getValue().getTimestamp(); - long now = DateUtil.unixSecondsNow(); - Message.LOG_ENTRY.send(sender, e.getKey(), DateUtil.formatTimeShort(now - time), e.getValue().getFormatted()); + Message.LOG_ENTRY.send(sender, + e.getKey(), + DateUtil.formatTimeShort(now - time), + e.getValue().getActorFriendlyString(), + Character.toString(e.getValue().getType().getCode()), + e.getValue().getActedFriendlyString(), + e.getValue().getAction() + ); } return CommandResult.SUCCESS; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java index 0db5e4046..663412e92 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogRecent.java @@ -48,6 +48,8 @@ import java.util.SortedMap; import java.util.UUID; public class LogRecent extends SubCommand { + private static final int ENTRIES_PER_PAGE = 10; + public LogRecent(LocaleManager locale) { super(CommandSpec.LOG_RECENT.spec(locale), "recent", CommandPermission.LOG_RECENT, Predicates.notInRange(0, 2)); } @@ -56,7 +58,7 @@ public class LogRecent extends SubCommand { public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Log log, List args, String label) throws CommandException { if (args.size() == 0) { // No page or user - return showLog(log.getRecentMaxPages(), null, sender, log); + return showLog(log.getRecentMaxPages(ENTRIES_PER_PAGE), null, sender, log); } if (args.size() == 1) { @@ -102,7 +104,7 @@ public class LogRecent extends SubCommand { if (args.size() != 2) { // Just user - return showLog(log.getRecentMaxPages(uuid), uuid, sender, log); + return showLog(log.getRecentMaxPages(uuid, ENTRIES_PER_PAGE), uuid, sender, log); } else { try { int p = Integer.parseInt(args.get(1)); @@ -116,7 +118,7 @@ public class LogRecent extends SubCommand { } private static CommandResult showLog(int page, UUID filter, Sender sender, Log log) { - int maxPage = (filter != null) ? log.getRecentMaxPages(filter) : log.getRecentMaxPages(); + int maxPage = (filter != null) ? log.getRecentMaxPages(filter, ENTRIES_PER_PAGE) : log.getRecentMaxPages(ENTRIES_PER_PAGE); if (maxPage == 0) { Message.LOG_NO_ENTRIES.send(sender); return CommandResult.STATE_ERROR; @@ -127,18 +129,28 @@ public class LogRecent extends SubCommand { return CommandResult.INVALID_ARGS; } - SortedMap entries = (filter != null) ? log.getRecent(page, filter) : log.getRecent(page); + SortedMap entries = (filter != null) ? log.getRecent(page, filter, ENTRIES_PER_PAGE) : log.getRecent(page, ENTRIES_PER_PAGE); if (filter != null) { String name = entries.values().stream().findAny().get().getActorName(); + if (name.contains("@")) { + name = name.split("@")[0]; + } Message.LOG_RECENT_BY_HEADER.send(sender, name, page, maxPage); } else { Message.LOG_RECENT_HEADER.send(sender, page, maxPage); } + long now = DateUtil.unixSecondsNow(); for (Map.Entry e : entries.entrySet()) { long time = e.getValue().getTimestamp(); - long now = DateUtil.unixSecondsNow(); - Message.LOG_ENTRY.send(sender, e.getKey(), DateUtil.formatTimeShort(now - time), e.getValue().getFormatted()); + Message.LOG_ENTRY.send(sender, + e.getKey(), + DateUtil.formatTimeShort(now - time), + e.getValue().getActorFriendlyString(), + Character.toString(e.getValue().getType().getCode()), + e.getValue().getActedFriendlyString(), + e.getValue().getAction() + ); } return CommandResult.SUCCESS; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogSearch.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogSearch.java index 0e78478f9..1b099098a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogSearch.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogSearch.java @@ -45,6 +45,8 @@ import java.util.SortedMap; import java.util.stream.Collectors; public class LogSearch extends SubCommand { + private static final int ENTRIES_PER_PAGE = 10; + public LogSearch(LocaleManager locale) { super(CommandSpec.LOG_SEARCH.spec(locale), "search", CommandPermission.LOG_SEARCH, Predicates.is(0)); } @@ -62,7 +64,7 @@ public class LogSearch extends SubCommand { final String query = args.stream().collect(Collectors.joining(" ")); - int maxPage = log.getSearchMaxPages(query); + int maxPage = log.getSearchMaxPages(query, ENTRIES_PER_PAGE); if (maxPage == 0) { Message.LOG_NO_ENTRIES.send(sender); return CommandResult.STATE_ERROR; @@ -77,13 +79,20 @@ public class LogSearch extends SubCommand { return CommandResult.INVALID_ARGS; } - SortedMap entries = log.getSearch(page, query); + SortedMap entries = log.getSearch(page, query, ENTRIES_PER_PAGE); Message.LOG_SEARCH_HEADER.send(sender, query, page, maxPage); + long now = DateUtil.unixSecondsNow(); for (Map.Entry e : entries.entrySet()) { long time = e.getValue().getTimestamp(); - long now = DateUtil.unixSecondsNow(); - Message.LOG_ENTRY.send(sender, e.getKey(), DateUtil.formatTimeShort(now - time), e.getValue().getFormatted()); + Message.LOG_ENTRY.send(sender, + e.getKey(), + DateUtil.formatTimeShort(now - time), + e.getValue().getActorFriendlyString(), + Character.toString(e.getValue().getType().getCode()), + e.getValue().getActedFriendlyString(), + e.getValue().getAction() + ); } return CommandResult.SUCCESS; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java index 90b4dbabd..0c6248f31 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogTrackHistory.java @@ -45,6 +45,8 @@ import java.util.Map; import java.util.SortedMap; public class LogTrackHistory extends SubCommand { + private static final int ENTRIES_PER_PAGE = 10; + public LogTrackHistory(LocaleManager locale) { super(CommandSpec.LOG_TRACK_HISTORY.spec(locale), "trackhistory", CommandPermission.LOG_TRACK_HISTORY, Predicates.notInRange(1, 2)); } @@ -69,7 +71,7 @@ public class LogTrackHistory extends SubCommand { return CommandResult.INVALID_ARGS; } - int maxPage = log.getTrackHistoryMaxPages(track); + int maxPage = log.getTrackHistoryMaxPages(track, ENTRIES_PER_PAGE); if (maxPage == 0) { Message.LOG_NO_ENTRIES.send(sender); return CommandResult.STATE_ERROR; @@ -84,14 +86,21 @@ public class LogTrackHistory extends SubCommand { return CommandResult.INVALID_ARGS; } - SortedMap entries = log.getTrackHistory(page, track); + SortedMap entries = log.getTrackHistory(page, track, ENTRIES_PER_PAGE); String name = entries.values().stream().findAny().get().getActedName(); Message.LOG_HISTORY_TRACK_HEADER.send(sender, name, page, maxPage); + long now = DateUtil.unixSecondsNow(); for (Map.Entry e : entries.entrySet()) { long time = e.getValue().getTimestamp(); - long now = DateUtil.unixSecondsNow(); - Message.LOG_ENTRY.send(sender, e.getKey(), DateUtil.formatTimeShort(now - time), e.getValue().getFormatted()); + Message.LOG_ENTRY.send(sender, + e.getKey(), + DateUtil.formatTimeShort(now - time), + e.getValue().getActorFriendlyString(), + Character.toString(e.getValue().getType().getCode()), + e.getValue().getActedFriendlyString(), + e.getValue().getAction() + ); } return CommandResult.SUCCESS; diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java index 36bbe7c16..341cf3935 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/impl/log/LogUserHistory.java @@ -48,6 +48,8 @@ import java.util.SortedMap; import java.util.UUID; public class LogUserHistory extends SubCommand { + private static final int ENTRIES_PER_PAGE = 10; + public LogUserHistory(LocaleManager locale) { super(CommandSpec.LOG_USER_HISTORY.spec(locale), "userhistory", CommandPermission.LOG_USER_HISTORY, Predicates.notInRange(1, 2)); } @@ -96,14 +98,14 @@ public class LogUserHistory extends SubCommand { } if (page == Integer.MIN_VALUE) { - page = log.getUserHistoryMaxPages(uuid); + page = log.getUserHistoryMaxPages(uuid, ENTRIES_PER_PAGE); } return showLog(page, uuid, sender, log); } private static CommandResult showLog(int page, UUID user, Sender sender, Log log) { - int maxPage = log.getUserHistoryMaxPages(user); + int maxPage = log.getUserHistoryMaxPages(user, ENTRIES_PER_PAGE); if (maxPage == 0) { Message.LOG_NO_ENTRIES.send(sender); return CommandResult.STATE_ERROR; @@ -114,14 +116,21 @@ public class LogUserHistory extends SubCommand { return CommandResult.INVALID_ARGS; } - SortedMap entries = log.getUserHistory(page, user); + SortedMap entries = log.getUserHistory(page, user, ENTRIES_PER_PAGE); String name = entries.values().stream().findAny().get().getActedName(); Message.LOG_HISTORY_USER_HEADER.send(sender, name, page, maxPage); + long now = DateUtil.unixSecondsNow(); for (Map.Entry e : entries.entrySet()) { long time = e.getValue().getTimestamp(); - long now = DateUtil.unixSecondsNow(); - Message.LOG_ENTRY.send(sender, e.getKey(), DateUtil.formatTimeShort(now - time), e.getValue().getFormatted()); + Message.LOG_ENTRY.send(sender, + e.getKey(), + DateUtil.formatTimeShort(now - time), + e.getValue().getActorFriendlyString(), + Character.toString(e.getValue().getType().getCode()), + e.getValue().getActedFriendlyString(), + e.getValue().getAction() + ); } return CommandResult.SUCCESS; diff --git a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java index a3efacb05..c7e7bbdac 100644 --- a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java +++ b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java @@ -62,7 +62,7 @@ public enum Message { LOG_INFO("&7&l[&bL&3P&7&l] &3{}", false), LOG_WARN("&7&l[&bLuck&3Perms&7&l] &c[WARN] {}", false), LOG_ERROR("&7&l[&bLuck&3Perms&7&l] &4[ERROR] {}", false), - LOG("&3LOG &3&l> {}", true), + LOG("&3LOG &3&l> &8(&e{}&8) [&a{}&8] (&b{}&8)&f: {}", true), VERBOSE_LOG("&3VB &3&l> {}", true), EXPORT_LOG("&3EXPORT &3&l> &f{}", true), EXPORT_LOG_PROGRESS("&3EXPORT &3&l> &7{}", true), @@ -117,8 +117,8 @@ public enum Message { SEARCH_SEARCHING_MEMBERS("&aSearching for users and groups who inherit from &b{}&a...", true), SEARCH_RESULT("&aFound &b{}&a entries from &b{}&a users and &b{}&a groups.", true), - SEARCH_SHOWING_USERS("&bShowing user entries: &7(showing page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), - SEARCH_SHOWING_GROUPS("&bShowing group entries: &7(showing page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), + SEARCH_SHOWING_USERS("&bShowing user entries: &7(page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), + SEARCH_SHOWING_GROUPS("&bShowing group entries: &7(page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), APPLY_EDITS_INVALID_CODE("&cInvalid code. &7({})", true), APPLY_EDITS_UNABLE_TO_READ("&cUnable to read data using the given code. &7({})", true), @@ -202,10 +202,10 @@ public enum Message { TRACKS_LIST("&aTracks: {}", true), - PERMISSION_INFO("&b{}'s Permissions: &7(showing page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), + PERMISSION_INFO("&b{}'s Permissions: &7(page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), PERMISSION_INFO_NO_DATA("&b{}&a does not have any permissions set.", true), - PARENT_INFO("&b{}'s Parents: &7(showing page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), + PARENT_INFO("&b{}'s Parents: &7(page &f{}&7 of &f{}&7 - &f{}&7 entries)", true), PARENT_INFO_NO_DATA("&b{}&a does not have any parents defined.", true), LIST_TRACKS("&b{}'s Tracks:", true), @@ -387,7 +387,12 @@ public enum Message { LOG_INVALID_PAGE("&cInvalid page number.", true), LOG_INVALID_PAGE_RANGE("&cInvalid page number. Please enter a value between &41&c and &4{}&c.", true), LOG_NO_ENTRIES("&bNo log entries to show.", true), - LOG_ENTRY("&b#{} -> &8(&7{} ago&8) {}", true), + + LOG_ENTRY( + "{PREFIX}&b#{} &8(&7{} ago&8) &8(&e{}&8) [&a{}&8] (&b{}&8)" + "\n" + + "{PERFIX}&7> &f{}", + false + ), LOG_NOTIFY_CONSOLE("&cCannot toggle notifications for console.", true), LOG_NOTIFY_TOGGLE_ON("&aEnabled&b logging output.", true), @@ -396,14 +401,12 @@ public enum Message { LOG_NOTIFY_ALREADY_OFF("&cYou aren't currently receiving notifications.", true), LOG_NOTIFY_UNKNOWN("&cState unknown. Expecting \"on\" or \"off\".", true), - LOG_SEARCH_HEADER("&aShowing recent actions for query &b{} &a(page &f{}&a of &f{}&a)", true), - - LOG_RECENT_HEADER("&aShowing recent actions (page &f{}&a of &f{}&a)", true), - LOG_RECENT_BY_HEADER("&aShowing recent actions by &b{} &a(page &f{}&a of &f{}&a)", true), - - LOG_HISTORY_USER_HEADER("&aShowing history for user &b{} &a(page &f{}&a of &f{}&a)", true), - LOG_HISTORY_GROUP_HEADER("&aShowing history for group &b{} &a(page &f{}&a of &f{}&a)", true), - LOG_HISTORY_TRACK_HEADER("&aShowing history for track &b{} &a(page &f{}&a of &f{}&a)", true), + LOG_SEARCH_HEADER("&aShowing recent actions for query &b{} &7(page &f{}&7 of &f{}&7)", true), + LOG_RECENT_HEADER("&aShowing recent actions &7(page &f{}&7 of &f{}&7)", true), + LOG_RECENT_BY_HEADER("&aShowing recent actions by &b{} &7(page &f{}&7 of &f{}&7)", true), + LOG_HISTORY_USER_HEADER("&aShowing history for user &b{} &7(page &f{}&7 of &f{}&7)", true), + LOG_HISTORY_GROUP_HEADER("&aShowing history for group &b{} &7(page &f{}&7 of &f{}&7)", true), + LOG_HISTORY_TRACK_HEADER("&aShowing history for track &b{} &7(page &f{}&7 of &f{}&7)", true), LOG_EXPORT_ALREADY_EXISTS("&cError: File &4{}&c already exists.", true), LOG_EXPORT_NOT_WRITABLE("&cError: File &4{}&c is not writable.", true),