summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Ardill <andrew.ardill@gmail.com>2011-01-13 00:15:31 +1100
committerErik Broes <erikbroes@grum.nl>2011-01-16 14:13:44 +0100
commitdb5d43c2a90b0be805b9f4e1da5d28623c1b11b5 (patch)
tree9c265922d07cb61b1e7f210ea4ba69d87e6af9f3 /src
parenta3da4005e41937559bdcc3d1636ee68a10cdb292 (diff)
downloadbukkit-db5d43c2a90b0be805b9f4e1da5d28623c1b11b5.tar
bukkit-db5d43c2a90b0be805b9f4e1da5d28623c1b11b5.tar.gz
bukkit-db5d43c2a90b0be805b9f4e1da5d28623c1b11b5.tar.lz
bukkit-db5d43c2a90b0be805b9f4e1da5d28623c1b11b5.tar.xz
bukkit-db5d43c2a90b0be805b9f4e1da5d28623c1b11b5.zip
Implementation of the EntityDamage*Events.
A new event EntityDamageByProjectileEvent was created. EntityDamageByProjectileEvent adds the ability to get the projectile entity (such as an egg) and also set if the projectile 'bounces'. New interfaces were created to facilitate all kinds of projectile entities. Changes were made to facilitate the new event, and enable other events, for plugins and event listeners.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/entity/Entity.java2
-rw-r--r--src/main/java/org/bukkit/entity/Fireball.java9
-rw-r--r--src/main/java/org/bukkit/entity/Fish.java9
-rw-r--r--src/main/java/org/bukkit/event/Event.java7
-rw-r--r--src/main/java/org/bukkit/event/entity/EntityDamageByProjectileEvent.java35
-rw-r--r--src/main/java/org/bukkit/event/entity/EntityListener.java6
-rw-r--r--src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java8
7 files changed, 75 insertions, 1 deletions
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
index 42e0cf49..aeb84256 100644
--- a/src/main/java/org/bukkit/entity/Entity.java
+++ b/src/main/java/org/bukkit/entity/Entity.java
@@ -9,7 +9,7 @@ import org.bukkit.World;
*/
public interface Entity {
/**
- * Gets the entitys current position
+ * Gets the entity's current position
*
* @return Location containing the position of this entity
*/
diff --git a/src/main/java/org/bukkit/entity/Fireball.java b/src/main/java/org/bukkit/entity/Fireball.java
new file mode 100644
index 00000000..424de301
--- /dev/null
+++ b/src/main/java/org/bukkit/entity/Fireball.java
@@ -0,0 +1,9 @@
+package org.bukkit.entity;
+
+/**
+ * Represents a Fireball.
+ *
+ * @author Cogito
+ */
+public interface Fireball extends Entity {
+}
diff --git a/src/main/java/org/bukkit/entity/Fish.java b/src/main/java/org/bukkit/entity/Fish.java
new file mode 100644
index 00000000..44fcede7
--- /dev/null
+++ b/src/main/java/org/bukkit/entity/Fish.java
@@ -0,0 +1,9 @@
+package org.bukkit.entity;
+
+/**
+ * Represents a Fish.
+ *
+ * @author Cogito
+ */
+public interface Fish extends Entity {
+}
diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java
index 0e32359b..a7399da7 100644
--- a/src/main/java/org/bukkit/event/Event.java
+++ b/src/main/java/org/bukkit/event/Event.java
@@ -417,6 +417,13 @@ public abstract class Event {
* @see org.bukkit.event.entity.EntityDamageByEntityEvent
*/
ENTITY_DAMAGEDBY_ENTITY (Category.LIVING_ENTITY),
+
+ /**
+ * Called when a LivingEntity is damaged by a projectile Entity
+ *
+ * @see org.bukkit.event.entity.EntityDamageByProjectileEvent
+ */
+ ENTITY_DAMAGEDBY_PROJECTILE (Category.LIVING_ENTITY),
/**
* Called when a LivingEntity is damaged with no source.
diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByProjectileEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByProjectileEvent.java
new file mode 100644
index 00000000..96529bd6
--- /dev/null
+++ b/src/main/java/org/bukkit/event/entity/EntityDamageByProjectileEvent.java
@@ -0,0 +1,35 @@
+package org.bukkit.event.entity;
+
+import java.util.Random;
+
+import org.bukkit.entity.Entity;
+
+public class EntityDamageByProjectileEvent extends EntityDamageByEntityEvent {
+
+ private Entity projectile;
+ private boolean bounce;
+
+ public EntityDamageByProjectileEvent(Entity damager, Entity damagee, Entity projectile, DamageCause cause, int damage) {
+ super(damager, damagee, cause, damage);
+ this.projectile = projectile;
+ Random random = new Random();
+ this.bounce = random.nextBoolean();
+ }
+
+ /**
+ * The projectile used to cause the event
+ * @return the projectile
+ */
+ public Entity getProjectile() {
+ return projectile;
+ }
+
+ public void setBounce(boolean bounce){
+ this.bounce = bounce;
+ }
+
+ public boolean getBounce(){
+ return bounce;
+ }
+
+}
diff --git a/src/main/java/org/bukkit/event/entity/EntityListener.java b/src/main/java/org/bukkit/event/entity/EntityListener.java
index da21f0d8..03bc5ba0 100644
--- a/src/main/java/org/bukkit/event/entity/EntityListener.java
+++ b/src/main/java/org/bukkit/event/entity/EntityListener.java
@@ -15,6 +15,12 @@ public class EntityListener implements Listener {
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
}
+ public void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) {
+ }
+
public void onEntityCombust(EntityCombustEvent event) {
}
+
+ public void onEntityDamage(EntityDamageEvent event) {
+ }
}
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 9288f000..5ed12363 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -21,6 +21,8 @@ import org.bukkit.event.block.*;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.bukkit.event.entity.EntityDamageByProjectileEvent;
+import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityListener;
import org.bukkit.event.player.*;
import org.bukkit.event.server.PluginEvent;
@@ -216,6 +218,12 @@ public final class JavaPluginLoader implements PluginLoader {
case ENTITY_DAMAGEDBY_ENTITY:
trueListener.onEntityDamageByEntity((EntityDamageByEntityEvent)event);
break;
+ case ENTITY_DAMAGEDBY_PROJECTILE:
+ trueListener.onEntityDamageByProjectile((EntityDamageByProjectileEvent)event);
+ break;
+ case ENTITY_DAMAGED:
+ trueListener.onEntityDamage((EntityDamageEvent)event);
+ break;
case ENTITY_DEATH:
// TODO: ENTITY_DEATH hook
break;