Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 04:20:04 +01:00
96d5e6ca48
Currently includes generated key holder classes for types used in the Registry Modification API
64 Zeilen
2.8 KiB
Diff
64 Zeilen
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 27909044c0c136acde18d64f14e84de932ba1045..ed7ede83507c052e05afffea78600b16439590dd 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) : null; // 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() {
|