SPIGOT-2127: Add DamageCause.ENTITY_SWEEP_ATTACK

This commit is contained in:
md_5 2016-12-23 22:39:33 +11:00
parent 746cf0f0d7
commit 96f03d9065
3 changed files with 23 additions and 2 deletions

View File

@ -0,0 +1,21 @@
--- a/net/minecraft/server/DamageSource.java
+++ b/net/minecraft/server/DamageSource.java
@@ -34,6 +34,18 @@
private boolean C;
private boolean D;
public String translationIndex;
+ // CraftBukkit start
+ private boolean sweep;
+
+ public boolean isSweep() {
+ return sweep;
+ }
+
+ public DamageSource sweep() {
+ this.sweep = true;
+ return this;
+ }
+ // CraftBukkit end
public static DamageSource mobAttack(EntityLiving entityliving) {
return new EntityDamageSource("mob", entityliving);

View File

@ -279,7 +279,7 @@
if (entityliving != this && entityliving != entity && !this.r(entityliving) && this.h(entityliving) < 9.0D) {
+ // CraftBukkit start - Only apply knockback if the damage hits
+ if (entityliving.damageEntity(DamageSource.playerAttack(this), f4)) {
+ if (entityliving.damageEntity(DamageSource.playerAttack(this).sweep(), f4)) {
entityliving.a(this, 0.4F, (double) MathHelper.sin(this.yaw * 0.017453292F), (double) (-MathHelper.cos(this.yaw * 0.017453292F)));
- entityliving.damageEntity(DamageSource.playerAttack(this), f4);
+ }

View File

@ -464,7 +464,7 @@ public class CraftEventFactory {
return event;
} else if (source instanceof EntityDamageSource) {
Entity damager = source.getEntity();
DamageCause cause = DamageCause.ENTITY_ATTACK;
DamageCause cause = (source.isSweep()) ? DamageCause.ENTITY_SWEEP_ATTACK : DamageCause.ENTITY_ATTACK;
if (source instanceof EntityDamageSourceIndirect) {
damager = ((EntityDamageSourceIndirect) source).getProximateDamageSource();