summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityLiving.java
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-09-21 15:41:24 +0100
committerDinnerbone <dinnerbone@dinnerbone.com>2011-09-21 15:41:24 +0100
commit20ddc944bb38b96ac5deb742126c53b9989b5c31 (patch)
treecf8cef5a55f609417a756d34a7b09034d48b69e9 /src/main/java/net/minecraft/server/EntityLiving.java
parent751ab82be07aec65151d7a0a76b90d8fc12974f6 (diff)
downloadcraftbukkit-20ddc944bb38b96ac5deb742126c53b9989b5c31.tar
craftbukkit-20ddc944bb38b96ac5deb742126c53b9989b5c31.tar.gz
craftbukkit-20ddc944bb38b96ac5deb742126c53b9989b5c31.tar.lz
craftbukkit-20ddc944bb38b96ac5deb742126c53b9989b5c31.tar.xz
craftbukkit-20ddc944bb38b96ac5deb742126c53b9989b5c31.zip
Refactored a bunch of death code into the event factory
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityLiving.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityLiving.java31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 23d81935..533638d8 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -6,11 +6,10 @@ import java.util.Iterator;
import java.util.List;
// CraftBukkit start
-import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.craftbukkit.TrigMath;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
// CraftBukkit end
@@ -78,6 +77,7 @@ public abstract class EntityLiving extends Entity {
protected float aU = 0.7F;
private Entity d;
protected int aV = 0;
+ public int expToDrop = 0; // CraftBukkit added
public EntityLiving(World world) {
super(world);
@@ -188,8 +188,9 @@ public abstract class EntityLiving extends Entity {
if (this.health <= 0) {
++this.deathTicks;
if (this.deathTicks > 20) {
- if (this.c > 0 || this.X()) {
- i = this.a(this.b);
+ // CraftBukkit start - update getExpReward() below if this changes!
+ if (expToDrop > 0) {
+ i = expToDrop;
while (i > 0) {
int j = EntityExperienceOrb.b(i);
@@ -198,6 +199,7 @@ public abstract class EntityLiving extends Entity {
this.world.addEntity(new EntityExperienceOrb(this.world, this.locX, this.locY, this.locZ, j));
}
}
+ // CraftBukkit end
this.ag();
this.die();
@@ -229,6 +231,18 @@ public abstract class EntityLiving extends Entity {
return this.ax;
}
+ // CraftBukkit start
+ public int getExpReward() {
+ int exp = a(this.b);
+
+ if (this.c > 0 || this.X()) {
+ return exp;
+ } else {
+ return 0;
+ }
+ }
+ // CraftBukkit end
+
protected boolean X() {
return false;
}
@@ -528,14 +542,7 @@ public abstract class EntityLiving extends Entity {
loot.add(new org.bukkit.inventory.ItemStack(i, count));
}
- CraftEntity entity = (CraftEntity) this.getBukkitEntity();
- EntityDeathEvent event = new EntityDeathEvent(entity, loot);
- org.bukkit.World bworld = this.world.getWorld();
- this.world.getServer().getPluginManager().callEvent(event);
-
- for (org.bukkit.inventory.ItemStack stack: event.getDrops()) {
- bworld.dropItemNaturally(entity.getLocation(), stack);
- }
+ CraftEventFactory.callEntityDeathEvent(this, loot);
// CraftBukkit end
}