From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Fri, 19 Jul 2024 08:43:01 -0700 Subject: [PATCH] Add even more Enchantment API In a separate patch because it uses RegistryKeySet which is after the previous "more enchant api" patch. diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java index ddd44191c67c1926e615edabb82ed0b592fbee09..43e306584988e39a6daca78c621a937acdce48a1 100644 --- a/src/main/java/org/bukkit/enchantments/Enchantment.java +++ b/src/main/java/org/bukkit/enchantments/Enchantment.java @@ -432,6 +432,56 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve public abstract java.util.Set getActiveSlotGroups(); // Paper end - more Enchantment API + // Paper start - even more Enchantment API + /** + * Provides the description of this enchantment entry as displayed to the client, e.g. "Sharpness" for the sharpness + * enchantment. + * + * @return the description component. + */ + public abstract net.kyori.adventure.text.@NotNull Component description(); + + /** + * Provides the registry key set referencing the items this enchantment is supported on. + * + * @return the registry key set. + */ + @org.jetbrains.annotations.ApiStatus.Experimental + public abstract io.papermc.paper.registry.set.@NotNull RegistryKeySet getSupportedItems(); + + /** + * Provides the registry key set referencing the item types this enchantment can be applied to when + * enchanting in an enchantment table. + *

+ * If this value is {@code null}, {@link #getSupportedItems()} will be sourced instead in the context of an enchantment table. + * Additionally, the tag {@link io.papermc.paper.registry.keys.tags.EnchantmentTagKeys#IN_ENCHANTING_TABLE} defines + * which enchantments can even show up in an enchantment table. + * + * @return the registry key set. + */ + @org.jetbrains.annotations.ApiStatus.Experimental + public abstract io.papermc.paper.registry.set.@Nullable RegistryKeySet getPrimaryItems(); + + /** + * Provides the weight of this enchantment used by the weighted random when selecting enchantments. + * + * @return the weight value. + * @see https://minecraft.wiki/w/Enchanting for examplary weights. + */ + public abstract int getWeight(); + + /** + * Provides the registry key set of enchantments that this enchantment is exclusive with. + *

+ * Exclusive enchantments prohibit the application of this enchantment to an item if they are already present on + * said item. + * + * @return a registry set of enchantments exclusive to this one. + */ + @org.jetbrains.annotations.ApiStatus.Experimental + public abstract io.papermc.paper.registry.set.@NotNull RegistryKeySet getExclusiveWith(); + // Paper end - even more Enchantment API + // Paper start - mark translation key as deprecated /** * @deprecated this method assumes that the enchantments description