3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-15 20:40:07 +01:00

SPIGOT-2127: Add DamageCause.ENTITY_SWEEP_ATTACK

Dieser Commit ist enthalten in:
md_5 2016-12-23 22:39:33 +11:00
Ursprung 746cf0f0d7
Commit 96f03d9065
3 geänderte Dateien mit 23 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -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);

Datei anzeigen

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

Datei anzeigen

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