aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0357-Add-enchantWithLevels-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0357-Add-enchantWithLevels-API.patch')
-rw-r--r--patches/api/0357-Add-enchantWithLevels-API.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/patches/api/0357-Add-enchantWithLevels-API.patch b/patches/api/0357-Add-enchantWithLevels-API.patch
new file mode 100644
index 0000000000..fe08c8a617
--- /dev/null
+++ b/patches/api/0357-Add-enchantWithLevels-API.patch
@@ -0,0 +1,62 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Wed, 16 Mar 2022 20:35:13 -0700
+Subject: [PATCH] Add enchantWithLevels API
+
+
+diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
+index 67d3105258fe4e8165a662dd65bc501b30fcff51..5a2e091785043e66c5560e870e3729fa70b28bb4 100644
+--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
++++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
+@@ -161,6 +161,22 @@ public interface ItemFactory {
+ Material updateMaterial(@NotNull final ItemMeta meta, @NotNull final Material material) throws IllegalArgumentException;
+
+ // Paper start
++ /**
++ * Randomly enchants a copy of the provided {@link ItemStack} using the given experience levels.
++ *
++ * <p>If the provided ItemStack is already enchanted, the existing enchants will be removed before enchanting.</p>
++ *
++ * <p>Levels must be in range {@code [1, 30]}.</p>
++ *
++ * @param itemStack ItemStack to enchant
++ * @param levels levels to use for enchanting
++ * @param allowTreasure whether to allow enchantments where {@link org.bukkit.enchantments.Enchantment#isTreasure()} returns true
++ * @param random {@link java.util.Random} instance to use for enchanting
++ * @return enchanted copy of the provided ItemStack
++ * @throws IllegalArgumentException on bad arguments
++ */
++ @NotNull ItemStack enchantWithLevels(@NotNull ItemStack itemStack, @org.jetbrains.annotations.Range(from = 1, to = 30) int levels, boolean allowTreasure, @NotNull java.util.Random random);
++
+ /**
+ * Creates a hover event for the given item.
+ *
+diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
+index f9faef1b73b5027a3d22e76a0b33b7c952f3ae08..eac7adf622b91489711a2f8bcff77fb31292dd67 100644
+--- a/src/main/java/org/bukkit/inventory/ItemStack.java
++++ b/src/main/java/org/bukkit/inventory/ItemStack.java
+@@ -656,6 +656,24 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
+ }
+
+ // Paper start
++ /**
++ * Randomly enchants a copy of this {@link ItemStack} using the given experience levels.
++ *
++ * <p>If this ItemStack is already enchanted, the existing enchants will be removed before enchanting.</p>
++ *
++ * <p>Levels must be in range {@code [1, 30]}.</p>
++ *
++ * @param levels levels to use for enchanting
++ * @param allowTreasure whether to allow enchantments where {@link org.bukkit.enchantments.Enchantment#isTreasure()} returns true
++ * @param random {@link java.util.Random} instance to use for enchanting
++ * @return enchanted copy of the provided ItemStack
++ * @throws IllegalArgumentException on bad arguments
++ */
++ @NotNull
++ public ItemStack enchantWithLevels(final @org.jetbrains.annotations.Range(from = 1, to = 30) int levels, final boolean allowTreasure, final @NotNull java.util.Random random) {
++ return Bukkit.getServer().getItemFactory().enchantWithLevels(this, levels, allowTreasure, random);
++ }
++
+ @NotNull
+ @Override
+ public net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final @NotNull java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op) {