aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-06-20 10:56:49 -0700
committerJake Potrebic <[email protected]>2023-06-20 10:56:49 -0700
commitcbc89410881eb27c3ee3e296f2283eabd2f77e70 (patch)
treee043d2ce0fd1aeca5d22be1d8d4ad789652a5ef3
parent3fa4ea66682488002ec01ff1638ffc3951183d20 (diff)
downloadPaper-cbc89410881eb27c3ee3e296f2283eabd2f77e70.tar.gz
Paper-cbc89410881eb27c3ee3e296f2283eabd2f77e70.zip
some more ItemType/BlockType api replacements
-rw-r--r--patches/api/0005-Adventure.patch10
-rw-r--r--patches/api/0006-Paper-Utils.patch4
-rw-r--r--patches/api/0073-Add-PlayerArmorChangeEvent.patch76
-rw-r--r--patches/api/0106-WitchReadyPotionEvent.patch6
-rw-r--r--patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch4
-rw-r--r--patches/api/0130-AnvilDamageEvent.patch4
-rw-r--r--patches/api/0153-Add-Material-Tags.patch6
-rw-r--r--patches/api/0217-Player-elytra-boost-API.patch6
-rw-r--r--patches/api/0225-Add-PlayerItemCooldownEvent.patch23
-rw-r--r--patches/api/0326-Add-PlayerItemFrameChangeEvent.patch6
-rw-r--r--patches/api/0417-enum-javadoc-fixes.patch54
-rw-r--r--patches/api/0417-fixup-Paper-Utils.patch19
-rw-r--r--patches/api/0418-fixup-Add-Material-Tags.patch28
-rw-r--r--patches/api/0419-fixup-AnvilDamageEvent.patch19
-rw-r--r--patches/server/0229-Don-t-call-getItemMeta-on-hasItemMeta.patch4
-rw-r--r--patches/server/0497-Add-PlayerItemCooldownEvent.patch4
-rw-r--r--patches/server/0520-Implement-PlayerFlowerPotManipulateEvent.patch7
-rw-r--r--patches/server/0714-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch17
-rw-r--r--patches/server/0798-Make-some-itemstacks-nonnull.patch10
19 files changed, 180 insertions, 127 deletions
diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch
index cf7819e8dd..88bbe0c1b2 100644
--- a/patches/api/0005-Adventure.patch
+++ b/patches/api/0005-Adventure.patch
@@ -2080,7 +2080,7 @@ index 2417f0d5077b51a7649503d57c48b0614f532904..9cebad10eb06f42cd0428d80940fa8e2
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index a18e0377b68100d37ea171f80fe7f7e18e0a4593..9d8ddb2656d22c287ee1338fe4ab79fac0e8488a 100644
+index a18e0377b68100d37ea171f80fe7f7e18e0a4593..5b5802be082f70a015b4a20c0ccdec1ee6f479f6 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -43,7 +43,41 @@ import org.jetbrains.annotations.Nullable;
@@ -2281,7 +2281,7 @@ index a18e0377b68100d37ea171f80fe7f7e18e0a4593..9d8ddb2656d22c287ee1338fe4ab79fa
+ * a certain location. This will not actually change the world in any way.
+ * This method will use a sign at the location's block or a faked sign
+ * sent via
-+ * {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
++ * {@link #sendBlockChange(Location, BlockData)}.
+ * <p>
+ * If the client does not have a sign at the given location it will
+ * display an error message to the user.
@@ -2300,7 +2300,7 @@ index a18e0377b68100d37ea171f80fe7f7e18e0a4593..9d8ddb2656d22c287ee1338fe4ab79fa
+ * a certain location. This will not actually change the world in any way.
+ * This method will use a sign at the location's block or a faked sign
+ * sent via
-+ * {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
++ * {@link #sendBlockChange(Location, BlockData)}.
+ * <p>
+ * If the client does not have a sign at the given location it will
+ * display an error message to the user.
@@ -2321,7 +2321,7 @@ index a18e0377b68100d37ea171f80fe7f7e18e0a4593..9d8ddb2656d22c287ee1338fe4ab79fa
+ * a certain location. This will not actually change the world in any way.
+ * This method will use a sign at the location's block or a faked sign
+ * sent via
-+ * {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
++ * {@link #sendBlockChange(Location, BlockData)}.
+ * <p>
+ * If the client does not have a sign at the given location it will
+ * display an error message to the user.
@@ -2342,7 +2342,7 @@ index a18e0377b68100d37ea171f80fe7f7e18e0a4593..9d8ddb2656d22c287ee1338fe4ab79fa
+ * a certain location. This will not actually change the world in any way.
+ * This method will use a sign at the location's block or a faked sign
+ * sent via
-+ * {@link #sendBlockChange(org.bukkit.Location, org.bukkit.Material, byte)}.
++ * {@link #sendBlockChange(Location, BlockData)}.
+ * <p>
+ * If the client does not have a sign at the given location it will
+ * display an error message to the user.
diff --git a/patches/api/0006-Paper-Utils.patch b/patches/api/0006-Paper-Utils.patch
index 224b26f6c8..b52b876aa5 100644
--- a/patches/api/0006-Paper-Utils.patch
+++ b/patches/api/0006-Paper-Utils.patch
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..9db0056ab94145819628b3ad8d8d2613
+
+}
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 2d334dbdd9e2c9a020899097e0620152758dc078..cd00a831cd4c6030082aa8107d25c78d8ee67d8f 100644
+index 2d334dbdd9e2c9a020899097e0620152758dc078..639d275b8318d19afd18996e1daa4e800927a84d 100644
--- a/src/main/java/org/bukkit/UnsafeValues.java
+++ b/src/main/java/org/bukkit/UnsafeValues.java
@@ -5,6 +5,7 @@ import org.bukkit.advancement.Advancement;
@@ -42,7 +42,7 @@ index 2d334dbdd9e2c9a020899097e0620152758dc078..cd00a831cd4c6030082aa8107d25c78d
Material fromLegacy(MaterialData material, boolean itemPriority);
Material toMaterial(ItemType itemType);
-+ Material toMaterial(BlockType<?> blockType); // Paper
++ Material blockTypeToMaterial(BlockType<?> blockType); // Paper
BlockData fromLegacy(Material material, byte data);
diff --git a/patches/api/0073-Add-PlayerArmorChangeEvent.patch b/patches/api/0073-Add-PlayerArmorChangeEvent.patch
index 4e9d795db3..512d0dd809 100644
--- a/patches/api/0073-Add-PlayerArmorChangeEvent.patch
+++ b/patches/api/0073-Add-PlayerArmorChangeEvent.patch
@@ -6,12 +6,13 @@ Subject: [PATCH] Add PlayerArmorChangeEvent
diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a669d0a958b
+index 0000000000000000000000000000000000000000..b1985f57d0e52df49304964797dfbbe9a7578ddd
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java
-@@ -0,0 +1,137 @@
+@@ -0,0 +1,189 @@
+package com.destroystokyo.paper.event.player;
+
++import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.HandlerList;
@@ -22,10 +23,12 @@ index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a66
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
++import org.bukkit.inventory.ItemType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
++import org.jetbrains.annotations.Unmodifiable;
+
-+import static org.bukkit.Material.*;
++import static org.bukkit.inventory.ItemType.*;
+
+/**
+ * Called when the player themselves change their armor items
@@ -98,10 +101,12 @@ index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a66
+ LEGS(NETHERITE_LEGGINGS, DIAMOND_LEGGINGS, GOLDEN_LEGGINGS, IRON_LEGGINGS, CHAINMAIL_LEGGINGS, LEATHER_LEGGINGS),
+ FEET(NETHERITE_BOOTS, DIAMOND_BOOTS, GOLDEN_BOOTS, IRON_BOOTS, CHAINMAIL_BOOTS, LEATHER_BOOTS);
+
-+ private final Set<Material> mutableTypes = new HashSet<>();
-+ private Set<Material> immutableTypes;
++ private final Set<ItemType> mutableTypes = new HashSet<>();
++ private Set<ItemType> immutableTypes;
++ @Deprecated
++ private Set<Material> legacyTypes;
+
-+ SlotType(Material... types) {
++ SlotType(ItemType... types) {
+ this.mutableTypes.addAll(Arrays.asList(types));
+ }
+
@@ -110,14 +115,32 @@ index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a66
+ * armor slot.
+ *
+ * @return immutable set of material types
++ * @deprecated use {@link #getItemTypes()}
++ */
++ @Deprecated
++ public @NotNull @Unmodifiable Set<Material> getTypes() {
++ if (this.legacyTypes == null) {
++ this.legacyTypes = new HashSet<>();
++ for (final ItemType itemType : this.getItemTypes()) {
++ this.legacyTypes.add(Bukkit.getUnsafe().toMaterial(itemType));
++ }
++ }
++ return Collections.unmodifiableSet(this.legacyTypes);
++ }
++
++ /**
++ * Gets an immutable set of all allowed item types that can be placed in an
++ * armor slot.
++ *
++ * @return immutable set of item types
+ */
+ @NotNull
-+ public Set<Material> getTypes() {
-+ if (immutableTypes == null) {
-+ immutableTypes = Collections.unmodifiableSet(mutableTypes);
++ public @Unmodifiable Set<ItemType> getItemTypes() {
++ if (this.immutableTypes == null) {
++ this.immutableTypes = Collections.unmodifiableSet(this.mutableTypes);
+ }
+
-+ return immutableTypes;
++ return this.immutableTypes;
+ }
+
+ /**
@@ -125,8 +148,10 @@ index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a66
+ *
+ * @param material material to get slot by
+ * @return slot type the material will go in, or null if it won't
++ * @deprecated use {@link #getByItemType(ItemType)}
+ */
+ @Nullable
++ @Deprecated
+ public static SlotType getByMaterial(@NotNull Material material) {
+ for (SlotType slotType : values()) {
+ if (slotType.getTypes().contains(material)) {
@@ -137,13 +162,40 @@ index 0000000000000000000000000000000000000000..e406ce639a2e88b78f82f25e71678a66
+ }
+
+ /**
-+ * Gets whether or not this material can be equipped to a slot
++ * Gets the type of slot via the specified item type
++ *
++ * @param itemType item type to get slot by
++ * @return slot type the item type will go in, or null if it won't
++ */
++ @Nullable
++ public static SlotType getByItemType(@NotNull ItemType itemType) {
++ for (SlotType slotType : values()) {
++ if (slotType.getItemTypes().contains(itemType)) {
++ return slotType;
++ }
++ }
++ return null;
++ }
++
++ /**
++ * Gets whether this material can be equipped to a slot
+ *
+ * @param material material to check
-+ * @return whether or not this material can be equipped
++ * @return whether this material can be equipped
+ */
++ @Deprecated
+ public static boolean isEquipable(@NotNull Material material) {
+ return getByMaterial(material) != null;
+ }
++
++ /**
++ * Gets whether this item type can be equipped to a slot
++ *
++ * @param itemType item type to check
++ * @return whether this item type can be equipped
++ */
++ public static boolean isEquipable(@NotNull ItemType itemType) {
++ return getByItemType(itemType) != null;
++ }
+ }
+}
diff --git a/patches/api/0106-WitchReadyPotionEvent.patch b/patches/api/0106-WitchReadyPotionEvent.patch
index 2231308ed2..76910db894 100644
--- a/patches/api/0106-WitchReadyPotionEvent.patch
+++ b/patches/api/0106-WitchReadyPotionEvent.patch
@@ -7,18 +7,18 @@ Control what potion the witch readies to use
diff --git a/src/main/java/com/destroystokyo/paper/event/entity/WitchReadyPotionEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/WitchReadyPotionEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..57f93af14acc6346c5a343e05fe8f5d44d6adbc6
+index 0000000000000000000000000000000000000000..af74dcd5dccd26661787219eb8873c5be2f981a7
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/event/entity/WitchReadyPotionEvent.java
@@ -0,0 +1,80 @@
+package com.destroystokyo.paper.event.entity;
+
-+import org.bukkit.Material;
+import org.bukkit.entity.Witch;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.entity.EntityEvent;
+import org.bukkit.inventory.ItemStack;
++import org.bukkit.inventory.ItemType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
@@ -40,7 +40,7 @@ index 0000000000000000000000000000000000000000..57f93af14acc6346c5a343e05fe8f5d4
+ public static ItemStack process(@NotNull Witch witch, @Nullable ItemStack potion) {
+ WitchReadyPotionEvent event = new WitchReadyPotionEvent(witch, potion);
+ if (!event.callEvent() || event.getPotion() == null) {
-+ return new ItemStack(Material.AIR);
++ return ItemStack.of(ItemType.AIR);
+ }
+ return event.getPotion();
+ }
diff --git a/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch b/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
index 71a82a8eae..e5e6d776ce 100644
--- a/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
+++ b/patches/api/0110-EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] EntityShootBowEvent consumeArrow and getArrowItem API
Adds ability to get what arrow was shot, and control if it should be consumed.
diff --git a/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
-index d4d7ad9c3c953680342c121f39ddaef476549047..719d0d878320c1903b44076053989ba99fa0e92a 100644
+index d4d7ad9c3c953680342c121f39ddaef476549047..6c27a3149b17162cc38206147c759df066186af0 100644
--- a/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java
@@ -22,7 +22,32 @@ public class EntityShootBowEvent extends EntityEvent implements Cancellable {
@@ -31,7 +31,7 @@ index d4d7ad9c3c953680342c121f39ddaef476549047..719d0d878320c1903b44076053989ba9
+
+ @Deprecated
+ public EntityShootBowEvent(@NotNull final LivingEntity shooter, @Nullable final ItemStack bow, @NotNull final Entity projectile, final float force) {
-+ this(shooter, bow, new ItemStack(org.bukkit.Material.AIR), projectile, force);
++ this(shooter, bow, ItemStack.of(org.bukkit.inventory.ItemType.AIR), projectile, force);
+ }
+ @Deprecated
diff --git a/patches/api/0130-AnvilDamageEvent.patch b/patches/api/0130-AnvilDamageEvent.patch
index cba565dc42..29356f5c26 100644
--- a/patches/api/0130-AnvilDamageEvent.patch
+++ b/patches/api/0130-AnvilDamageEvent.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] AnvilDamageEvent
diff --git a/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..4b90dc67f75b05cb8a766025781b9eaa2fef2606
+index 0000000000000000000000000000000000000000..8174787e87433084035bb3cbc88e041937c56430
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java
@@ -0,0 +1,171 @@
@@ -124,7 +124,7 @@ index 0000000000000000000000000000000000000000..4b90dc67f75b05cb8a766025781b9eaa
+ */
+ @Deprecated
+ public @NotNull Material getMaterial() {
-+ return Bukkit.getUnsafe().toMaterial(this.blockType);
++ return Bukkit.getUnsafe().blockTypeToMaterial(this.blockType);
+ }
+
+ /**
diff --git a/patches/api/0153-Add-Material-Tags.patch b/patches/api/0153-Add-Material-Tags.patch
index cc7d752f2c..b7a6e97cb3 100644
--- a/patches/api/0153-Add-Material-Tags.patch
+++ b/patches/api/0153-Add-Material-Tags.patch
@@ -11,7 +11,7 @@ Co-authored by: Lena Kolb <[email protected]>
diff --git a/src/main/java/com/destroystokyo/paper/MaterialSetTag.java b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java
new file mode 100644
-index 0000000000000000000000000000000000000000..64dd5e6674f83075be0f0868f66f114ff71dbe24
+index 0000000000000000000000000000000000000000..8f5530188e340336dfffb3054c1743b068bc9342
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java
@@ -0,0 +1,119 @@
@@ -100,7 +100,7 @@ index 0000000000000000000000000000000000000000..64dd5e6674f83075be0f0868f66f114f
+ public MaterialSetTag addTags(@NotNull Tag<BlockType>...tags) {
+ for (Tag<BlockType> tag : tags) {
+ for (final BlockType<?> value : tag.getValues()) {
-+ this.add(Bukkit.getUnsafe().toMaterial(value));
++ this.add(Bukkit.getUnsafe().blockTypeToMaterial(value));
+ }
+ }
+ return this;
@@ -127,7 +127,7 @@ index 0000000000000000000000000000000000000000..64dd5e6674f83075be0f0868f66f114f
+ }
+
+ public boolean isTagged(@NotNull BlockType<?> itemType) {
-+ return this.isTagged(Bukkit.getUnsafe().toMaterial(itemType));
++ return this.isTagged(Bukkit.getUnsafe().blockTypeToMaterial(itemType));
+ }
+
+ public boolean isTagged(@NotNull Material material) {
diff --git a/patches/api/0217-Player-elytra-boost-API.patch b/patches/api/0217-Player-elytra-boost-API.patch
index 492cfd1927..d8fc3394c6 100644
--- a/patches/api/0217-Player-elytra-boost-API.patch
+++ b/patches/api/0217-Player-elytra-boost-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
-index c6ee16a347dc10c718c2d277dba1eff76f7edbbf..873a7bafe2631d012d00eb813889b31ec02d0e30 100644
+index c1225aa642eba0e0553131034ee7c55e78b13d10..cfdf406f9b65710438949cc8effe8c3641fe69b7 100644
--- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java
@@ -2717,6 +2717,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@@ -18,10 +18,10 @@ index c6ee16a347dc10c718c2d277dba1eff76f7edbbf..873a7bafe2631d012d00eb813889b31e
+ * If the creation of the entity is cancelled, no boosting is done.
+ * This method does not fire {@link com.destroystokyo.paper.event.player.PlayerElytraBoostEvent}.
+ *
-+ * @param firework The {@link Material#FIREWORK_ROCKET} to boost the player with
++ * @param firework The {@link ItemType#FIREWORK_ROCKET} to boost the player with
+ * @return The {@link Firework} boosting the Player or null if the spawning of the entity was cancelled
+ * @throws IllegalArgumentException if {@link #isGliding()} is false
-+ * or if the {@code firework} isn't a {@link Material#FIREWORK_ROCKET}
++ * or if the {@code firework} isn't a {@link ItemType#FIREWORK_ROCKET}
+ */
+ @Nullable
+ Firework boostElytra(@NotNull ItemStack firework);
diff --git a/patches/api/0225-Add-PlayerItemCooldownEvent.patch b/patches/api/0225-Add-PlayerItemCooldownEvent.patch
index 378f88f6e6..409f1c02de 100644
--- a/patches/api/0225-Add-PlayerItemCooldownEvent.patch
+++ b/patches/api/0225-Add-PlayerItemCooldownEvent.patch
@@ -6,18 +6,20 @@ Subject: [PATCH] Add PlayerItemCooldownEvent
diff --git a/src/main/java/io/papermc/paper/event/player/PlayerItemCooldownEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerItemCooldownEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..58d18f05af13d836ddc62fcd30befcb06f07c57c
+index 0000000000000000000000000000000000000000..74fb75e153f027cd04df160943322341c205129e
--- /dev/null
+++ b/src/main/java/io/papermc/paper/event/player/PlayerItemCooldownEvent.java
-@@ -0,0 +1,77 @@
+@@ -0,0 +1,90 @@
+package io.papermc.paper.event.player;
+
+import com.google.common.base.Preconditions;
++import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
++import org.bukkit.inventory.ItemType;
+import org.jetbrains.annotations.NotNull;
+
+/**
@@ -26,11 +28,11 @@ index 0000000000000000000000000000000000000000..58d18f05af13d836ddc62fcd30befcb0
+public class PlayerItemCooldownEvent extends PlayerEvent implements Cancellable {
+ private static final HandlerList handlers = new HandlerList();
+ @NotNull
-+ private final Material type;
++ private final ItemType type;
+ private boolean cancelled;
+ private int cooldown;
+
-+ public PlayerItemCooldownEvent(@NotNull Player player, @NotNull Material type, int cooldown) {
++ public PlayerItemCooldownEvent(@NotNull Player player, @NotNull ItemType type, int cooldown) {
+ super(player);
+ this.type = type;
+ this.cooldown = cooldown;
@@ -40,10 +42,21 @@ index 0000000000000000000000000000000000000000..58d18f05af13d836ddc62fcd30befcb0
+ * Get the material affected by the cooldown.
+ *
+ * @return material affected by the cooldown
++ * @deprecated use {@link #getItemType()}
+ */
+ @NotNull
++ @Deprecated
+ public Material getType() {
-+ return type;
++ return Bukkit.getUnsafe().toMaterial(this.type);
++ }
++
++ /**
++ * Get the item type affected by the cooldown.
++ *
++ * @return item type affected by the cooldown
++ */
++ public @NotNull ItemType getItemType() {
++ return this.type;
+ }
+
+ /**
diff --git a/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch b/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
index a62e452bb4..01f15cb082 100644
--- a/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
+++ b/patches/api/0326-Add-PlayerItemFrameChangeEvent.patch
@@ -6,19 +6,19 @@ Subject: [PATCH] Add PlayerItemFrameChangeEvent
diff --git a/src/main/java/io/papermc/paper/event/player/PlayerItemFrameChangeEvent.java b/src/main/java/io/papermc/paper/event/player/PlayerItemFrameChangeEvent.java
new file mode 100644
-index 0000000000000000000000000000000000000000..451fb94a5802755c255e04aebb40f178bbfbf996
+index 0000000000000000000000000000000000000000..23d0eecda1b83346880d1db4c87e94fc05dba018
--- /dev/null
+++ b/src/main/java/io/papermc/paper/event/player/PlayerItemFrameChangeEvent.java
@@ -0,0 +1,97 @@
+package io.papermc.paper.event.player;
+
-+import org.bukkit.Material;
+import org.bukkit.entity.ItemFrame;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+import org.bukkit.inventory.ItemStack;
++import org.bukkit.inventory.ItemType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
@@ -67,7 +67,7 @@ index 0000000000000000000000000000000000000000..451fb94a5802755c255e04aebb40f178
+ * @param itemStack {@link ItemFrame} item
+ */
+ public void setItemStack(@Nullable ItemStack itemStack) {
-+ this.itemStack = itemStack == null ? new ItemStack(Material.AIR) : itemStack;
++ this.itemStack = itemStack == null ? ItemStack.of(ItemType.AIR) : itemStack;
+ }
+
+ /**
diff --git a/patches/api/0417-enum-javadoc-fixes.patch b/patches/api/0417-enum-javadoc-fixes.patch
new file mode 100644
index 0000000000..b18704ddcc
--- /dev/null
+++ b/patches/api/0417-enum-javadoc-fixes.patch
@@ -0,0 +1,54 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Tue, 20 Jun 2023 10:52:44 -0700
+Subject: [PATCH] enum javadoc fixes
+
+
+diff --git a/src/main/java/org/bukkit/block/data/BlockData.java b/src/main/java/org/bukkit/block/data/BlockData.java
+index 55f5d09664a7858a67b795465282adcf481a2a65..5cafa1bccfbeaa8a6a5573e993635b935f448985 100644
+--- a/src/main/java/org/bukkit/block/data/BlockData.java
++++ b/src/main/java/org/bukkit/block/data/BlockData.java
+@@ -211,8 +211,8 @@ public interface BlockData extends Cloneable {
+ * This is identical to {@link BlockType#getItemType()}.
+ * For example:
+ * <pre>
+- * {@link ItemType#REDSTONE_WIRE} -> {@link BlockType#REDSTONE}
+- * {@link ItemType#CARROTS} -> {@link BlockType#CARROT}
++ * {@link ItemType#REDSTONE} -> {@link BlockType#REDSTONE_WIRE}
++ * {@link ItemType#CARROT} -> {@link BlockType#CARROTS}
+ * </pre>
+ * @return placement item type or {@link ItemType#AIR} if it doesn't have one
+ */
+diff --git a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
+index 170ebe3edf9fa6ac62cbc1825ea46721ecb961d2..695502ef8b30822e679b5e94d498b3fa18478fc6 100644
+--- a/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
++++ b/src/main/java/org/bukkit/inventory/meta/trim/TrimPattern.java
+@@ -55,23 +55,23 @@ public interface TrimPattern extends Keyed {
+ */
+ public static final TrimPattern SPIRE = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("spire"));
+ /**
+- * {@link Material#WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE}.
++ * {@link ItemType#WAYFINDER_ARMOR_TRIM_SMITHING_TEMPLATE}.
+ */
+ public static final TrimPattern WAYFINDER = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("wayfinder"));
+ /**
+- * {@link Material#SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE}.
++ * {@link ItemType#SHAPER_ARMOR_TRIM_SMITHING_TEMPLATE}.
+ */
+ public static final TrimPattern SHAPER = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("shaper"));
+ /**
+- * {@link Material#SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE}.
++ * {@link ItemType#SILENCE_ARMOR_TRIM_SMITHING_TEMPLATE}.
+ */
+ public static final TrimPattern SILENCE = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("silence"));
+ /**
+- * {@link Material#RAISER_ARMOR_TRIM_SMITHING_TEMPLATE}.
++ * {@link ItemType#RAISER_ARMOR_TRIM_SMITHING_TEMPLATE}.
+ */
+ public static final TrimPattern RAISER = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("raiser"));
+ /**
+- * {@link Material#HOST_ARMOR_TRIM_SMITHING_TEMPLATE}.
++ * {@link ItemType#HOST_ARMOR_TRIM_SMITHING_TEMPLATE}.
+ */
+ public static final TrimPattern HOST = Registry.TRIM_PATTERN.get(NamespacedKey.minecraft("host"));
+ }
diff --git a/patches/api/0417-fixup-Paper-Utils.patch b/patches/api/0417-fixup-Paper-Utils.patch
deleted file mode 100644
index a212a96609..0000000000
--- a/patches/api/0417-fixup-Paper-Utils.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Tue, 20 Jun 2023 09:37:42 -0700
-Subject: [PATCH] fixup! Paper Utils
-
-
-diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
-index 26006c3241efc76f0bbf9ba80bfada4bbf52c278..f04e2c955c03e3c2bf05935c7650356705b2c869 100644
---- a/src/main/java/org/bukkit/UnsafeValues.java
-+++ b/src/main/java/org/bukkit/UnsafeValues.java
-@@ -49,7 +49,7 @@ public interface UnsafeValues {
- Material fromLegacy(MaterialData material, boolean itemPriority);
-
- Material toMaterial(ItemType itemType);
-- Material toMaterial(BlockType<?> blockType); // Paper
-+ Material blockTypeToMaterial(BlockType<?> blockType); // Paper
-
- BlockData fromLegacy(Material material, byte data);
-
diff --git a/patches/api/0418-fixup-Add-Material-Tags.patch b/patches/api/0418-fixup-Add-Material-Tags.patch
deleted file mode 100644
index 28eddb755c..0000000000
--- a/patches/api/0418-fixup-Add-Material-Tags.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Tue, 20 Jun 2023 09:37:53 -0700
-Subject: [PATCH] fixup! Add Material Tags
-
-
-diff --git a/src/main/java/com/destroystokyo/paper/MaterialSetTag.java b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java
-index 64dd5e6674f83075be0f0868f66f114ff71dbe24..8f5530188e340336dfffb3054c1743b068bc9342 100644
---- a/src/main/java/com/destroystokyo/paper/MaterialSetTag.java
-+++ b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java
-@@ -83,7 +83,7 @@ public class MaterialSetTag extends BaseTag<Material, MaterialSetTag> {
- public MaterialSetTag addTags(@NotNull Tag<BlockType>...tags) {
- for (Tag<BlockType> tag : tags) {
- for (final BlockType<?> value : tag.getValues()) {
-- this.add(Bukkit.getUnsafe().toMaterial(value));
-+ this.add(Bukkit.getUnsafe().blockTypeToMaterial(value));
- }
- }
- return this;
-@@ -110,7 +110,7 @@ public class MaterialSetTag extends BaseTag<Material, MaterialSetTag> {
- }
-
- public boolean isTagged(@NotNull BlockType<?> itemType) {
-- return this.isTagged(Bukkit.getUnsafe().toMaterial(itemType));
-+ return this.isTagged(Bukkit.getUnsafe().blockTypeToMaterial(itemType));
- }
-
- public boolean isTagged(@NotNull Material material) {
diff --git a/patches/api/0419-fixup-AnvilDamageEvent.patch b/patches/api/0419-fixup-AnvilDamageEvent.patch
deleted file mode 100644
index 9f1ce71792..0000000000
--- a/patches/api/0419-fixup-AnvilDamageEvent.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Tue, 20 Jun 2023 09:38:01 -0700
-Subject: [PATCH] fixup! AnvilDamageEvent
-
-
-diff --git a/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java
-index 4b90dc67f75b05cb8a766025781b9eaa2fef2606..8174787e87433084035bb3cbc88e041937c56430 100644
---- a/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java
-+++ b/src/main/java/com/destroystokyo/paper/event/block/AnvilDamagedEvent.java
-@@ -112,7 +112,7 @@ public class AnvilDamagedEvent extends InventoryEvent implements Cancellable {
- */
- @Deprecated
- public @NotNull Material getMaterial() {
-- return Bukkit.getUnsafe().toMaterial(this.blockType);
-+ return Bukkit.getUnsafe().blockTypeToMaterial(this.blockType);
- }
-
- /**
diff --git a/patches/server/0229-Don-t-call-getItemMeta-on-hasItemMeta.patch b/patches/server/0229-Don-t-call-getItemMeta-on-hasItemMeta.patch
index a9ffa5d88c..02f68ecc24 100644
--- a/patches/server/0229-Don-t-call-getItemMeta-on-hasItemMeta.patch
+++ b/patches/server/0229-Don-t-call-getItemMeta-on-hasItemMeta.patch
@@ -24,7 +24,7 @@ index 73e5a7f7aa6021715d0d936935470e7f81ada5fa..a30ccb1ff3a02ce482ce2b0d40c76dd0
static boolean hasItemMeta(net.minecraft.world.item.ItemStack item) {
diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
-index 76106ce9aa33dec5ad3768c4a7077dc5f0b48523..f501fe0207d78162789c619857eca69ea9a79304 100644
+index 76106ce9aa33dec5ad3768c4a7077dc5f0b48523..d3aebaf4e3f1e17b717011bba04e4c28969411ce 100644
--- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
+++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java
@@ -110,6 +110,34 @@ public class ItemMetaTest extends AbstractTestingBase {
@@ -52,7 +52,7 @@ index 76106ce9aa33dec5ad3768c4a7077dc5f0b48523..f501fe0207d78162789c619857eca69e
+
+ @Test
+ public void testHasItemMeta() {
-+ ItemStack itemStack = new ItemStack(Material.SHEARS);
++ ItemStack itemStack = ItemStack.of(ItemType.SHEARS);
+
+ testItemMeta(itemStack);
+ testItemMeta(CraftItemStack.asCraftCopy(itemStack));
diff --git a/patches/server/0497-Add-PlayerItemCooldownEvent.patch b/patches/server/0497-Add-PlayerItemCooldownEvent.patch
index 751841d117..c365ed5f27 100644
--- a/patches/server/0497-Add-PlayerItemCooldownEvent.patch
+++ b/patches/server/0497-Add-PlayerItemCooldownEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerItemCooldownEvent
diff --git a/src/main/java/net/minecraft/world/item/ServerItemCooldowns.java b/src/main/java/net/minecraft/world/item/ServerItemCooldowns.java
-index 47283d2a49209839002212e663a503a82ea86587..ce026600b3b5c846d991a0dfe599708caf2a2962 100644
+index 47283d2a49209839002212e663a503a82ea86587..c59771530ef8d57e8d6aaf353dcbdb834fe35495 100644
--- a/src/main/java/net/minecraft/world/item/ServerItemCooldowns.java
+++ b/src/main/java/net/minecraft/world/item/ServerItemCooldowns.java
@@ -10,6 +10,16 @@ public class ServerItemCooldowns extends ItemCooldowns {
@@ -15,7 +15,7 @@ index 47283d2a49209839002212e663a503a82ea86587..ce026600b3b5c846d991a0dfe599708c
+ // Paper start
+ @Override
+ public void addCooldown(Item item, int duration) {
-+ io.papermc.paper.event.player.PlayerItemCooldownEvent event = new io.papermc.paper.event.player.PlayerItemCooldownEvent(this.player.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(item), duration);
++ io.papermc.paper.event.player.PlayerItemCooldownEvent event = new io.papermc.paper.event.player.PlayerItemCooldownEvent(this.player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemType.minecraftToBukkit(item), duration);
+ if (event.callEvent()) {
+ super.addCooldown(item, event.getCooldown());
+ }
diff --git a/patches/server/0520-Implement-PlayerFlowerPotManipulateEvent.patch b/patches/server/0520-Implement-PlayerFlowerPotManipulateEvent.patch
index 8f512f54d6..ed2fab78e7 100644
--- a/patches/server/0520-Implement-PlayerFlowerPotManipulateEvent.patch
+++ b/patches/server/0520-Implement-PlayerFlowerPotManipulateEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement PlayerFlowerPotManipulateEvent
diff --git a/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java b/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java
-index 9a8fc69de43fcfeebcb31c895fa4b5868952fa0a..db05c1ea847d60ad45d33cd798cb34ad3f5cfd75 100644
+index 9a8fc69de43fcfeebcb31c895fa4b5868952fa0a..430ddc8f75730b854d7a0cc43ebcdda2f9e33fa5 100644
--- a/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FlowerPotBlock.java
-@@ -52,6 +52,26 @@ public class FlowerPotBlock extends Block {
+@@ -52,6 +52,25 @@ public class FlowerPotBlock extends Block {
boolean bl = blockState.is(Blocks.AIR);
boolean bl2 = this.isEmpty();
if (bl != bl2) {
@@ -17,8 +17,7 @@ index 9a8fc69de43fcfeebcb31c895fa4b5868952fa0a..db05c1ea847d60ad45d33cd798cb34ad
+ boolean placing = bl2;
+ org.bukkit.block.Block bukkitblock = org.bukkit.craftbukkit.block.CraftBlock.at(world, pos);
+ org.bukkit.inventory.ItemStack bukkititemstack = org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(itemStack);
-+ org.bukkit.Material mat = org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(content);
-+ org.bukkit.inventory.ItemStack bukkititemstack1 = new org.bukkit.inventory.ItemStack(mat, 1);
++ org.bukkit.inventory.ItemStack bukkititemstack1 = org.bukkit.inventory.ItemStack.of(org.bukkit.craftbukkit.inventory.CraftItemType.minecraftToBukkit(this.content.asItem()));
+ org.bukkit.inventory.ItemStack whichitem = placing ? bukkititemstack : bukkititemstack1;
+
+ io.papermc.paper.event.player.PlayerFlowerPotManipulateEvent event = new io.papermc.paper.event.player.PlayerFlowerPotManipulateEvent(player1, bukkitblock, whichitem, placing);
diff --git a/patches/server/0714-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch b/patches/server/0714-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
index e744de6067..ed9cf53da8 100644
--- a/patches/server/0714-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
+++ b/patches/server/0714-Fix-setPatternColor-on-tropical-fish-bucket-meta.patch
@@ -25,16 +25,17 @@ index 259c4f0f85c79bf5f0e81520937aedff73f929a5..43264db3a2ff9ad25522df9abbbf0069
@Override
diff --git a/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java b/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java
new file mode 100644
-index 0000000000000000000000000000000000000000..2e7f8ef88ae74c7cbfdb7f397951cbc8479a995f
+index 0000000000000000000000000000000000000000..54537b7d425a40f4c02d356d7d85535a94e3d617
--- /dev/null
+++ b/src/test/java/io/papermc/paper/inventory/CraftMetaTropicalFishBucketTest.java
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,41 @@
+package io.papermc.paper.inventory;
+
+import org.bukkit.DyeColor;
-+import org.bukkit.Material;
+import org.bukkit.entity.TropicalFish;
+import org.bukkit.inventory.ItemStack;
++import org.bukkit.inventory.ItemType;
++import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.inventory.meta.TropicalFishBucketMeta;
+import org.bukkit.support.AbstractTestingBase;
+import org.junit.Assert;
@@ -44,14 +45,14 @@ index 0000000000000000000000000000000000000000..2e7f8ef88ae74c7cbfdb7f397951cbc8
+
+ @Test
+ public void testAllCombinations() {
-+ final var rawMeta = new ItemStack(Material.TROPICAL_FISH_BUCKET).getItemMeta();
++ final ItemMeta rawMeta = ItemStack.of(ItemType.TROPICAL_FISH_BUCKET).getItemMeta();
+ Assert.assertTrue("Meta was not a tropical fish bucket", rawMeta instanceof TropicalFishBucketMeta);
+
-+ final var meta = (TropicalFishBucketMeta) rawMeta;
++ final TropicalFishBucketMeta meta = (TropicalFishBucketMeta) rawMeta;
+
-+ for (final var bodyColor : DyeColor.values()) {
-+ for (final var pattern : TropicalFish.Pattern.values()) {
-+ for (final var patternColor : DyeColor.values()) {
++ for (final DyeColor bodyColor : DyeColor.values()) {
++ for (final TropicalFish.Pattern pattern : TropicalFish.Pattern.values()) {
++ for (final DyeColor patternColor : DyeColor.values()) {
+ meta.setBodyColor(bodyColor);
+ Assert.assertEquals("Body color did not match post body color!", bodyColor, meta.getBodyColor());
+
diff --git a/patches/server/0798-Make-some-itemstacks-nonnull.patch b/patches/server/0798-Make-some-itemstacks-nonnull.patch
index 153d145fd3..07815c33fa 100644
--- a/patches/server/0798-Make-some-itemstacks-nonnull.patch
+++ b/patches/server/0798-Make-some-itemstacks-nonnull.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Make some itemstacks nonnull
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
-index f89a1b1c1902b16f6640c9a95f5b72351b60ceda..0c80dea986b0b63b2182c4ca0d23d6534f753cb0 100644
+index f89a1b1c1902b16f6640c9a95f5b72351b60ceda..3eb85fa40a6b55d5f820ca436c47b8e883ebae90 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java
@@ -155,13 +155,13 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@@ -13,16 +13,16 @@ index f89a1b1c1902b16f6640c9a95f5b72351b60ceda..0c80dea986b0b63b2182c4ca0d23d653
return this.getItemInOffHand();
case FEET:
- return this.getBoots();
-+ return java.util.Objects.requireNonNullElseGet(this.getBoots(), () -> new ItemStack(org.bukkit.Material.AIR)); // Paper - make nonnull
++ return java.util.Objects.requireNonNullElseGet(this.getBoots(), () -> ItemStack.of(org.bukkit.inventory.ItemType.AIR)); // Paper - make nonnull
case LEGS:
- return this.getLeggings();
-+ return java.util.Objects.requireNonNullElseGet(this.getLeggings(), () -> new ItemStack(org.bukkit.Material.AIR)); // Paper - make nonnull
++ return java.util.Objects.requireNonNullElseGet(this.getLeggings(), () -> ItemStack.of(org.bukkit.inventory.ItemType.AIR)); // Paper - make nonnull
case CHEST:
- return this.getChestplate();
-+ return java.util.Objects.requireNonNullElseGet(this.getChestplate(), () -> new ItemStack(org.bukkit.Material.AIR)); // Paper - make nonnull
++ return java.util.Objects.requireNonNullElseGet(this.getChestplate(), () -> ItemStack.of(org.bukkit.inventory.ItemType.AIR)); // Paper - make nonnull
case HEAD:
- return this.getHelmet();
-+ return java.util.Objects.requireNonNullElseGet(this.getHelmet(), () -> new ItemStack(org.bukkit.Material.AIR)); // Paper - make nonnull
++ return java.util.Objects.requireNonNullElseGet(this.getHelmet(), () -> ItemStack.of(org.bukkit.inventory.ItemType.AIR)); // Paper - make nonnull
default:
throw new IllegalArgumentException("Not implemented. This is a bug");
}