diff options
author | Sam Wilson <sam.wilson@gmail.com> | 2012-01-23 22:04:18 -0800 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-01-24 04:10:47 -0500 |
commit | e92bdab57a1bc5a02801fbf1568e746a66678c3a (patch) | |
tree | 45633ff39c9699ff83f2a59abcb9f7911228f151 /src/main/java/org | |
parent | 872dad554044aae57b786d5c14523cee5778ebc7 (diff) | |
download | craftbukkit-e92bdab57a1bc5a02801fbf1568e746a66678c3a.tar craftbukkit-e92bdab57a1bc5a02801fbf1568e746a66678c3a.tar.gz craftbukkit-e92bdab57a1bc5a02801fbf1568e746a66678c3a.tar.lz craftbukkit-e92bdab57a1bc5a02801fbf1568e746a66678c3a.tar.xz craftbukkit-e92bdab57a1bc5a02801fbf1568e746a66678c3a.zip |
Fixed CraftLivingEntity.damage when the entity is an EntityComplex.
Fixes BUKKIT-589: if you call damage on an instance of EnderDragon, no damage
is done.
Reason for bug: damage calls Entity.damageEntity. But EntityComplex
overrides damageEntity to do nothing.
Fix: CraftComplexLiving should call EntityComplex.e instead of
Entity.damageEntity. e is the method that actually does damage to an
instance of EntityComplex.
Diffstat (limited to 'src/main/java/org')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java index 549c0dfb..283c6f5c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java @@ -1,9 +1,11 @@ package org.bukkit.craftbukkit.entity; +import net.minecraft.server.DamageSource; import net.minecraft.server.EntityComplex; -import net.minecraft.server.EntityLiving; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.ComplexLivingEntity; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.LivingEntity; public abstract class CraftComplexLivingEntity extends CraftLivingEntity implements ComplexLivingEntity { public CraftComplexLivingEntity(CraftServer server, EntityComplex entity) { @@ -19,4 +21,21 @@ public abstract class CraftComplexLivingEntity extends CraftLivingEntity impleme public String toString() { return "CraftComplexLivingEntity"; } + + @Override + public void damage(int amount, org.bukkit.entity.Entity source) { + DamageSource reason = DamageSource.GENERIC; + + if (source instanceof HumanEntity) { + reason = DamageSource.playerAttack(((CraftHumanEntity) source).getHandle()); + } else if (source instanceof LivingEntity) { + reason = DamageSource.mobAttack(((CraftLivingEntity) source).getHandle()); + } + + if (entity instanceof EntityComplex) { + ((EntityComplex) entity).e(reason, amount); + } else { + entity.damageEntity(reason, amount); + } + } } |