From dba64ef5f822034ad7779fb3c6ffc7cefa3bdaee Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Fri, 16 Mar 2018 12:58:52 -0700 Subject: [PATCH] Fix mechanism stuff --- .../java/net/aufdemrand/denizen/objects/dEntity.java | 5 +++++ .../denizen/utilities/entity/SpawnEntityHelper.java | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/java/net/aufdemrand/denizen/objects/dEntity.java b/plugin/src/main/java/net/aufdemrand/denizen/objects/dEntity.java index d81c7bf3e3..6cfc6844bb 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/objects/dEntity.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/objects/dEntity.java @@ -47,6 +47,11 @@ public class dEntity implements dObject, Adjustable { // STATIC METHODS ///////////////// + // List a mechanism here if it can be safely run before spawn. + public static HashSet earlyValidMechanisms = new HashSet(Arrays.asList( + "max_health", "health_data", "health" + )); + private static final Map rememberedEntities = new HashMap(); public static void rememberEntity(Entity entity) { diff --git a/plugin/src/main/java/net/aufdemrand/denizen/utilities/entity/SpawnEntityHelper.java b/plugin/src/main/java/net/aufdemrand/denizen/utilities/entity/SpawnEntityHelper.java index d60a2b7cc6..984eae93cc 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/utilities/entity/SpawnEntityHelper.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/utilities/entity/SpawnEntityHelper.java @@ -2,6 +2,7 @@ import net.aufdemrand.denizen.objects.dEntity; import net.aufdemrand.denizencore.objects.Mechanism; +import net.aufdemrand.denizencore.utilities.CoreUtilities; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -20,10 +21,12 @@ public static Entity spawn(Location location, EntityType bukk @Override public void accept(Entity bukkitEntity) { dEntity entity = new dEntity(bukkitEntity); - for (Mechanism mechanism : mechanisms) { - entity.adjust(mechanism); + for (Mechanism mechanism : new ArrayList(mechanisms)) { + if (dEntity.earlyValidMechanisms.contains(CoreUtilities.toLowerCase(mechanism.getName()))) { + entity.adjust(mechanism); + mechanisms.remove(mechanism); + } } - mechanisms.clear(); } }; return location.getWorld().spawn(location, (Class) bukkitEntityType.getEntityClass(), (Consumer) consumer);