diff options
Diffstat (limited to 'patches/server/0537-More-Enchantment-API.patch')
-rw-r--r-- | patches/server/0537-More-Enchantment-API.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/patches/server/0537-More-Enchantment-API.patch b/patches/server/0537-More-Enchantment-API.patch new file mode 100644 index 0000000000..692f90b66a --- /dev/null +++ b/patches/server/0537-More-Enchantment-API.patch @@ -0,0 +1,101 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Thu, 6 May 2021 19:57:58 -0700 +Subject: [PATCH] More Enchantment API + +== AT == +public net.minecraft.world.item.enchantment.Enchantment definition + +Co-authored-by: Luis <[email protected]> +Co-authored-by: Janet Blackquill <[email protected]> + +diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +index fc6606e1bf2e2c35cb6c84af78859c3441775907..edf4df4d13dc814e98b897a3f8a5fd4757284299 100644 +--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java ++++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +@@ -5,6 +5,7 @@ import java.util.Locale; + import net.minecraft.Util; + import net.minecraft.core.Holder; + import net.minecraft.core.registries.Registries; ++import net.minecraft.network.chat.contents.TranslatableContents; + import net.minecraft.tags.EnchantmentTags; + import org.bukkit.NamespacedKey; + import org.bukkit.Registry; +@@ -90,7 +91,7 @@ public class CraftEnchantment extends Enchantment implements Handleable<net.mine + + @Override + public boolean isTreasure() { +- return !this.handle.is(EnchantmentTags.IN_ENCHANTING_TABLE); ++ return this.handle.is(EnchantmentTags.TREASURE); // Paper - use treasure tag + } + + @Override +@@ -148,12 +149,66 @@ public class CraftEnchantment extends Enchantment implements Handleable<net.mine + // Paper start + @Override + public net.kyori.adventure.text.Component displayName(int level) { +- return io.papermc.paper.adventure.PaperAdventure.asAdventure(getHandle().getFullname(level)); ++ return io.papermc.paper.adventure.PaperAdventure.asAdventure(net.minecraft.world.item.enchantment.Enchantment.getFullname(this.handle, level)); + } + + @Override + public String translationKey() { +- return this.handle.getDescriptionId(); ++ if (!(this.getHandle().description().getContents() instanceof final TranslatableContents translatableContents)) { ++ throw new UnsupportedOperationException("Description isn't translatable!"); // Paper ++ } ++ return translatableContents.getKey(); ++ } ++ ++ @Override ++ public boolean isTradeable() { ++ return this.handle.is(EnchantmentTags.TRADEABLE); ++ } ++ ++ @Override ++ public boolean isDiscoverable() { ++ return this.handle.is(EnchantmentTags.IN_ENCHANTING_TABLE) ++ || this.handle.is(EnchantmentTags.ON_RANDOM_LOOT) ++ || this.handle.is(EnchantmentTags.ON_MOB_SPAWN_EQUIPMENT) ++ || this.handle.is(EnchantmentTags.TRADEABLE) ++ || this.handle.is(EnchantmentTags.ON_TRADED_EQUIPMENT); ++ } ++ ++ @Override ++ public int getMinModifiedCost(int level) { ++ return this.getHandle().definition().minCost().calculate(level); ++ } ++ ++ @Override ++ public int getMaxModifiedCost(int level) { ++ return this.getHandle().definition().maxCost().calculate(level); ++ } ++ ++ @Override ++ public int getAnvilCost() { ++ return this.getHandle().definition().anvilCost(); ++ } ++ ++ @Override ++ public io.papermc.paper.enchantments.EnchantmentRarity getRarity() { ++ throw new UnsupportedOperationException("Enchantments don't have a rarity anymore in 1.20.5+."); ++ } ++ ++ @Override ++ public float getDamageIncrease(int level, org.bukkit.entity.EntityCategory entityCategory) { ++ throw new UnsupportedOperationException("Enchantments are based on complex effect maps since 1.21, cannot compute a simple damage increase"); ++ } ++ ++ @Override ++ public float getDamageIncrease(int level, org.bukkit.entity.EntityType entityType) { ++ throw new UnsupportedOperationException("Enchantments are based on complex effect maps since 1.21, cannot compute a simple damage increase"); ++ } ++ ++ @Override ++ public java.util.Set<org.bukkit.inventory.EquipmentSlotGroup> getActiveSlotGroups() { ++ return this.getHandle().definition().slots().stream() ++ .map(org.bukkit.craftbukkit.CraftEquipmentSlot::getSlot) ++ .collect(java.util.stream.Collectors.toSet()); + } + // Paper end + |