2020-05-06 11:48:49 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2017-10-31 03:29:53 +01:00
From: Brokkonaut <hannos17@gmx.de>
Date: Tue, 31 Oct 2017 03:26:18 +0100
Subject: [PATCH] Send attack SoundEffects only to players who can see the
attacker
2021-03-16 08:19:45 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
index 2afd8ccb03ebae94d99995d383f55744bd58df0a..266c4bb75ceaf57b66bb1e4d4deb3e4bfec3fd4e 100644
--- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
+++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
@@ -1124,7 +1124,7 @@ public abstract class EntityHuman extends EntityLiving {
2017-10-31 03:29:53 +01:00
int i = b0 + EnchantmentManager.b((EntityLiving) this);
if (this.isSprinting() && flag) {
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_KNOCKBACK, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_KNOCKBACK, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2017-10-31 03:29:53 +01:00
++i;
flag1 = true;
}
2021-03-16 08:19:45 +01:00
@@ -1199,7 +1199,7 @@ public abstract class EntityHuman extends EntityLiving {
2017-10-31 03:29:53 +01:00
}
}
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_SWEEP, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_SWEEP, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2020-11-03 03:22:15 +01:00
this.ex();
2017-10-31 03:29:53 +01:00
}
2021-03-16 08:19:45 +01:00
@@ -1227,15 +1227,15 @@ public abstract class EntityHuman extends EntityLiving {
2017-10-31 03:29:53 +01:00
}
if (flag2) {
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_CRIT, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_CRIT, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2017-10-31 03:29:53 +01:00
this.a(entity);
}
if (!flag2 && !flag3) {
if (flag) {
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_STRONG, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_STRONG, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2017-10-31 03:29:53 +01:00
} else {
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_WEAK, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_WEAK, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2017-10-31 03:29:53 +01:00
}
}
2021-03-16 08:19:45 +01:00
@@ -1287,7 +1287,7 @@ public abstract class EntityHuman extends EntityLiving {
2017-10-31 03:29:53 +01:00
2021-03-03 23:43:45 +01:00
this.applyExhaustion(world.spigotConfig.combatExhaustion, EntityExhaustionEvent.ExhaustionReason.ATTACK); // CraftBukkit - EntityExhaustionEvent // Spigot - Change to use configurable value
2017-10-31 03:29:53 +01:00
} else {
2019-12-12 00:43:22 +01:00
- this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_NODAMAGE, this.getSoundCategory(), 1.0F, 1.0F);
+ sendSoundEffect(this, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_PLAYER_ATTACK_NODAMAGE, this.getSoundCategory(), 1.0F, 1.0F); // Paper - send while respecting visibility
2017-10-31 03:29:53 +01:00
if (flag4) {
entity.extinguish();
}
2021-03-16 08:19:45 +01:00
@@ -1722,6 +1722,14 @@ public abstract class EntityHuman extends EntityLiving {
2020-08-25 04:22:08 +02:00
public int getExpToLevel() {
return this.expLevel >= 30 ? 112 + (this.expLevel - 30) * 9 : (this.expLevel >= 15 ? 37 + (this.expLevel - 15) * 5 : 7 + this.expLevel * 2);
}
+ // Paper start - send SoundEffect to everyone who can see fromEntity
+ private static void sendSoundEffect(EntityHuman fromEntity, double x, double y, double z, SoundEffect soundEffect, SoundCategory soundCategory, float volume, float pitch) {
+ fromEntity.world.playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself
+ if (fromEntity instanceof EntityPlayer) {
+ ((EntityPlayer) fromEntity).playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(soundEffect, soundCategory, x, y, z, volume, pitch));
+ }
+ }
+ // Paper end
2021-03-03 23:43:45 +01:00
// CraftBukkit start
2020-08-25 04:22:08 +02:00
public void applyExhaustion(float f) {