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.
Dieser Commit ist enthalten in:
Ursprung
872dad5540
Commit
e92bdab57a
26
src/main/java/net/minecraft/server/EntityComplex.java
Normale Datei
26
src/main/java/net/minecraft/server/EntityComplex.java
Normale Datei
@ -0,0 +1,26 @@
|
|||||||
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
public class EntityComplex extends EntityLiving {
|
||||||
|
|
||||||
|
protected int t = 100;
|
||||||
|
|
||||||
|
public EntityComplex(World world) {
|
||||||
|
super(world);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxHealth() {
|
||||||
|
return this.t;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean a(EntityComplexPart entitycomplexpart, DamageSource damagesource, int i) {
|
||||||
|
return this.damageEntity(damagesource, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean damageEntity(DamageSource damagesource, int i) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean e(DamageSource damagesource, int i) { // CraftBukkit - protected -> public
|
||||||
|
return super.damageEntity(damagesource, i);
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,11 @@
|
|||||||
package org.bukkit.craftbukkit.entity;
|
package org.bukkit.craftbukkit.entity;
|
||||||
|
|
||||||
|
import net.minecraft.server.DamageSource;
|
||||||
import net.minecraft.server.EntityComplex;
|
import net.minecraft.server.EntityComplex;
|
||||||
import net.minecraft.server.EntityLiving;
|
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.entity.ComplexLivingEntity;
|
import org.bukkit.entity.ComplexLivingEntity;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
|
||||||
public abstract class CraftComplexLivingEntity extends CraftLivingEntity implements ComplexLivingEntity {
|
public abstract class CraftComplexLivingEntity extends CraftLivingEntity implements ComplexLivingEntity {
|
||||||
public CraftComplexLivingEntity(CraftServer server, EntityComplex entity) {
|
public CraftComplexLivingEntity(CraftServer server, EntityComplex entity) {
|
||||||
@ -19,4 +21,21 @@ public abstract class CraftComplexLivingEntity extends CraftLivingEntity impleme
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return "CraftComplexLivingEntity";
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren