mirror of
https://github.com/PaperMC/Paper.git
synced 2024-08-28 23:49:41 +02:00
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
64 lines
2.8 KiB
Diff
64 lines
2.8 KiB
Diff
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 a871eddf73f918c0e3d2554ef8d9cfd0f830fcaa..5f7d0d08be8bca06c9aa89659b7865a7b5a547f8 100644
|
|
--- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
|
@@ -36,7 +36,6 @@ 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);
|
|
}
|
|
@@ -56,6 +55,41 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
|
this.adventure$deathMessage = deathMessage != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(deathMessage) : net.kyori.adventure.text.Component.empty(); // Paper
|
|
}
|
|
|
|
+ @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() {
|