mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 23:10:16 +01:00
da7138233f
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: ed0ec489 SPIGOT-7965: Unknown TransformReason for Hoglins 9db03457 SPIGOT-7964: Fix typo in Deprecation annotation d14119af PR-1082: Add "since" to Deprecation annotations e8a318d4 PR-1067: Add method to get Advancement requirements CraftBukkit Changes: 40dd796db SPIGOT-7971: NotSerializableException on serialize CraftUseCooldownComponent fa85c5e0a SPIGOT-7968: ProjectileHitEvent not trigerred when arrow hits entity b75b792ec SPIGOT-7970: World#getMaxHeight() returning incorrect value 2b9a094bb SPIGOT-7965: Unknown TransformReason for Hoglins fd3f5a380 SPIGOT-7966: Some trees do not generate with #generateTree f2822317c PR-1515: Add a Class reader and Class node argument provider 07abf6852 PR-1514: Add a test case for ClassTraverser a7577cb24 Fix Inventory#addItem not respecting max stack size 066a74e74 PR-1490: Add method to get Advancement requirements 4a1df30e4 PR-1512: Test Art class based on specific values instead of the implementation, to better catch implementation changes 53254c56f PR-1503: Simplify CAS loop to getAndSet e9447dc5e Make BlockDataMeta#setBlockData hide unspecified states dd08a7120 SPIGOT-7960: Fix inconsistency between natural item drop coordinates e9e8ed753 SPIGOT-7960: Improve natural item drop methods Spigot Changes: 60c9969b Rebuild patches
224 lines
8.7 KiB
Diff
224 lines
8.7 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
|
|
|
|
Co-authored-by: Luis <luisc99@icloud.com>
|
|
Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
|
|
|
|
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..aec3b41d7c3388e26fa203e3c062f1e6a6d0ba41
|
|
--- /dev/null
|
|
+++ b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
|
|
@@ -0,0 +1,28 @@
|
|
+package io.papermc.paper.enchantments;
|
|
+
|
|
+/**
|
|
+ * @deprecated Enchantments do not have a "rarity" since 1.20.5
|
|
+ */
|
|
+@Deprecated(forRemoval = true, since = "1.20.5")
|
|
+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 72251952e771152016e32a3fe8bd06ec47c8ee6c..fa20a0f13bb91955e2928b46c99ddaf0c4418d15 100644
|
|
--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
|
|
+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
|
@@ -284,11 +284,7 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve
|
|
* 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(since = "1.13")
|
|
public abstract boolean isCursed();
|
|
|
|
/**
|
|
@@ -324,6 +320,118 @@ public abstract class Enchantment implements Keyed, Translatable, net.kyori.adve
|
|
public abstract net.kyori.adventure.text.@NotNull Component displayName(int level);
|
|
// Paper end
|
|
|
|
+ // Paper start - more Enchantment API
|
|
+ /**
|
|
+ * 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 cost of applying this enchantment using an anvil.
|
|
+ * <p>
|
|
+ * Note that this is halved when using an enchantment book, and is multiplied by the level of the enchantment.
|
|
+ * See <a href="https://minecraft.wiki/w/Anvil_mechanics">https://minecraft.wiki/w/Anvil_mechanics</a> for more information.
|
|
+ * </p>
|
|
+ * @return The anvil cost of this enchantment
|
|
+ */
|
|
+ public abstract int getAnvilCost();
|
|
+
|
|
+ /**
|
|
+ * Gets the rarity of this enchantment.
|
|
+ *
|
|
+ * @return the rarity
|
|
+ * @deprecated As of 1.20.5 enchantments do not have a rarity.
|
|
+ */
|
|
+ @NotNull
|
|
+ @Deprecated(forRemoval = true, since = "1.20.5")
|
|
+ @Contract("-> fail")
|
|
+ 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
|
|
+ * @deprecated Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.
|
|
+ */
|
|
+ @Contract("_, _ -> fail")
|
|
+ @Deprecated(forRemoval = true, since = "1.20.5")
|
|
+ public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory);
|
|
+
|
|
+ /**
|
|
+ * Gets the damage increase as a result of the level and entity type specified
|
|
+ *
|
|
+ * @param level the level of enchantment
|
|
+ * @param entityType the type of entity.
|
|
+ * @return the damage increase
|
|
+ * @deprecated Enchantments now have a complex effect systems that cannot be reduced to a simple damage increase.
|
|
+ */
|
|
+ @Contract("_, _ -> fail")
|
|
+ @Deprecated(forRemoval = true, since = "1.21")
|
|
+ public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityType entityType);
|
|
+
|
|
+ /**
|
|
+ * Gets the equipment slots where this enchantment is considered "active".
|
|
+ *
|
|
+ * @return the equipment slots
|
|
+ * @deprecated Use {@link #getActiveSlotGroups()} instead as enchantments are now applicable to a group of equipment slots.
|
|
+ */
|
|
+ @NotNull
|
|
+ @Deprecated(forRemoval = true, since = "1.21")
|
|
+ public java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots() {
|
|
+ final java.util.Set<org.bukkit.inventory.EquipmentSlotGroup> slots = this.getActiveSlotGroups();
|
|
+ return java.util.Arrays.stream(org.bukkit.inventory.EquipmentSlot.values()).filter(e -> {
|
|
+ for (final org.bukkit.inventory.EquipmentSlotGroup group : slots) {
|
|
+ if (group.test(e)) return true;
|
|
+ }
|
|
+ return false;
|
|
+ }).collect(java.util.stream.Collectors.toSet());
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the equipment slots where this enchantment is considered "active".
|
|
+ *
|
|
+ * @return the equipment slots
|
|
+ */
|
|
+ @NotNull
|
|
+ public abstract java.util.Set<org.bukkit.inventory.EquipmentSlotGroup> getActiveSlotGroups();
|
|
+ // Paper end - more Enchantment API
|
|
+
|
|
// Paper start - mark translation key as deprecated
|
|
/**
|
|
* @deprecated this method assumes that the enchantments description
|
|
diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
|
index f4422da4ebb0dc6551305f3e8468817eb08bdbc9..ca3b2f9be7802f94bacc46e28e396054089f2737 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
|
|
}
|