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:
Ursprung
746cf0f0d7
Commit
96f03d9065
21
nms-patches/DamageSource.patch
Normale Datei
21
nms-patches/DamageSource.patch
Normale Datei
@ -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);
|
@ -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);
|
||||||
+ }
|
+ }
|
||||||
|
@ -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();
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren