From e9472466990d833394d724bf0c3870d12ae51e48 Mon Sep 17 00:00:00 2001 From: Reider745 <70357814+Reider745@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:30:37 +0300 Subject: [PATCH] Fixed: call EntityRemoved, when entity not spawned --- src/main/java/com/reider745/event/EventListener.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/reider745/event/EventListener.java b/src/main/java/com/reider745/event/EventListener.java index 4dc8ccfc..50a4df19 100644 --- a/src/main/java/com/reider745/event/EventListener.java +++ b/src/main/java/com/reider745/event/EventListener.java @@ -231,6 +231,8 @@ public class EventListener implements Listener { }); } + private final Set ENTITIES = Collections.synchronizedSet(new HashSet<>()); + @EventHandler(priority = EventPriority.HIGHEST) public void onEntitySpawn(EntitySpawnEvent event) { final Entity entity = event.getEntity(); @@ -242,15 +244,22 @@ public class EventListener implements Listener { NativeCallback.onExpOrbsSpawned(entity.getLevel(), xpOrb.getExp(), (float) entity.x, (float) entity.y, (float) entity.z, id); } + + ENTITIES.add(id); NativeCallback.onEntityAdded(id); } @EventHandler(priority = EventPriority.HIGHEST) public void onEntityDespawn(EntityDespawnEvent event) { final Entity entity = event.getEntity(); + final long id = EntityMethod.getIdForEntity(entity); EntityMotion.remove(entity); - if(entity.isValid()) NativeCallback.onEntityRemoved(EntityMethod.getIdForEntity(entity)); + + if(entity.isValid() && ENTITIES.contains(id)) { + ENTITIES.remove(id); + NativeCallback.onEntityRemoved(id); + } } public static int convertDamageCauseToEnum(DamageCause cause) {