From 203702aeec047473f22181e7b605f9169505ecae Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Fri, 20 Mar 2015 18:01:36 -0700 Subject: [PATCH] Add server.match_offline_player --- .../denizen/tags/core/ServerTags.java | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java b/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java index 466da23ab2..18a40a3f3d 100644 --- a/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java +++ b/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java @@ -534,9 +534,35 @@ else if (player.getName().toLowerCase().contains(matchInput) && matchPlayer == n } } - if (matchPlayer == null) { - event.setReplaced("null"); - } else { + if (matchPlayer != null) { + event.setReplaced(new dPlayer(matchPlayer).getAttribute(attribute.fulfill(1))); + } + + return; + } + + // <--[tag] + // @attribute ]> + // @returns dPlayer + // @description + // Returns any player (online or offline) that best matches the input name. + // EG, in a group of 'bo', 'bob', and 'bobby'... input 'bob' returns p@bob, + // input 'bobb' returns p@bobby, and input 'b' returns p@bo. + // --> + if (attribute.startsWith("match_offline_player") && attribute.hasContext(1)) { + UUID matchPlayer = null; + String matchInput = attribute.getContext(1).toLowerCase(); + for (Map.Entry entry: dPlayer.getAllPlayers().entrySet()) { + if (entry.getKey().toLowerCase().equals(matchInput)) { + matchPlayer = entry.getValue(); + break; + } + else if (entry.getKey().toLowerCase().contains(matchInput) && matchPlayer == null) { + matchPlayer = entry.getValue(); + } + } + + if (matchPlayer != null) { event.setReplaced(new dPlayer(matchPlayer).getAttribute(attribute.fulfill(1))); }