From 91315b10c87db5c05a0241eb2ff1186d5e2fab61 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Fri, 21 Sep 2018 22:22:52 +0200 Subject: [PATCH] New param "nocache" to prevent replacing the lookup cache (useful for tools) --- .../java/de/diddiz/LogBlock/CommandsHandler.java | 13 ++++++++++--- src/main/java/de/diddiz/LogBlock/QueryParams.java | 7 +++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/CommandsHandler.java b/src/main/java/de/diddiz/LogBlock/CommandsHandler.java index 42e841a..554fc88 100755 --- a/src/main/java/de/diddiz/LogBlock/CommandsHandler.java +++ b/src/main/java/de/diddiz/LogBlock/CommandsHandler.java @@ -97,6 +97,7 @@ public class CommandsHandler implements CommandExecutor { sender.sendMessage(ChatColor.GOLD + "sum [none|blocks|players] -- Sums the result"); sender.sendMessage(ChatColor.GOLD + "asc, desc -- Changes the order of the displayed log"); sender.sendMessage(ChatColor.GOLD + "coords -- Shows coordinates for each block"); + sender.sendMessage(ChatColor.GOLD + "nocache -- Don't set the lookup cache"); sender.sendMessage(ChatColor.GOLD + "silent -- Displays lesser messages"); } else if (command.equals("permissions")) { sender.sendMessage(ChatColor.DARK_AQUA + "You've got the following permissions:"); @@ -484,7 +485,9 @@ public class CommandsHandler implements CommandExecutor { while (rs.next()) { blockchanges.add(factory.getLookupCacheElement(rs)); } - getSession(sender).lookupCache = blockchanges.toArray(new LookupCacheElement[blockchanges.size()]); + if (!params.noCache) { + getSession(sender).lookupCache = blockchanges.toArray(new LookupCacheElement[blockchanges.size()]); + } 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 +501,9 @@ public class CommandsHandler implements CommandExecutor { showPage(sender, 1); } else { sender.sendMessage(ChatColor.DARK_AQUA + "No results found."); - getSession(sender).lookupCache = null; + if (!params.noCache) { + getSession(sender).lookupCache = null; + } } } catch (final Exception ex) { if (logblock.isCompletelyEnabled() || !(ex instanceof SQLException)) { @@ -702,7 +707,9 @@ public class CommandsHandler implements CommandExecutor { return; } editor.start(); - getSession(sender).lookupCache = editor.errors; + if (!params.noCache) { + getSession(sender).lookupCache = editor.errors; + } sender.sendMessage(ChatColor.GREEN + "Rollback finished successfully (" + editor.getElapsedTime() + " ms, " + editor.getSuccesses() + "/" + changes + " blocks" + (editor.getErrors() > 0 ? ", " + ChatColor.RED + editor.getErrors() + " errors" + ChatColor.GREEN : "") + (editor.getBlacklistCollisions() > 0 ? ", " + editor.getBlacklistCollisions() + " blacklist collisions" : "") + ")"); if (!params.silent && askClearLogAfterRollback && logblock.hasPermission(sender, "logblock.clearlog") && sender instanceof Player) { Thread.sleep(1000); diff --git a/src/main/java/de/diddiz/LogBlock/QueryParams.java b/src/main/java/de/diddiz/LogBlock/QueryParams.java index 196f306..5314268 100644 --- a/src/main/java/de/diddiz/LogBlock/QueryParams.java +++ b/src/main/java/de/diddiz/LogBlock/QueryParams.java @@ -51,6 +51,7 @@ public final class QueryParams implements Cloneable { keywords.put("victim", 1); keywords.put("both", 0); keywords.put("force", 0); + keywords.put("nocache", 0); } public BlockChangeType bct = BlockChangeType.BOTH; public int limit = -1, before = 0, since = 0, radius = -1; @@ -60,7 +61,7 @@ public final class QueryParams implements Cloneable { public List killers = new ArrayList(); public List victims = new ArrayList(); public boolean excludePlayersMode = false, excludeKillersMode = false, excludeVictimsMode = false, excludeBlocksMode = false, prepareToolQuery = false, silent = false, noForcedLimit = false; - public boolean forceReplace = false; + public boolean forceReplace = false, noCache = false; public CuboidRegion sel = null; public SummarizationMode sum = SummarizationMode.NONE; public List types = new ArrayList(); @@ -806,6 +807,8 @@ public final class QueryParams implements Cloneable { silent = true; } else if (param.equals("force")) { forceReplace = true; + } else if (param.equals("nocache")) { + noCache = true; } else if (param.equals("search") || param.equals("match")) { if (values.length == 0) { throw new IllegalArgumentException("No arguments for '" + param + "'"); @@ -831,7 +834,7 @@ public final class QueryParams implements Cloneable { if (validate) { validate(); } - if (session != null) { + if (session != null && !noCache) { session.lastQuery = clone(); } }