aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2022-07-27 21:49:24 +0200
committerNassim Jahnke <[email protected]>2022-07-27 21:49:24 +0200
commit08828fde026ff834a3b6f4886f65bf2e40eb1633 (patch)
treebba1c6ce54149f3f299049bb31e4190f97d156cb /patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch
parentafb9e818fcdfc8017e511a4da3cb9cccb509d4f9 (diff)
downloadPaper-08828fde026ff834a3b6f4886f65bf2e40eb1633.tar.gz
Paper-08828fde026ff834a3b6f4886f65bf2e40eb1633.zip
More work
Diffstat (limited to 'patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch')
-rw-r--r--patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch b/patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch
new file mode 100644
index 0000000000..edadd2cc60
--- /dev/null
+++ b/patches/server/0160-Send-attack-SoundEffects-only-to-players-who-can-see.patch
@@ -0,0 +1,72 @@
+From 0000000000000000000000000000000000000000 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/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
+index d4e3649f4d66545842a7f8cd3dabad39d185046e..b07b9949b144981a8c461fc68bf3c296fd278572 100644
+--- a/src/main/java/net/minecraft/world/entity/player/Player.java
++++ b/src/main/java/net/minecraft/world/entity/player/Player.java
+@@ -1246,7 +1246,7 @@ public abstract class Player extends LivingEntity {
+ int i = b0 + EnchantmentHelper.getKnockbackBonus(this);
+
+ if (this.isSprinting() && flag) {
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_KNOCKBACK, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_KNOCKBACK, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ ++i;
+ flag1 = true;
+ }
+@@ -1321,7 +1321,7 @@ public abstract class Player extends LivingEntity {
+ }
+ }
+
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_SWEEP, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_SWEEP, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ this.sweepAttack();
+ }
+
+@@ -1349,15 +1349,15 @@ public abstract class Player extends LivingEntity {
+ }
+
+ if (flag2) {
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_CRIT, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_CRIT, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ this.crit(target);
+ }
+
+ if (!flag2 && !flag3) {
+ if (flag) {
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_STRONG, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_STRONG, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ } else {
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_WEAK, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_WEAK, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ }
+ }
+
+@@ -1409,7 +1409,7 @@ public abstract class Player extends LivingEntity {
+
+ this.causeFoodExhaustion(level.spigotConfig.combatExhaustion, EntityExhaustionEvent.ExhaustionReason.ATTACK); // CraftBukkit - EntityExhaustionEvent // Spigot - Change to use configurable value
+ } else {
+- this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_NODAMAGE, this.getSoundSource(), 1.0F, 1.0F);
++ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_NODAMAGE, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ if (flag4) {
+ target.clearFire();
+ }
+@@ -1871,6 +1871,14 @@ public abstract class Player extends LivingEntity {
+ public int getXpNeededForNextLevel() {
+ return this.experienceLevel >= 30 ? 112 + (this.experienceLevel - 30) * 9 : (this.experienceLevel >= 15 ? 37 + (this.experienceLevel - 15) * 5 : 7 + this.experienceLevel * 2);
+ }
++ // Paper start - send SoundEffect to everyone who can see fromEntity
++ private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) {
++ fromEntity.level.playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself
++ if (fromEntity instanceof ServerPlayer) {
++ ((ServerPlayer) fromEntity).connection.send(new net.minecraft.network.protocol.game.ClientboundSoundPacket(soundEffect, soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong()));
++ }
++ }
++ // Paper end
+
+ // CraftBukkit start
+ public void causeFoodExhaustion(float exhaustion) {