2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								From: Aikar <aikar@aikar.co>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Date: Mon, 11 Mar 2013 20:04:34 -0400
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Subject: [PATCH] PlayerDeathEvent#getItemsToKeep
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								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/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public class PlayerDeathEvent extends EntityDeathEvent {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     // Paper end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-    @Deprecated // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, @Nullable final String deathMessage) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         this(player, drops, droppedExp, 0, deathMessage);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public class PlayerDeathEvent extends EntityDeathEvent {
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-13 13:24:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         this.adventure$deathMessage = deathMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(deathMessage) : null; // Paper
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    @Deprecated // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private List<ItemStack> itemsToKeep = new java.util.ArrayList<>();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    /**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * A mutable collection to add items that the player should retain in their inventory on death (Similar to KeepInventory game rule)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * You <b>MUST</b> remove the item from the .getDrops() collection too or it will duplicate!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * <pre>{@code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *    {@literal @EventHandler(ignoreCancelled = true)}
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *     public void onPlayerDeath(PlayerDeathEvent event) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *         for (Iterator<ItemStack> iterator = event.getDrops().iterator(); iterator.hasNext(); ) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *             ItemStack drop = iterator.next();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *             List<String> lore = drop.getLore();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *             if (lore != null && !lore.isEmpty()) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *                 if (lore.get(0).contains("(SOULBOUND)")) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *                     iterator.remove();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *                     event.getItemsToKeep().add(drop);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *                 }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *             }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *         }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *     }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * }</pre>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * Adding an item to this list that the player did not previously have will give them the item on death.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * An example case could be a "Note" that "You died at X/Y/Z coordinates"
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     *
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     * @return The list to hold items to keep
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+     */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    @NotNull
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public List<ItemStack> getItemsToKeep() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return itemsToKeep;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @NotNull
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public Player getEntity() {