From dcfb9271e701c092e173f1270eff3525b70b92e0 Mon Sep 17 00:00:00 2001 From: Morphan1 Date: Wed, 9 Mar 2016 16:15:15 -0500 Subject: [PATCH] Fix #1325 --- .../scripts/containers/core/EntityScriptHelper.java | 7 ++++++- .../denizen/utilities/world/DenizenWorldAccess.java | 9 ++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/EntityScriptHelper.java b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/EntityScriptHelper.java index 513aad8589..9d6002a730 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/EntityScriptHelper.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/EntityScriptHelper.java @@ -54,10 +54,13 @@ public EntityScriptHelper() { @EventHandler public void onEntityDeath(EntityDeathEvent event) { - EntityDespawnScriptEvent.instance.entity = new dEntity(event.getEntity()); + Entity entity = event.getEntity(); + dEntity.rememberEntity(entity); + EntityDespawnScriptEvent.instance.entity = new dEntity(entity); EntityDespawnScriptEvent.instance.cause = new Element("DEATH"); EntityDespawnScriptEvent.instance.cancelled = false; EntityDespawnScriptEvent.instance.fire(); + dEntity.forgetEntity(entity); unlinkEntity(event.getEntity()); } @@ -94,10 +97,12 @@ public void onChunkUnload(ChunkUnloadEvent event) { // CraftBukkit: https://github.com/Bukkit/CraftBukkit/pull/1386 for (Entity ent : event.getChunk().getEntities()) { if (!(ent instanceof LivingEntity) || ((LivingEntity) ent).getRemoveWhenFarAway()) { + dEntity.rememberEntity(ent); EntityDespawnScriptEvent.instance.entity = new dEntity(ent); EntityDespawnScriptEvent.instance.cause = new Element("CHUNK_UNLOAD"); EntityDespawnScriptEvent.instance.cancelled = false; EntityDespawnScriptEvent.instance.fire(); + dEntity.forgetEntity(ent); unlinkEntity(ent); } } diff --git a/src/main/java/net/aufdemrand/denizen/utilities/world/DenizenWorldAccess.java b/src/main/java/net/aufdemrand/denizen/utilities/world/DenizenWorldAccess.java index 34c4ae4a13..d31974396b 100644 --- a/src/main/java/net/aufdemrand/denizen/utilities/world/DenizenWorldAccess.java +++ b/src/main/java/net/aufdemrand/denizen/utilities/world/DenizenWorldAccess.java @@ -45,16 +45,19 @@ public void a(Entity entity) { @Override public void b(Entity entity) { try { - if (dEntity.isCitizensNPC(entity.getBukkitEntity())) { + org.bukkit.entity.Entity bukkitEntity = entity.getBukkitEntity(); + if (dEntity.isCitizensNPC(bukkitEntity)) { return; } - if (entity.getBukkitEntity() instanceof LivingEntity && !((LivingEntity) entity.getBukkitEntity()).getRemoveWhenFarAway()) { + if (bukkitEntity instanceof LivingEntity && !((LivingEntity) bukkitEntity).getRemoveWhenFarAway()) { return; } - EntityDespawnScriptEvent.instance.entity = new dEntity(entity.getBukkitEntity()); + dEntity.rememberEntity(bukkitEntity); + EntityDespawnScriptEvent.instance.entity = new dEntity(bukkitEntity); EntityDespawnScriptEvent.instance.cause = new Element("OTHER"); EntityDespawnScriptEvent.instance.cancelled = false; EntityDespawnScriptEvent.instance.fire(); + dEntity.forgetEntity(bukkitEntity); } catch (Exception e) { dB.echoError(e);