PaperMC/Unmapped-Spigot-API-Patches/0303-More-Enchantment-API.patch
2021-06-11 06:35:46 -05:00

124 lines
4.1 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
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..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
@@ -0,0 +0,0 @@
+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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
@@ -0,0 +0,0 @@ public abstract class Enchantment implements Keyed {
* @return the name of the enchantment with {@code level} applied
*/
public abstract @NotNull net.kyori.adventure.text.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<org.bukkit.inventory.EquipmentSlot> getActiveSlots();
// Paper end
@Override
diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
+++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
@@ -0,0 +0,0 @@ public class EnchantmentWrapper extends Enchantment {
public net.kyori.adventure.text.Component displayName(int level) {
return getEnchantment().displayName(level);
}
+
+ @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<org.bukkit.inventory.EquipmentSlot> getActiveSlots() {
+ return getEnchantment().getActiveSlots();
+ }
// Paper end
}