From e3ddf1191bdc3abb1da3241441bd5a3a60f49708 Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Wed, 23 Dec 2020 13:06:21 -0800 Subject: [PATCH] health_data slight cleanup, and event entity match opti --- .../denizen/events/BukkitScriptEvent.java | 60 ++++++++++--------- .../properties/entity/EntityHealth.java | 17 +++++- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java index 5d2885767d..ba38901596 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java @@ -732,35 +732,37 @@ public boolean tryEntity(EntityTag entity, String comparedto) { } Entity bEntity = entity.getBukkitEntity(); comparedto = CoreUtilities.toLowerCase(comparedto); - if (comparedto.equals("entity")) { - return true; - } - else if (comparedto.equals("npc")) { - return entity.isCitizensNPC(); - } - else if (comparedto.equals("player")) { - return entity.isPlayer(); - } - else if (comparedto.equals("vehicle")) { - return bEntity instanceof Vehicle; - } - else if (comparedto.equals("fish")) { - return bEntity instanceof Fish; - } - else if (comparedto.equals("projectile")) { - return bEntity instanceof Projectile; - } - else if (comparedto.equals("hanging")) { - return bEntity instanceof Hanging; - } - else if (comparedto.equals("monster")) { - return bEntity instanceof Monster; - } - else if (comparedto.equals("mob")) { - return bEntity instanceof Mob; - } - else if (comparedto.equals("animal")) { - return bEntity instanceof Animals; + if (specialEntityMatchables.contains(comparedto)) { + if (comparedto.equals("entity")) { + return true; + } + else if (comparedto.equals("npc")) { + return entity.isCitizensNPC(); + } + else if (comparedto.equals("player")) { + return entity.isPlayer(); + } + else if (comparedto.equals("vehicle")) { + return bEntity instanceof Vehicle; + } + else if (comparedto.equals("fish")) { + return bEntity instanceof Fish; + } + else if (comparedto.equals("projectile")) { + return bEntity instanceof Projectile; + } + else if (comparedto.equals("hanging")) { + return bEntity instanceof Hanging; + } + else if (comparedto.equals("monster")) { + return bEntity instanceof Monster; + } + else if (comparedto.equals("mob")) { + return bEntity instanceof Mob; + } + else if (comparedto.equals("animal")) { + return bEntity instanceof Animals; + } } MatchHelper matcher = createMatcher(comparedto); if (entity.getEntityScript() != null && matcher.doesMatch(entity.getEntityScript())) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityHealth.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityHealth.java index de0a71e7a0..1259400ea4 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityHealth.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityHealth.java @@ -30,7 +30,7 @@ public static EntityHealth getFrom(ObjectTag entity) { } public static final String[] handledTags = new String[] { - "health", "formatted_health", "health_max", "health_percentage" + "health", "formatted_health", "health_max", "health_percentage", "health_data" }; public static final String[] handledMechs = new String[] { @@ -45,7 +45,7 @@ private EntityHealth(EntityTag ent) { @Override public String getPropertyString() { - return entity.getLivingEntity().getHealth() + "/" + entity.getLivingEntity().getMaxHealth(); + return CoreUtilities.doubleToString(entity.getLivingEntity().getHealth()) + "/" + CoreUtilities.doubleToString(entity.getLivingEntity().getMaxHealth()); } @Override @@ -142,6 +142,19 @@ public ObjectTag getObjectAttribute(Attribute attribute) { .getObjectAttribute(attribute.fulfill(2)); } + // <--[tag] + // @attribute + // @returns ElementTag) + // @mechanism EntityTag.health + // @group attributes + // @description + // Returns the current health data of the entity, in the format of current/max. + // --> + if (attribute.startsWith("health_data")) { + return new ElementTag(getPropertyString()) + .getObjectAttribute(attribute.fulfill(1)); + } + // <--[tag] // @attribute // @returns ElementTag(Decimal)