Fix player death kept items not being in same slot (#6663)

This commit is contained in:
Jake Potrebic 2021-09-25 12:06:37 -07:00 committed by GitHub
parent d0a2193d4a
commit 6de48dbdda
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 35 additions and 34 deletions

View file

@ -8,7 +8,7 @@ Exposes a mutable array on items a player should keep on death
Example Usage: https://gist.github.com/aikar/5bb202de6057a051a950ce1f29feb0b4
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 6d723445f80fc6db5880f658098046de5f13f563..dac01b65319ee246ddbb974ad379e2bd59033830 100644
index 6d723445f80fc6db5880f658098046de5f13f563..dc0b6b9a22b31940cc997431af644ea9c772f8cb 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -724,6 +724,46 @@ public class ServerPlayer extends Player {
@ -58,10 +58,11 @@ index 6d723445f80fc6db5880f658098046de5f13f563..dac01b65319ee246ddbb974ad379e2bd
@Override
public void die(DamageSource source) {
boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
@@ -810,6 +850,12 @@ public class ServerPlayer extends Player {
@@ -809,7 +849,12 @@ public class ServerPlayer extends Player {
this.dropExperience();
// we clean the player's inventory after the EntityDeathEvent is called so plugins can get the exact state of the inventory.
if (!event.getKeepInventory()) {
this.getInventory().clearContent();
- this.getInventory().clearContent();
+ // Paper start - replace logic
+ for (NonNullList<ItemStack> inv : this.getInventory().compartments) {
+ processKeep(event, inv);