From bce96e3b61edd925aa15bbdaa82141b4074dcc56 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Wed, 17 Jun 2015 16:26:43 -0700 Subject: [PATCH] Add server.object_is_valid --- .../aufdemrand/denizen/objects/dLocation.java | 20 ++++++++++++++----- .../commands/BukkitCommandRegistry.java | 2 +- .../denizen/tags/core/ServerTags.java | 14 +++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/objects/dLocation.java b/src/main/java/net/aufdemrand/denizen/objects/dLocation.java index bd753dee96..7a614403ad 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/dLocation.java +++ b/src/main/java/net/aufdemrand/denizen/objects/dLocation.java @@ -139,7 +139,9 @@ public static dLocation valueOf(String string, TagContext context) { Double.valueOf(split[0]), Double.valueOf(split[1])); } catch (Exception e) { - dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + if (context == null || context.debug) { + dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + } return null; } if (split.length == 3) @@ -157,7 +159,9 @@ public static dLocation valueOf(String string, TagContext context) { Double.valueOf(split[1]), Double.valueOf(split[2])); } catch(Exception e) { - dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + if (context == null || context.debug) { + dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + } return null; } @@ -170,7 +174,9 @@ else if (split.length == 4) Double.valueOf(split[1]), Double.valueOf(split[2])); } catch(Exception e) { - dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + if (context == null || context.debug) { + dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + } return null; } @@ -188,11 +194,15 @@ else if (split.length == 6) Float.valueOf(split[4])); } catch(Exception e) { - dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + if (context == null || context.debug) { + dB.echoError("valueOf dLocation returning null: " + string + "(internal exception:" + e.getMessage() + ")"); + } return null; } - dB.log("valueOf dLocation returning null: " + string); + if (context == null || context.debug) { + dB.log("valueOf dLocation returning null: " + string); + } return null; } diff --git a/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java b/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java index 20390bf130..edfd9133ca 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/commands/BukkitCommandRegistry.java @@ -2868,7 +2868,7 @@ public void registerCoreMembers() { // @Required 2 // @Stable stable // @Short Edits a YAML configuration file. - // @Author aufdemrand + // @Author aufdemrand, mcmonkey // @Group core // @Description // Edits a YAML configuration file. 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 51247e534f..00e29f0564 100644 --- a/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java +++ b/src/main/java/net/aufdemrand/denizen/tags/core/ServerTags.java @@ -2,6 +2,7 @@ import net.aufdemrand.denizen.Denizen; import net.aufdemrand.denizen.Settings; +import net.aufdemrand.denizen.tags.BukkitTagContext; import net.aufdemrand.denizencore.events.OldEventManager; import net.aufdemrand.denizencore.events.ScriptEvent; import net.aufdemrand.denizencore.objects.*; @@ -101,6 +102,18 @@ public void serverTag(ReplaceableTagEvent event) { if (!event.matches("server", "svr", "global") || event.replaced()) return; Attribute attribute = event.getAttributes().fulfill(1); + // <--[tag] + // @attribute ]> + // @returns Element(boolean) + // @description + // returns whether the object is a valid object (non-null), as well as not an Element. + // --> + if (attribute.startsWith("object_is_valid")) { + dObject o = ObjectFetcher.pickObjectFor(attribute.getContext(1), new BukkitTagContext(null, null, false, null, false, null)); + event.setReplaced(new Element(!(o == null || o instanceof Element)).getAttribute(attribute.fulfill(1))); + return; + } + // <--[tag] // @attribute ]> // @returns Element(boolean) @@ -115,6 +128,7 @@ public void serverTag(ReplaceableTagEvent event) { return; } event.setReplaced(new Element(FlagManager.serverHasFlag(flag_name)).getAttribute(attribute.fulfill(1))); + return; } // <--[tag]