From c30aba4f900ccfd206549006a7aad52899f74cf0 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Wed, 1 Aug 2018 02:36:06 +0200 Subject: [PATCH] Validate config tool params on execution Fixes #642 #686 --- .../java/de/diddiz/LogBlock/QueryParams.java | 16 +++++++++++++--- .../java/de/diddiz/LogBlock/config/Config.java | 2 +- .../diddiz/LogBlock/listeners/ToolListener.java | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/diddiz/LogBlock/QueryParams.java b/src/main/java/de/diddiz/LogBlock/QueryParams.java index 55e9656..f014628 100644 --- a/src/main/java/de/diddiz/LogBlock/QueryParams.java +++ b/src/main/java/de/diddiz/LogBlock/QueryParams.java @@ -556,6 +556,10 @@ public final class QueryParams implements Cloneable { } public void parseArgs(CommandSender sender, List args) throws IllegalArgumentException { + parseArgs(sender, args, true); + } + + public void parseArgs(CommandSender sender, List args, boolean validate) throws IllegalArgumentException { if (args == null || args.isEmpty()) { throw new IllegalArgumentException("No parameters specified."); } @@ -775,6 +779,15 @@ public final class QueryParams implements Cloneable { } i += values.length; } + if (validate) { + validate(); + } + if (session != null) { + session.lastQuery = clone(); + } + } + + public void validate() { if (bct == BlockChangeType.KILLS) { if (world == null) { throw new IllegalArgumentException("No world specified"); @@ -794,9 +807,6 @@ public final class QueryParams implements Cloneable { if (bct == BlockChangeType.CHAT && !Config.isLogging(Logging.CHAT)) { throw new IllegalArgumentException("Chat is not logged"); } - if (session != null) { - session.lastQuery = clone(); - } } public void setLocation(Location loc) { diff --git a/src/main/java/de/diddiz/LogBlock/config/Config.java b/src/main/java/de/diddiz/LogBlock/config/Config.java index 138ada5..51c6048 100644 --- a/src/main/java/de/diddiz/LogBlock/config/Config.java +++ b/src/main/java/de/diddiz/LogBlock/config/Config.java @@ -228,7 +228,7 @@ public class Config { final boolean canDrop = tSec.getBoolean("canDrop", false); final QueryParams params = new QueryParams(logblock); params.prepareToolQuery = true; - params.parseArgs(getConsoleSender(), Arrays.asList(tSec.getString("params").split(" "))); + params.parseArgs(getConsoleSender(), Arrays.asList(tSec.getString("params").split(" ")), false); final ToolMode mode = ToolMode.valueOf(tSec.getString("mode").toUpperCase()); final PermissionDefault pdef = PermissionDefault.valueOf(tSec.getString("permissionDefault").toUpperCase()); tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, canDrop, params, mode, pdef)); diff --git a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java index d10cc76..fda737e 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/ToolListener.java @@ -69,6 +69,7 @@ public class ToolListener implements Listener { } } try { + params.validate(); if (toolData.mode == ToolMode.ROLLBACK) { handler.new CommandRollback(player, params, true); } else if (toolData.mode == ToolMode.REDO) {