Fix: nocache parameter showed entries from the previous lookup

This commit is contained in:
Brokkonaut
2018-09-22 14:20:13 +02:00
parent b1e0f91bd7
commit 96c9b694b8

View File

@ -371,19 +371,24 @@ public class CommandsHandler implements CommandExecutor {
}
private static void showPage(CommandSender sender, int page) {
final Session session = getSession(sender);
if (session.lookupCache != null && session.lookupCache.length > 0) {
showPage(sender, page, getSession(sender).lookupCache, true);
}
private static void showPage(CommandSender sender, int page, LookupCacheElement[] lookupElements, boolean setSessionPage) {
if (lookupElements != null && lookupElements.length > 0) {
final int startpos = (page - 1) * linesPerPage;
if (page > 0 && startpos <= session.lookupCache.length - 1) {
final int stoppos = startpos + linesPerPage >= session.lookupCache.length ? session.lookupCache.length - 1 : startpos + linesPerPage - 1;
final int numberOfPages = (int) Math.ceil(session.lookupCache.length / (double) linesPerPage);
if (page > 0 && startpos <= lookupElements.length - 1) {
final int stoppos = startpos + linesPerPage >= lookupElements.length ? lookupElements.length - 1 : startpos + linesPerPage - 1;
final int numberOfPages = (int) Math.ceil(lookupElements.length / (double) linesPerPage);
if (numberOfPages != 1) {
sender.sendMessage(ChatColor.DARK_AQUA + "Page " + page + "/" + numberOfPages);
}
for (int i = startpos; i <= stoppos; i++) {
sender.sendMessage(ChatColor.GOLD + (session.lookupCache[i].getLocation() != null ? "(" + (i + 1) + ") " : "") + session.lookupCache[i].getMessage());
sender.sendMessage(ChatColor.GOLD + (lookupElements[i].getLocation() != null ? "(" + (i + 1) + ") " : "") + lookupElements[i].getMessage());
}
if (setSessionPage) {
getSession(sender).page = page;
}
session.page = page;
} else {
sender.sendMessage(ChatColor.RED + "There isn't a page '" + page + "'");
}
@ -485,8 +490,9 @@ public class CommandsHandler implements CommandExecutor {
while (rs.next()) {
blockchanges.add(factory.getLookupCacheElement(rs));
}
LookupCacheElement[] blockChangeArray = blockchanges.toArray(new LookupCacheElement[blockchanges.size()]);
if (!params.noCache) {
getSession(sender).lookupCache = blockchanges.toArray(new LookupCacheElement[blockchanges.size()]);
getSession(sender).lookupCache = blockChangeArray;
}
if (blockchanges.size() > linesPerPage) {
sender.sendMessage(ChatColor.DARK_AQUA.toString() + blockchanges.size() + " changes found." + (blockchanges.size() == linesLimit ? " Use 'limit -1' to see all changes." : ""));
@ -498,7 +504,11 @@ public class CommandsHandler implements CommandExecutor {
sender.sendMessage(ChatColor.GOLD + "Created - Destroyed - " + (params.sum == SummarizationMode.TYPES ? "Block" : "Player"));
}
}
showPage(sender, 1);
if (!params.noCache) {
showPage(sender, 1);
} else {
showPage(sender, 1, blockChangeArray, false);
}
} else {
sender.sendMessage(ChatColor.DARK_AQUA + "No results found.");
if (!params.noCache) {