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

Fix SoundEffects only to players diff (#10966)

Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
Dieser Commit ist enthalten in:
scarfacered 2024-06-23 16:03:32 -04:00 committet von GitHub
Ursprung 812701d901
Commit 19eefe9321
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: B5690EEEBB952194
18 geänderte Dateien mit 49 neuen und 82 gelöschten Zeilen

Datei anzeigen

@ -6,7 +6,7 @@ Subject: [PATCH] Send attack SoundEffects only to players who can see the
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 d603a7211c7e7eb2567881a530ae7bcbc8def5a6..0e14f9f233a1f41e9b660e19950820c9cd1913a5 100644
index d603a7211c7e7eb2567881a530ae7bcbc8def5a6..b62f7ae1929513bd6da90bc91e3654c28c28a40a 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1256,7 +1256,7 @@ public abstract class Player extends LivingEntity {
@ -18,85 +18,52 @@ index d603a7211c7e7eb2567881a530ae7bcbc8def5a6..0e14f9f233a1f41e9b660e19950820c9
flag1 = true;
} else {
flag1 = false;
@@ -1335,9 +1335,9 @@ public abstract class Player extends LivingEntity {
@@ -1335,7 +1335,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);
- this.sweepAttack();
- }
+ 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();
+ }
if (target instanceof ServerPlayer && target.hurtMarked) {
// CraftBukkit start - Add Velocity Event
@@ -1362,18 +1362,18 @@ public abstract class Player extends LivingEntity {
// CraftBukkit end
+ 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();
}
- if (flag2) {
@@ -1363,15 +1363,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);
- this.crit(target);
- }
+ if (flag2) {
+ 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);
+ }
+ 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) {
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);
- } else {
+ 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);
+ if (!flag2 && !flag3) {
+ if (flag) {
+ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_STRONG, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ } else {
+ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_WEAK, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
+ }
}
- }
if (f1 > 0.0F) {
this.magicCrit(target);
@@ -1425,16 +1425,19 @@ public abstract class Player extends LivingEntity {
+ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_WEAK, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
}
}
- this.causeFoodExhaustion(this.level().spigotConfig.combatExhaustion, EntityExhaustionEvent.ExhaustionReason.ATTACK); // CraftBukkit - EntityExhaustionEvent // Spigot - Change to use configurable value
- } else {
@@ -1427,7 +1427,7 @@ public abstract class Player extends LivingEntity {
this.causeFoodExhaustion(this.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);
- // CraftBukkit start - resync on cancelled event
- if (this instanceof ServerPlayer) {
- ((ServerPlayer) this).getBukkitEntity().updateInventory();
+ this.causeFoodExhaustion(this.level().spigotConfig.combatExhaustion, EntityExhaustionEvent.ExhaustionReason.ATTACK); // CraftBukkit - EntityExhaustionEvent // Spigot - Change to use configurable value
+ } else {
+ 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();
+ }
+ // CraftBukkit start - resync on cancelled event
+ if (this instanceof ServerPlayer) {
+ ((ServerPlayer) this).getBukkitEntity().updateInventory();
+ }
+ // CraftBukkit end
}
- // CraftBukkit end
}
- }
}
}
@@ -1822,6 +1825,14 @@ public abstract class Player extends LivingEntity {
+ sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_NODAMAGE, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
// CraftBukkit start - resync on cancelled event
if (this instanceof ServerPlayer) {
((ServerPlayer) this).getBukkitEntity().updateInventory();
@@ -1822,6 +1822,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 while respecting visibility
+ 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(net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(soundEffect), soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong()));
+ fromEntity.level().playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity itself
+ if (fromEntity instanceof ServerPlayer serverPlayer) {
+ serverPlayer.connection.send(new net.minecraft.network.protocol.game.ClientboundSoundPacket(net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(soundEffect), soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong()));
+ }
+ }
+ // Paper end - send while respecting visibility

Datei anzeigen

@ -5,7 +5,7 @@ Subject: [PATCH] Toggleable player crits
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 0e14f9f233a1f41e9b660e19950820c9cd1913a5..92ff2ccfbcc554281a70337a0a759bf6f2e2bca0 100644
index b62f7ae1929513bd6da90bc91e3654c28c28a40a..d365fd0fa03a773b21b64f0a84a8b2d83a740845 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1265,6 +1265,7 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -6,7 +6,7 @@ Subject: [PATCH] Configurable sprint interruption on attack
If the sprint interruption is disabled players continue sprinting when they attack entities.
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 92ff2ccfbcc554281a70337a0a759bf6f2e2bca0..b85838c24c94b282f1f0fe55fa20a2c1f80363a6 100644
index d365fd0fa03a773b21b64f0a84a8b2d83a740845..8977aaa75b287cbd13ed18a5ee5ba950fcd738e6 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1306,7 +1306,11 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -7,10 +7,10 @@ Called when a player is firing a bow and the server is choosing an arrow to use.
Plugins can skip selection of certain arrows and control which is used.
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 b85838c24c94b282f1f0fe55fa20a2c1f80363a6..3897bbbaeb9d425525668f0daef42fb141605c6d 100644
index 8977aaa75b287cbd13ed18a5ee5ba950fcd738e6..f21d121418872f5ece763f33c15091e787991d7c 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -2232,18 +2232,29 @@ public abstract class Player extends LivingEntity {
@@ -2229,18 +2229,29 @@ public abstract class Player extends LivingEntity {
return ImmutableList.of(Pose.STANDING, Pose.CROUCHING, Pose.SWIMMING);
}

Datei anzeigen

@ -200,7 +200,7 @@ index a6c33abcbbfc0851c8fa979163de145a578f97a6..18389b3befe31b224010e55244fbcb7c
}
}
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 3897bbbaeb9d425525668f0daef42fb141605c6d..6fc92c90afa3288256cc7cbf75d35b4fafff0e88 100644
index f21d121418872f5ece763f33c15091e787991d7c..3512f0b309c7822f7b9d9eacbcf4dd84d9c24896 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1300,9 +1300,9 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -109,7 +109,7 @@ index 9019e25f61d4fdb7c5d12ea7630b0bc23827ab6e..38cf3cf1cc7ebae4b6ca8a89dc026b5b
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : io.papermc.paper.adventure.PaperAdventure.asAdventure(entityplayer.getDisplayName()))); // Paper - Adventure
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 6fc92c90afa3288256cc7cbf75d35b4fafff0e88..bba645d2dda293da441c6901967896636fd06ce2 100644
index 3512f0b309c7822f7b9d9eacbcf4dd84d9c24896..e60da80cbc2d2dbb98287470e1741fa2a3f95335 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -278,7 +278,7 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -146,7 +146,7 @@ index 882236c8ebad90ed2adc873de4dda3b7f3f869d9..632b74e84d6ee58da8806e30b75e16fb
this.clientOldAttachPosition = this.blockPosition();
}
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 bba645d2dda293da441c6901967896636fd06ce2..2d1eed692740dcab4fc9ab31e9b14a975e8239df 100644
index e60da80cbc2d2dbb98287470e1741fa2a3f95335..e7fc0f6d1a50e82c4c9fc75ca9190f63c5964f3b 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1160,7 +1160,13 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -7,7 +7,7 @@ This fixes a lot of game state issues where packets were delayed for processing
due to 1.15's new queue but processed while dead.
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 2d1eed692740dcab4fc9ab31e9b14a975e8239df..90974926cdc45f1455a0dc755338dac184c2f412 100644
index e7fc0f6d1a50e82c4c9fc75ca9190f63c5964f3b..acb2ccc8a940ea0ccd3d1f6d69c926d513f42872 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1172,7 +1172,7 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -5,7 +5,7 @@ Subject: [PATCH] Expose LivingEntity hurt direction
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 90974926cdc45f1455a0dc755338dac184c2f412..2d9ed78daae9ef2fec8c11a998117d8299dff42d 100644
index acb2ccc8a940ea0ccd3d1f6d69c926d513f42872..80426e943b38e1cbde6ce80b3964df4d5ae23c94 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -187,7 +187,7 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerDeepSleepEvent
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 2d9ed78daae9ef2fec8c11a998117d8299dff42d..25964fa6a0502dda0e5a228707bfc157a97da5a6 100644
index 80426e943b38e1cbde6ce80b3964df4d5ae23c94..7e54b4b521d0cfe907db5cfa26129752b3de4355 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -261,6 +261,13 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -44,7 +44,7 @@ index 04c9fe154a72804d7bb817bf3bbfccd8be96a6ee..d413c4d445f42f6a923a49ce4f04b13c
this.awardStat(Stats.DROP);
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 25964fa6a0502dda0e5a228707bfc157a97da5a6..deb0dcf9777084c29f07170432bb8976e089d26d 100644
index 7e54b4b521d0cfe907db5cfa26129752b3de4355..c817d7cfa9bdef98aef6ac2df304ac5c2aa80649 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -744,6 +744,11 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -28,7 +28,7 @@ index c1d121d83591ca1b5bf9d9406c9622b4f24eafef..aee26dd78953ff43306aaa64161f5b9e
+ // Paper end - add critical damage API
}
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 deb0dcf9777084c29f07170432bb8976e089d26d..6ff490bc9e0f0a820060d8b5cda7a4ef2ddaaf4e 100644
index c817d7cfa9bdef98aef6ac2df304ac5c2aa80649..6a0c177859da18d8b1ccaa45eab477d2f5822888 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1292,6 +1292,7 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -51,7 +51,7 @@ index ce894b31e391786fe98742b9bf22d653df018570..ecd43bbca7ea0e74f506f49fd14f2dd5
@Override
public void doCloseContainer() {
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 6ff490bc9e0f0a820060d8b5cda7a4ef2ddaaf4e..3cc67435ea3407865da8ca2c04c25fa18f101534 100644
index 6a0c177859da18d8b1ccaa45eab477d2f5822888..028dc5eda7bb93bb4714f6b223379803307add93 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -509,6 +509,11 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -5,7 +5,7 @@ Subject: [PATCH] Add PrePlayerAttackEntityEvent
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 3cc67435ea3407865da8ca2c04c25fa18f101534..b89a1f42283fbc7699b6c85bbb7efbd9cd9646ed 100644
index 028dc5eda7bb93bb4714f6b223379803307add93..b5e1f39957f05670aec593f31ab2725fccffc692 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1256,8 +1256,17 @@ public abstract class Player extends LivingEntity {

Datei anzeigen

@ -5,7 +5,7 @@ Subject: [PATCH] Flying Fall Damage
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 b89a1f42283fbc7699b6c85bbb7efbd9cd9646ed..52d1af74b5b19e21eb8761e795c32b96cb8cf2f8 100644
index b5e1f39957f05670aec593f31ab2725fccffc692..98b3547b970e30e9cc009ef1fac9202590692d84 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -195,6 +195,7 @@ public abstract class Player extends LivingEntity {
@ -16,7 +16,7 @@ index b89a1f42283fbc7699b6c85bbb7efbd9cd9646ed..52d1af74b5b19e21eb8761e795c32b96
// CraftBukkit start
public boolean fauxSleeping;
@@ -1693,7 +1694,7 @@ public abstract class Player extends LivingEntity {
@@ -1690,7 +1691,7 @@ public abstract class Player extends LivingEntity {
@Override
public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) {

Datei anzeigen

@ -5,10 +5,10 @@ Subject: [PATCH] Add experience points API
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 52d1af74b5b19e21eb8761e795c32b96cb8cf2f8..fa7410e2a64c42ca7df5b340e4e5a4d03c46dd9b 100644
index 98b3547b970e30e9cc009ef1fac9202590692d84..bef9c905d884fec70f6faecff4d73c5484a412f5 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1869,7 +1869,7 @@ public abstract class Player extends LivingEntity {
@@ -1866,7 +1866,7 @@ public abstract class Player extends LivingEntity {
}
public int getXpNeededForNextLevel() {

Datei anzeigen

@ -16,7 +16,7 @@ sideeffects, meaning the disable event cannot share a handlerlist with
the cooldown event
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 fa7410e2a64c42ca7df5b340e4e5a4d03c46dd9b..631d2e064d07169c8895b05ff6ecf66c8f5f9b65 100644
index bef9c905d884fec70f6faecff4d73c5484a412f5..e27fd3a1eb1a128613e328910f09f290007f48d5 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1004,7 +1004,7 @@ public abstract class Player extends LivingEntity {
@ -28,7 +28,7 @@ index fa7410e2a64c42ca7df5b340e4e5a4d03c46dd9b..631d2e064d07169c8895b05ff6ecf66c
}
}
@@ -1498,8 +1498,21 @@ public abstract class Player extends LivingEntity {
@@ -1495,8 +1495,21 @@ public abstract class Player extends LivingEntity {
this.attack(target);
}

Datei anzeigen

@ -25,7 +25,7 @@ index 73c33582eac01cbc6bf3728a78f9e1ee76b2b043..b65927095e36451c53cdae770701a334
}
}
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 631d2e064d07169c8895b05ff6ecf66c8f5f9b65..3f397423f023deaf4d8545201088b23ee3cc1cdd 100644
index e27fd3a1eb1a128613e328910f09f290007f48d5..54ba25632c2a9e1c93a5b3a0b92e5280864c49d6 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -807,6 +807,14 @@ public abstract class Player extends LivingEntity {