From 5c93393849bd5ee10a91a727b1a3dbd96f34586c Mon Sep 17 00:00:00 2001 From: Morphan1 Date: Sun, 21 Dec 2014 02:43:37 -0500 Subject: [PATCH] Add ]> --- .../objects/notable/NotableManager.java | 4 +++ .../denizen/tags/core/UtilTags.java | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/net/aufdemrand/denizen/objects/notable/NotableManager.java b/src/main/java/net/aufdemrand/denizen/objects/notable/NotableManager.java index 08eb882808..c113f0c6b4 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/notable/NotableManager.java +++ b/src/main/java/net/aufdemrand/denizen/objects/notable/NotableManager.java @@ -228,4 +228,8 @@ public static String getClassId(Class notable) { else return null; } + + public static Map getReverseClassIdMap() { + return reverse_objects; + } } diff --git a/src/main/java/net/aufdemrand/denizen/tags/core/UtilTags.java b/src/main/java/net/aufdemrand/denizen/tags/core/UtilTags.java index ab45cac9b8..04c35fd9cc 100644 --- a/src/main/java/net/aufdemrand/denizen/tags/core/UtilTags.java +++ b/src/main/java/net/aufdemrand/denizen/tags/core/UtilTags.java @@ -3,6 +3,8 @@ import net.aufdemrand.denizen.Denizen; import net.aufdemrand.denizen.Settings; import net.aufdemrand.denizen.events.EventManager; +import net.aufdemrand.denizen.objects.notable.Notable; +import net.aufdemrand.denizen.objects.notable.NotableManager; import net.aufdemrand.denizen.tags.ReplaceableTagEvent; import net.aufdemrand.denizen.flags.FlagManager; import net.aufdemrand.denizen.npc.traits.AssignmentTrait; @@ -194,6 +196,35 @@ public void serverTag(ReplaceableTagEvent event) { : searchFlags.getAttribute(attribute.fulfill(1))); } + // <--[tag] + // @attribute ]> + // @returns dList(Notable) + // @description + // Lists all saved Notables currently on the server. + // Optionally, specify a type to search for. + // Valid types: locations, cuboids, ellipsoids, items, inventories + // --> + if (attribute.startsWith("list_notables")) { + dList allNotables = new dList(); + if (attribute.hasContext(1)) { + String type = CoreUtilities.toLowerCase(attribute.getContext(1)); + types: for (Map.Entry typeClass : NotableManager.getReverseClassIdMap().entrySet()) { + if (type.equals(CoreUtilities.toLowerCase(typeClass.getKey()))) { + for (Object notable : NotableManager.getAllType(typeClass.getValue())) { + allNotables.add(((dObject) notable).identify()); + } + break types; + } + } + } + else { + for (Notable notable : NotableManager.notableObjects.values()) { + allNotables.add(((dObject) notable).identify()); + } + } + event.setReplaced(allNotables.getAttribute(attribute.fulfill(1))); + } + // <--[tag] // @attribute // @returns Duration