Deprecate ItemStack#setType & add ItemStack#withType (#10290)
This commit is contained in:
parent
3263470312
commit
4445d23544
17 changed files with 258 additions and 33 deletions
|
@ -6,10 +6,10 @@ Subject: [PATCH] PlayerElytraBoostEvent
|
|||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerElytraBoostEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerElytraBoostEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..42375d44ed0db457b96165414e9b45a557bac1ab
|
||||
index 0000000000000000000000000000000000000000..9ebac41c22b8866df616020d409e5e1a49cddca5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerElytraBoostEvent.java
|
||||
@@ -0,0 +1,90 @@
|
||||
@@ -0,0 +1,104 @@
|
||||
+package com.destroystokyo.paper.event.player;
|
||||
+
|
||||
+import org.bukkit.entity.Firework;
|
||||
|
@ -17,6 +17,7 @@ index 0000000000000000000000000000000000000000..42375d44ed0db457b96165414e9b45a5
|
|||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.bukkit.event.player.PlayerEvent;
|
||||
+import org.bukkit.inventory.EquipmentSlot;
|
||||
+import org.bukkit.inventory.ItemStack;
|
||||
+import org.jetbrains.annotations.ApiStatus;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
|
@ -31,14 +32,17 @@ index 0000000000000000000000000000000000000000..42375d44ed0db457b96165414e9b45a5
|
|||
+ @NotNull private final ItemStack itemStack;
|
||||
+ @NotNull private final Firework firework;
|
||||
+ private boolean consume = true;
|
||||
+ @NotNull
|
||||
+ private final EquipmentSlot hand;
|
||||
+
|
||||
+ private boolean cancelled;
|
||||
+
|
||||
+ @ApiStatus.Internal
|
||||
+ public PlayerElytraBoostEvent(@NotNull Player player, @NotNull ItemStack itemStack, @NotNull Firework firework) {
|
||||
+ public PlayerElytraBoostEvent(@NotNull Player player, @NotNull ItemStack itemStack, @NotNull Firework firework, @NotNull EquipmentSlot hand) {
|
||||
+ super(player);
|
||||
+ this.itemStack = itemStack;
|
||||
+ this.firework = firework;
|
||||
+ this.hand = hand;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
|
@ -79,6 +83,16 @@ index 0000000000000000000000000000000000000000..42375d44ed0db457b96165414e9b45a5
|
|||
+ this.consume = consume;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the hand holding the firework used for boosting this player.
|
||||
+ *
|
||||
+ * @return interaction hand
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public EquipmentSlot getHand() {
|
||||
+ return this.hand;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return this.cancelled;
|
||||
|
|
|
@ -982,6 +982,30 @@ index 8f601e85df580ef8106eaff8b9eafb5691a4874b..d615c006c9153fb65024241604b744fb
|
|||
public static final MemoryKey<Location> SNIFFER_EXPLORED_POSITIONS = new MemoryKey<>(NamespacedKey.minecraft("sniffer_explored_positions"), Location.class);
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
index 9e54ef5b60bf5583c12e1edfa76f19013a5b2a65..37be83184cae203d5e99518b0ff5c708fafb0331 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
@@ -8,6 +8,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* Called when a brewing stand starts to brew.
|
||||
*/
|
||||
+@org.jetbrains.annotations.ApiStatus.Experimental // Paper
|
||||
public class BrewingStartEvent extends InventoryBlockStartEvent {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
diff --git a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
index 53119742beda00a38111063243665bb995ae2188..2d084214e991fecc51f8e18e3d733e43b1dca248 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* Called when a Campfire starts to cook.
|
||||
*/
|
||||
+@org.jetbrains.annotations.ApiStatus.Experimental // Paper
|
||||
public class CampfireStartEvent extends InventoryBlockStartEvent {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
diff --git a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java b/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
|
||||
index e9a6e5be5f33a342f7e5c496f0f1c64b2f302ace..f0db59a556deaefefbdaca121585c0fd199c13c2 100644
|
||||
--- a/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] Fix HandlerList for InventoryBlockStartEvent subclasses
|
|||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
index 9e54ef5b60bf5583c12e1edfa76f19013a5b2a65..fe6573d8fca0aa8d8f37f8b476fc45adc786795f 100644
|
||||
index 37be83184cae203d5e99518b0ff5c708fafb0331..43eac972f45d1cbb6278b048f8e6d7882c0aabeb 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/BrewingStartEvent.java
|
||||
@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
@org.jetbrains.annotations.ApiStatus.Experimental // Paper
|
||||
public class BrewingStartEvent extends InventoryBlockStartEvent {
|
||||
|
||||
- private static final HandlerList handlers = new HandlerList();
|
||||
|
@ -17,7 +17,7 @@ index 9e54ef5b60bf5583c12e1edfa76f19013a5b2a65..fe6573d8fca0aa8d8f37f8b476fc45ad
|
|||
private int brewingTime;
|
||||
|
||||
public BrewingStartEvent(@NotNull final Block furnace, @NotNull ItemStack source, int brewingTime) {
|
||||
@@ -36,14 +36,5 @@ public class BrewingStartEvent extends InventoryBlockStartEvent {
|
||||
@@ -37,14 +37,5 @@ public class BrewingStartEvent extends InventoryBlockStartEvent {
|
||||
this.brewingTime = brewTime;
|
||||
}
|
||||
|
||||
|
@ -34,11 +34,11 @@ index 9e54ef5b60bf5583c12e1edfa76f19013a5b2a65..fe6573d8fca0aa8d8f37f8b476fc45ad
|
|||
+ // Paper - remove HandlerList
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
index 53119742beda00a38111063243665bb995ae2188..1f7a8bf65e9ac3188f759f9b3c4d6edbf255942a 100644
|
||||
index 2d084214e991fecc51f8e18e3d733e43b1dca248..4b12575107b3f1fa6d0ed7f667bf0d0ae40acae0 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/CampfireStartEvent.java
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
@org.jetbrains.annotations.ApiStatus.Experimental // Paper
|
||||
public class CampfireStartEvent extends InventoryBlockStartEvent {
|
||||
|
||||
- private static final HandlerList handlers = new HandlerList();
|
||||
|
@ -46,7 +46,7 @@ index 53119742beda00a38111063243665bb995ae2188..1f7a8bf65e9ac3188f759f9b3c4d6edb
|
|||
private int cookingTime;
|
||||
private CampfireRecipe campfireRecipe;
|
||||
|
||||
@@ -49,14 +49,5 @@ public class CampfireStartEvent extends InventoryBlockStartEvent {
|
||||
@@ -50,14 +50,5 @@ public class CampfireStartEvent extends InventoryBlockStartEvent {
|
||||
this.cookingTime = cookTime;
|
||||
}
|
||||
|
||||
|
|
54
patches/api/0469-Deprecate-ItemStack-setType.patch
Normal file
54
patches/api/0469-Deprecate-ItemStack-setType.patch
Normal file
|
@ -0,0 +1,54 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
||||
Date: Thu, 29 Feb 2024 17:54:26 -0500
|
||||
Subject: [PATCH] Deprecate ItemStack#setType
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
index 245a730a54c4b241a9a67eccceefafd2763bd238..7414b4fa690d393a8e9557cc1fd1ce12fa426940 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
@@ -134,8 +134,18 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
|
||||
* {@link Material#isItem()} returns false.</b>
|
||||
*
|
||||
* @param type New type to set the items in this stack to
|
||||
+ * @deprecated <b>Setting the material type of ItemStacks is no longer supported.</b>
|
||||
+ * <p>
|
||||
+ * This method is deprecated due to potential illegal behavior that may occur
|
||||
+ * during the context of which this ItemStack is being used, allowing for certain item validation to be bypassed.
|
||||
+ * It is recommended to instead create a new ItemStack object with the desired
|
||||
+ * Material type, and if possible, set it in the appropriate context.
|
||||
+ *
|
||||
+ * Using this method in ItemStacks passed in events will result in undefined behavior.
|
||||
+ * @see ItemStack#withType(Material)
|
||||
*/
|
||||
@Utility
|
||||
+ @Deprecated // Paper
|
||||
public void setType(@NotNull Material type) {
|
||||
Preconditions.checkArgument(type != null, "Material cannot be null");
|
||||
this.type = type;
|
||||
@@ -148,6 +158,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
|
||||
this.data = null;
|
||||
}
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Creates a new ItemStack with the specified Material type, where the item count and item meta is preserved.
|
||||
+ *
|
||||
+ * @param type The Material type of the new ItemStack.
|
||||
+ * @return A new ItemStack instance with the specified Material type.
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ @org.jetbrains.annotations.Contract(value = "_ -> new", pure = true)
|
||||
+ public ItemStack withType(@NotNull Material type) {
|
||||
+ ItemStack itemStack = new ItemStack(type, this.amount);
|
||||
+ if (this.hasItemMeta()) {
|
||||
+ itemStack.setItemMeta(this.getItemMeta());
|
||||
+ }
|
||||
+
|
||||
+ return itemStack;
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
/**
|
||||
* Gets the amount of items in this stack
|
50
patches/api/0470-Item-Mutation-Fixes.patch
Normal file
50
patches/api/0470-Item-Mutation-Fixes.patch
Normal file
|
@ -0,0 +1,50 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
||||
Date: Wed, 20 Mar 2024 20:42:31 -0400
|
||||
Subject: [PATCH] Item Mutation Fixes
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/block/InventoryBlockStartEvent.java b/src/main/java/org/bukkit/event/block/InventoryBlockStartEvent.java
|
||||
index f30ed841864f426c59143f392f39c96f864ba924..16fd600c25991e641a1be6fb78238256a6ce3d3f 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/InventoryBlockStartEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/InventoryBlockStartEvent.java
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class InventoryBlockStartEvent extends BlockEvent {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
- private final ItemStack source;
|
||||
+ protected ItemStack source; // Paper
|
||||
|
||||
public InventoryBlockStartEvent(@NotNull final Block block, @NotNull ItemStack source) {
|
||||
super(block);
|
||||
diff --git a/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java b/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
|
||||
index 1829529c9915937dcdd0e6d1ceba9e64819fb93f..e7c243038b70ca13b7eabdf88ce518b6198c6db9 100644
|
||||
--- a/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java
|
||||
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class EnchantItemEvent extends InventoryEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final Block table;
|
||||
- private final ItemStack item;
|
||||
+ private ItemStack item; // Paper
|
||||
private int level;
|
||||
private boolean cancelled;
|
||||
private final Map<Enchantment, Integer> enchants;
|
||||
@@ -72,6 +72,17 @@ public class EnchantItemEvent extends InventoryEvent implements Cancellable {
|
||||
return item;
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Sets the item to be enchanted
|
||||
+ *
|
||||
+ * @param item item
|
||||
+ */
|
||||
+ public void setItem(@NotNull final ItemStack item) {
|
||||
+ this.item = item;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Gets the cost (minimum level) which is displayed as a number on the right
|
||||
* hand side of the enchantment offer.
|
Loading…
Add table
Add a link
Reference in a new issue