From 06c75bea8b7b69f81efa8dbd842708c84ca462bd Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Mon, 2 Jun 2014 22:06:21 -0700 Subject: [PATCH 1/7] Add an EntityDespawnEvent. Fixes BUKKIT-5645 There was not any event fired for when an entity despawns for reasons other than death, EG when a non-persistent entity is removed because no player is nearby (RemoveWhenFarAway). This commit adds a simple entity-despawn-event to fill this void, to be used with a matching CB commit that will fire this event. --- .../event/entity/EntityDespawnEvent.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java new file mode 100644 index 0000000000..0092a2d7d7 --- /dev/null +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -0,0 +1,24 @@ +package org.bukkit.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.event.HandlerList; + +/** + * Thrown whenever an Entity is removed from the world + */ +public class EntityDespawnEvent extends EntityEvent { + private static final HandlerList handlers = new HandlerList(); + + public EntityDespawnEvent(final Entity entity) { + super(entity); + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} From e661a39102e583d889bbd90a6892730e405e2a75 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Mon, 2 Jun 2014 23:07:02 -0700 Subject: [PATCH 2/7] Clean JavaDoc formatting to match other events Or, at least, the majority of other events in the Entity category. It seems the standard is to use the word 'Called' and end with a period (full-stop/dot). --- src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index 0092a2d7d7..9d99516602 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -4,7 +4,7 @@ import org.bukkit.event.HandlerList; /** - * Thrown whenever an Entity is removed from the world + * Called whenever an Entity is removed from the world. */ public class EntityDespawnEvent extends EntityEvent { private static final HandlerList handlers = new HandlerList(); From 0d04471b606d82e0bbd0a3df7e8359ea1d8670cf Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Tue, 3 Jun 2014 16:22:29 -0700 Subject: [PATCH 3/7] Add a despawn reason for the entityDespawnEvent A way to identify *why* the entity despawned is very useful. --- .../event/entity/EntityDespawnEvent.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index 9d99516602..b7fb6fd721 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -8,9 +8,25 @@ */ public class EntityDespawnEvent extends EntityEvent { private static final HandlerList handlers = new HandlerList(); + private final DespawnReason despawnReason; public EntityDespawnEvent(final Entity entity) { super(entity); + despawnReason = DespawnReason.DEFAULT; + } + + public EntityDespawnEvent(final Entity entity, DespawnReason reason) { + super(entity); + despawnReason = reason; + } + + /** + * Gets the reason for why the creature is being despawned. + * + * @return A DespawnReason value detailing the reason for the entity being despawned + */ + public DespawnReason getDespawnReason() { + return despawnReason; } @Override @@ -21,4 +37,19 @@ public HandlerList getHandlers() { public static HandlerList getHandlerList() { return handlers; } + + /** + * An enum to specify the type of despawning + */ + public enum DespawnReason { + + /** + * When an entity despawns due to a chunk unload + */ + CHUNK_UNLOAD, + /** + * When an entity is missing a DespawnReason + */ + DEFAULT + } } From cd1991be9acdf8f107e0c5a4eeb30737cc2ac289 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Thu, 19 Jun 2014 23:41:50 -0700 Subject: [PATCH 4/7] Add DespawnReason.DEATH The entity despawned because it died --- src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index b7fb6fd721..8dc1f24ecc 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -47,6 +47,10 @@ public enum DespawnReason { * When an entity despawns due to a chunk unload */ CHUNK_UNLOAD, + /** + * When a living entity despawns because it died + */ + DEATH, /** * When an entity is missing a DespawnReason */ From 1adee4a0734d42c2d1cdd3c4b0914ed47b9d3400 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Fri, 20 Jun 2014 12:41:32 -0700 Subject: [PATCH 5/7] Add DespawnReason.REMOVED An extremely vague DespawnReason that could be caused by a variety of things... but it's better than just DEFAULT. --- .../java/org/bukkit/event/entity/EntityDespawnEvent.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index 8dc1f24ecc..584f2fd1c0 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -51,6 +51,11 @@ public enum DespawnReason { * When a living entity despawns because it died */ DEATH, + /** + * When an entity despawns because a plugin or GameRule removed it, + * or a non-living entity died (EG, ender crystal destroyed) + */ + REMOVED, /** * When an entity is missing a DespawnReason */ From 47521e0a9898c4acfd377a3f5e83225efbfcddab Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Sun, 20 Jul 2014 17:00:06 -0700 Subject: [PATCH 6/7] Fix formatting, some info --- .../event/entity/EntityDespawnEvent.java | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index 584f2fd1c0..d52ded8947 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -7,6 +7,29 @@ * Called whenever an Entity is removed from the world. */ public class EntityDespawnEvent extends EntityEvent { + /** + * An enum to specify the type of despawning + */ + public enum DespawnReason { + /** + * When an entity despawns due to a chunk unload + */ + CHUNK_UNLOAD, + /** + * When a living entity despawns because it died + */ + DEATH, + /** + * When an entity despawns because a plugin or GameRule removed it, + * or a non-living entity died (EG, ender crystal destroyed) + */ + REMOVED, + /** + * When an entity is missing a DespawnReason + */ + DEFAULT + } + private static final HandlerList handlers = new HandlerList(); private final DespawnReason despawnReason; @@ -21,9 +44,9 @@ public EntityDespawnEvent(final Entity entity, DespawnReason reason) { } /** - * Gets the reason for why the creature is being despawned. + * Gets the reason for why the entity is being despawned. * - * @return A DespawnReason value detailing the reason for the entity being despawned + * @return The {@link DespawnReason} detailing the reason for the entity being despawned */ public DespawnReason getDespawnReason() { return despawnReason; @@ -37,28 +60,4 @@ public HandlerList getHandlers() { public static HandlerList getHandlerList() { return handlers; } - - /** - * An enum to specify the type of despawning - */ - public enum DespawnReason { - - /** - * When an entity despawns due to a chunk unload - */ - CHUNK_UNLOAD, - /** - * When a living entity despawns because it died - */ - DEATH, - /** - * When an entity despawns because a plugin or GameRule removed it, - * or a non-living entity died (EG, ender crystal destroyed) - */ - REMOVED, - /** - * When an entity is missing a DespawnReason - */ - DEFAULT - } } From c840e7e7275a7e424b1dc65b568732cc7ab5db2d Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Sun, 20 Jul 2014 18:09:40 -0700 Subject: [PATCH 7/7] Fix spacing --- src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java index d52ded8947..6179893d8e 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDespawnEvent.java @@ -29,7 +29,7 @@ public enum DespawnReason { */ DEFAULT } - + private static final HandlerList handlers = new HandlerList(); private final DespawnReason despawnReason;