From 5c1bf226045fe14db37a55bc42b5737db46aed7d Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Wed, 27 Jul 2011 03:01:29 +0200 Subject: [PATCH] Added player matching --- src/de/diddiz/LogBlock/QueryParams.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/de/diddiz/LogBlock/QueryParams.java b/src/de/diddiz/LogBlock/QueryParams.java index 4f5a7b4..6de8b4a 100644 --- a/src/de/diddiz/LogBlock/QueryParams.java +++ b/src/de/diddiz/LogBlock/QueryParams.java @@ -232,9 +232,16 @@ public class QueryParams implements Cloneable throw new IllegalArgumentException("No or wrong count of arguments for '" + param + "'"); for (final String playerName : values) if (playerName.length() > 0) { - if (playerName.startsWith("!")) + if (playerName.contains("!")) excludePlayersMode = true; - players.add(playerName.replaceAll("[^a-zA-Z0-9_]", "")); + if (playerName.contains("\"")) + players.add(playerName.replaceAll("[^a-zA-Z0-9_]", "")); + else { + final List matches = logblock.getServer().matchPlayer(playerName); + if (matches.size() > 1) + throw new IllegalArgumentException("Ambiguous playername '" + param + "'"); + players.add(matches.size() == 1 ? matches.get(0).getName() : playerName.replaceAll("[^a-zA-Z0-9_]", "")); + } } } else if (param.equals("block") || param.equals("type")) { if (values == null || values.length < 1) @@ -387,7 +394,7 @@ public class QueryParams implements Cloneable return null; final String[] values = new String[i - offset]; for (int j = offset; j < i; j++) - values[j - offset] = args.get(j).replace("\"", ""); + values[j - offset] = args.get(j); return values; }