aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0284-More-Enchantment-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0284-More-Enchantment-API.patch')
-rw-r--r--patches/api/0284-More-Enchantment-API.patch171
1 files changed, 171 insertions, 0 deletions
diff --git a/patches/api/0284-More-Enchantment-API.patch b/patches/api/0284-More-Enchantment-API.patch
new file mode 100644
index 0000000000..98c3ef060b
--- /dev/null
+++ b/patches/api/0284-More-Enchantment-API.patch
@@ -0,0 +1,171 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Thu, 6 May 2021 19:58:03 -0700
+Subject: [PATCH] More Enchantment API
+
+Co-authored-by: Luis <[email protected]>
+
+diff --git a/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..e6a40c1fcea761bd66743b50e3da3d14797d05b0
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
+@@ -0,0 +1,24 @@
++package io.papermc.paper.enchantments;
++
++public enum EnchantmentRarity {
++
++ COMMON(10),
++ UNCOMMON(5),
++ RARE(2),
++ VERY_RARE(1);
++
++ private final int weight;
++
++ EnchantmentRarity(int weight) {
++ this.weight = weight;
++ }
++
++ /**
++ * Gets the weight for the rarity.
++ *
++ * @return the weight
++ */
++ public int getWeight() {
++ return weight;
++ }
++}
+diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java
+index 4a88198be6634b47fc51e55acc5f6415e4aff1ab..d50d4c3121a966adcc47173ddb4575f7ad504148 100644
+--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
++++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
+@@ -269,11 +269,7 @@ public abstract class Enchantment implements Keyed, net.kyori.adventure.translat
+ * Cursed enchantments are found the same way treasure enchantments are
+ *
+ * @return true if the enchantment is cursed
+- * @deprecated cursed enchantments are no longer special. Will return true
+- * only for {@link Enchantment#BINDING_CURSE} and
+- * {@link Enchantment#VANISHING_CURSE}.
+ */
+- @Deprecated
+ public abstract boolean isCursed();
+
+ /**
+@@ -307,6 +303,70 @@ public abstract class Enchantment implements Keyed, net.kyori.adventure.translat
+ * @return the name of the enchantment with {@code level} applied
+ */
+ public abstract net.kyori.adventure.text.@NotNull Component displayName(int level);
++
++ /**
++ * Checks if this enchantment can be found in villager trades.
++ *
++ * @return true if the enchantment can be found in trades
++ */
++ public abstract boolean isTradeable();
++
++ /**
++ * Checks if this enchantment can be found in an enchanting table
++ * or use to enchant items generated by loot tables.
++ *
++ * @return true if the enchantment can be found in a table or by loot tables
++ */
++ public abstract boolean isDiscoverable();
++
++ /**
++ * Gets the minimum modified cost of this enchantment at a specific level.
++ * <p>
++ * Note this is not the number of experience levels needed, and does not directly translate to the levels shown in an enchanting table.
++ * This value is used in combination with factors such as tool enchantability to determine a final cost.
++ * See <a href="https://minecraft.wiki/w/Enchanting/Levels">https://minecraft.wiki/w/Enchanting/Levels</a> for more information.
++ * </p>
++ * @param level The level of the enchantment
++ * @return The modified cost of this enchantment
++ */
++ public abstract int getMinModifiedCost(int level);
++
++ /**
++ * Gets the maximum modified cost of this enchantment at a specific level.
++ * <p>
++ * Note this is not the number of experience levels needed, and does not directly translate to the levels shown in an enchanting table.
++ * This value is used in combination with factors such as tool enchantability to determine a final cost.
++ * See <a href="https://minecraft.wiki/w/Enchanting/Levels">https://minecraft.wiki/w/Enchanting/Levels</a> for more information.
++ * </p>
++ * @param level The level of the enchantment
++ * @return The modified cost of this enchantment
++ */
++ public abstract int getMaxModifiedCost(int level);
++
++ /**
++ * Gets the rarity of this enchantment.
++ *
++ * @return the rarity
++ */
++ @NotNull
++ public abstract io.papermc.paper.enchantments.EnchantmentRarity getRarity();
++
++ /**
++ * Gets the damage increase as a result of the level and entity category specified
++ *
++ * @param level the level of enchantment
++ * @param entityCategory the category of entity
++ * @return the damage increase
++ */
++ public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory);
++
++ /**
++ * Gets the equipment slots where this enchantment is considered "active".
++ *
++ * @return the equipment slots
++ */
++ @NotNull
++ public abstract java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots();
+ // Paper end
+
+ /**
+diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
+index ac0371285370594d4de1554871b19bbcd2311730..da5d153a3e55a38b767359564001ad8663f9730b 100644
+--- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
++++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
+@@ -31,5 +31,42 @@ public abstract class EnchantmentWrapper extends Enchantment {
+ public @NotNull String translationKey() {
+ return getEnchantment().translationKey();
+ }
++
++ @Override
++ public boolean isTradeable() {
++ return getEnchantment().isTradeable();
++ }
++
++ @Override
++ public boolean isDiscoverable() {
++ return getEnchantment().isDiscoverable();
++ }
++
++ @Override
++ public int getMinModifiedCost(int level) {
++ return getEnchantment().getMinModifiedCost(level);
++ }
++
++ @Override
++ public int getMaxModifiedCost(int level) {
++ return getEnchantment().getMaxModifiedCost(level);
++ }
++
++ @NotNull
++ @Override
++ public io.papermc.paper.enchantments.EnchantmentRarity getRarity() {
++ return getEnchantment().getRarity();
++ }
++
++ @Override
++ public float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory) {
++ return getEnchantment().getDamageIncrease(level, entityCategory);
++ }
++
++ @NotNull
++ @Override
++ public java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots() {
++ return getEnchantment().getActiveSlots();
++ }
+ // Paper end
+ }