From 01ca4cc35b14a5c1a47f415826b12a53b575ed26 Mon Sep 17 00:00:00 2001 From: culturespy Date: Thu, 3 Feb 2011 21:59:42 -0500 Subject: [PATCH] Added EXPLOSION_PRIMED event. --- src/main/java/org/bukkit/event/Event.java | 14 +++++++ .../bukkit/event/entity/EntityListener.java | 3 ++ .../event/entity/ExplosionPrimedEvent.java | 42 +++++++++++++++++++ .../bukkit/plugin/java/JavaPluginLoader.java | 5 +++ 4 files changed, 64 insertions(+) create mode 100755 src/main/java/org/bukkit/event/entity/ExplosionPrimedEvent.java diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java index 99af742e..ee9d2d53 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -533,6 +533,20 @@ public abstract class Event { */ ENTITY_EXPLODE (Category.LIVING_ENTITY), + /** + * Called when an entity has made a decision to explode. + * + * Provides an opportunity to act on the entity, change the explosion radius, + * or to change the fire-spread flag. + * + * Canceling the event negates the entity's decision to explode. + * For EntityCreeper, this resets the fuse but does not kill the Entity. + * For EntityFireball and EntityTNTPrimed....? + * + * @see org.bukkit.event.entity.EntityExplodeTriggerEvent + */ + EXPLOSION_PRIMED (Category.LIVING_ENTITY), + /** * Called when an entity targets another entity * diff --git a/src/main/java/org/bukkit/event/entity/EntityListener.java b/src/main/java/org/bukkit/event/entity/EntityListener.java index 3c38f1ed..fbc238b9 100644 --- a/src/main/java/org/bukkit/event/entity/EntityListener.java +++ b/src/main/java/org/bukkit/event/entity/EntityListener.java @@ -27,6 +27,9 @@ public class EntityListener implements Listener { public void onEntityExplode(EntityExplodeEvent event) { } + public void onExplosionPrimed(ExplosionPrimedEvent event) { + } + public void onEntityDeath(EntityDeathEvent event) { } diff --git a/src/main/java/org/bukkit/event/entity/ExplosionPrimedEvent.java b/src/main/java/org/bukkit/event/entity/ExplosionPrimedEvent.java new file mode 100755 index 00000000..cfb942a3 --- /dev/null +++ b/src/main/java/org/bukkit/event/entity/ExplosionPrimedEvent.java @@ -0,0 +1,42 @@ +package org.bukkit.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.event.Cancellable; + +public class ExplosionPrimedEvent extends EntityEvent implements Cancellable { + private boolean cancel; + private float radius; + private boolean fire; + + public ExplosionPrimedEvent(Type type, Entity what, float radius, boolean fire) { + super(type.EXPLOSION_PRIMED, what); + this.cancel = false; + this.radius = radius; + this.fire = fire; + } + + public boolean isCancelled() { + return cancel; + } + + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + public float getRadius() { + return radius; + } + + public void setRadius(float radius) { + this.radius = radius; + } + + public boolean getFire() { + return fire; + } + + public void setFire(boolean fire) { + this.fire = fire; + } + +} diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index 840b7cca..a266c719 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -343,6 +343,11 @@ public final class JavaPluginLoader implements PluginLoader { ((EntityListener)listener).onEntityExplode( (EntityExplodeEvent)event ); } }; + case EXPLOSION_PRIMED: + return new EventExecutor() { public void execute( Listener listener, Event event ) { + ((EntityListener)listener).onExplosionPrimed( (ExplosionPrimedEvent)event ); + } + }; case ENTITY_TARGET: return new EventExecutor() { public void execute( Listener listener, Event event ) { ((EntityListener)listener).onEntityTarget( (EntityTargetEvent)event );