From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Thu, 6 May 2021 19:58:03 -0700 Subject: [PATCH] More Enchantment API 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 0eb240094901b66c118c5a68bc0b2d0396ec6835..5fa52263028f983bc6ba79cc47f6f71709fb117c 100644 --- a/src/main/java/org/bukkit/enchantments/Enchantment.java +++ b/src/main/java/org/bukkit/enchantments/Enchantment.java @@ -267,11 +267,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(); /** @@ -305,6 +301,46 @@ 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 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 getActiveSlots(); // Paper end /** diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java index fa6613efcfcee70507c77ee40460d35c3957d91b..bfdac08bfcb83b20397675066e48ae2572277ada 100644 --- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java +++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java @@ -82,5 +82,32 @@ public 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(); + } + + @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 getActiveSlots() { + return getEnchantment().getActiveSlots(); + } // Paper end }