From d57776f058520cd38f5ba39831d1d53b59942211 Mon Sep 17 00:00:00 2001 From: Erik Broes Date: Tue, 17 Jan 2012 18:58:29 +0100 Subject: [PATCH] [Bleeding] Added EntityShootBowEvent. Thanks Zeerix. --- src/main/java/org/bukkit/event/Event.java | 6 ++ .../bukkit/event/entity/EntityListener.java | 7 ++ .../event/entity/EntityShootBowEvent.java | 81 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java index 7dc9e82e61..70a8007357 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -793,6 +793,12 @@ public enum Type { * @see org.bukkit.event.entity.EntityCreatePortalEvent */ ENTITY_CREATE_PORTAL(Category.LIVING_ENTITY, EntityCreatePortalEvent.class), + /** + * Called when a LivingEntity shoots a bow firing an arrow + * + * @see org.bukkit.event.entity.EntityShootBowEvent + */ + ENTITY_SHOOT_BOW(Category.LIVING_ENTITY, EntityShootBowEvent.class), /** * WEATHER EVENTS diff --git a/src/main/java/org/bukkit/event/entity/EntityListener.java b/src/main/java/org/bukkit/event/entity/EntityListener.java index 3fda2181d6..234ff22d15 100644 --- a/src/main/java/org/bukkit/event/entity/EntityListener.java +++ b/src/main/java/org/bukkit/event/entity/EntityListener.java @@ -157,6 +157,13 @@ public void onEndermanPlace(EndermanPlaceEvent event) {} */ public void onFoodLevelChange(FoodLevelChangeEvent event) {} + /** + * Called when a LivingEntity shoots a bow firing an arrow + * + * @param event Relevant event details + */ + public void onEntityShootBow(EntityShootBowEvent event) {} + /** * Called when a Slime splits into smaller Slimes upon death * diff --git a/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java new file mode 100644 index 0000000000..8eca2edc25 --- /dev/null +++ b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java @@ -0,0 +1,81 @@ +package org.bukkit.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Projectile; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.inventory.ItemStack; + +/** + * Called when a LivingEntity shoots a bow firing an arrow + */ +@SuppressWarnings("serial") +public class EntityShootBowEvent extends EntityEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + + private ItemStack bow; + private Entity projectile; + private float force; + private boolean cancelled; + + public EntityShootBowEvent(LivingEntity shooter, ItemStack bow, Projectile projectile, float force) { + super(Type.ENTITY_SHOOT_BOW, shooter); + this.bow = bow; + this.projectile = projectile; + this.force = force; + } + + /** + * Gets the bow ItemStack used to fire the arrow; is null if the shooter is a skeleton + * + * @return the bow involved in this event, or null + */ + public ItemStack getBow() { + return bow; + } + + /** + * Gets the projectile which will be launched by this event + * + * @return the launched projectile + */ + public Entity getProjectile() { + return projectile; + } + + /** + * Replaces the projectile which will be launched + * + * @param projectile the new projectile + */ + public void setProjectile(Entity projectile) { + this.projectile = projectile; + } + + /** + * Gets the force the arrow was launched with + * + * @return bow shooting force, up to 1.0 + */ + public float getForce() { + return force; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancel) { + cancelled = cancel; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +}