diff --git a/src/main/java/net/aufdemrand/denizen/Denizen.java b/src/main/java/net/aufdemrand/denizen/Denizen.java index 706bc431f3..dbee438a58 100644 --- a/src/main/java/net/aufdemrand/denizen/Denizen.java +++ b/src/main/java/net/aufdemrand/denizen/Denizen.java @@ -1284,6 +1284,7 @@ public void refreshScriptContainers() { ItemScriptHelper.item_scripts.clear(); ItemScriptHelper.item_scripts_by_hash_id.clear(); InventoryScriptHelper.inventory_scripts.clear(); + tT = Integer.MAX_VALUE; } @Override @@ -1382,6 +1383,16 @@ public TagContext getTagContext(ScriptEntry scriptEntry) { public ScriptEntryData getEmptyScriptEntryData() { return new BukkitScriptEntryData(null, null); } + + int tT = Integer.MAX_VALUE; + + @Override + public int getTagTimeout() { + if (tT == Integer.MAX_VALUE) { + tT = Settings.tagTimeout(); + } + return tT; + } } diff --git a/src/main/java/net/aufdemrand/denizen/Settings.java b/src/main/java/net/aufdemrand/denizen/Settings.java index b0175e6c54..ef82efbfb0 100644 --- a/src/main/java/net/aufdemrand/denizen/Settings.java +++ b/src/main/java/net/aufdemrand/denizen/Settings.java @@ -377,4 +377,9 @@ public static int chatHistoryMaxMessages() { return DenizenAPI.getCurrentInstance().getConfig() .getInt("Tags.Chat history.Max messages", 10); } + + public static int tagTimeout() { + return DenizenAPI.getCurrentInstance().getConfig() + .getInt("Tags.Timeout", 10); + } } diff --git a/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java b/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java index 19b94f0dc1..ed375baf03 100644 --- a/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java +++ b/src/main/java/net/aufdemrand/denizen/events/entity/EntityDeathScriptEvent.java @@ -102,7 +102,7 @@ public boolean applyDetermination(ScriptContainer container, String determinatio // finish this String lower = CoreUtilities.toLowerCase(determination); - // Deprecated?? This isn't listed in the meta + // Deprecated if (lower.startsWith("drops ")) { lower = lower.substring(6); } @@ -138,10 +138,8 @@ else if (aH.Argument.valueOf(lower).matchesArgumentList(dItem.class)) { } // String containing new Death Message - else if (!lower.equals("none")) { - if (event instanceof PlayerDeathEvent) { - message = new Element(determination); - } + else if (event instanceof PlayerDeathEvent) { + message = new Element(determination); } else { return super.applyDetermination(container, determination); @@ -237,7 +235,7 @@ public void onEntityDeath(EntityDeathEvent event) { } } } - if (message != null) { + if (message != null && subEvent != null) { subEvent.setDeathMessage(message.asString()); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7feb8f4bb5..b689b39503 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -106,6 +106,8 @@ Commands: # ALSO: Always read scripts you download for anything suspicious looking, EG the log command, the file_delete mechanism, ... Tags: + # How long a tag can parse before force-closing the tag parser engine. Set to 0 to disable tag parse timing entirely. + Timeout: 10 # Settings for tags like cuboid.get_blocks, location.find.blocks, ... Block tags: # How many blocks can be read, max, before stopping the tag in place