aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch')
-rw-r--r--Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch b/Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch
new file mode 100644
index 0000000000..f44c873755
--- /dev/null
+++ b/Spigot-Server-Patches/0209-Send-attack-SoundEffects-only-to-players-who-can-see.patch
@@ -0,0 +1,93 @@
+From f94e3680ce72b843b725ae03807974c2816d210f Mon Sep 17 00:00:00 2001
+From: Brokkonaut <[email protected]>
+Date: Tue, 31 Oct 2017 03:26:18 +0100
+Subject: [PATCH] Send attack SoundEffects only to players who can see the
+ attacker
+
+
+diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
+index bfae875ebb..259f73f66e 100644
+--- a/src/main/java/net/minecraft/server/EntityHuman.java
++++ b/src/main/java/net/minecraft/server/EntityHuman.java
+@@ -989,6 +989,15 @@ public abstract class EntityHuman extends EntityLiving {
+ this.k = 0;
+ }
+
++ // 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.sendSoundEffect(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
++
+ public void attack(Entity entity) {
+ if (entity.bk()) {
+ if (!entity.t(this)) {
+@@ -1013,7 +1022,7 @@ public abstract class EntityHuman extends EntityLiving {
+ int i = b0 + EnchantmentManager.b((EntityLiving) this);
+
+ if (this.isSprinting() && flag) {
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_KNOCKBACK, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_KNOCKBACK, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ ++i;
+ flag1 = true;
+ }
+@@ -1091,7 +1100,7 @@ public abstract class EntityHuman extends EntityLiving {
+ }
+ }
+
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_SWEEP, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_SWEEP, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ this.dl();
+ }
+
+@@ -1121,15 +1130,15 @@ public abstract class EntityHuman extends EntityLiving {
+ }
+
+ if (flag2) {
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_CRIT, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_CRIT, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ this.a(entity);
+ }
+
+ if (!flag2 && !flag3) {
+ if (flag) {
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_STRONG, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_STRONG, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ } else {
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_WEAK, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_WEAK, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ }
+ }
+
+@@ -1185,7 +1194,7 @@ public abstract class EntityHuman extends EntityLiving {
+
+ this.applyExhaustion(world.spigotConfig.combatExhaustion); // Spigot - Change to use configurable value
+ } else {
+- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_NODAMAGE, this.bV(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_PLAYER_ATTACK_NODAMAGE, this.bV(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ if (flag4) {
+ entity.extinguish();
+ }
+diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
+index cdb430ef4f..cdef374c61 100644
+--- a/src/main/java/net/minecraft/server/World.java
++++ b/src/main/java/net/minecraft/server/World.java
+@@ -954,6 +954,12 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
+ this.a(entityhuman, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, soundeffect, soundcategory, f, f1);
+ }
+
++ // Paper start - OBFHELPER
++ public final void sendSoundEffect(@Nullable EntityHuman fromEntity, double x, double y, double z, SoundEffect soundeffect, SoundCategory soundcategory, float volume, float pitch) {
++ this.a(fromEntity, x, y, z, soundeffect, soundcategory, volume, pitch);
++ }
++ // Paper end
++
+ public void a(@Nullable EntityHuman entityhuman, double d0, double d1, double d2, SoundEffect soundeffect, SoundCategory soundcategory, float f, float f1) {
+ for (int i = 0; i < this.v.size(); ++i) {
+ ((IWorldAccess) this.v.get(i)).a(entityhuman, soundeffect, soundcategory, d0, d1, d2, f, f1);
+--
+2.21.0
+