From e72be60b161b22af300e2478c91a4688727c5f8c Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 29 Aug 2021 08:44:05 -0500 Subject: [PATCH] Fix infinity not applying to crossbows --- .../0174-Allow-infinity-on-crossbows.patch | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/patches/server/0174-Allow-infinity-on-crossbows.patch b/patches/server/0174-Allow-infinity-on-crossbows.patch index 56f4afe8b..b7998ed99 100644 --- a/patches/server/0174-Allow-infinity-on-crossbows.patch +++ b/patches/server/0174-Allow-infinity-on-crossbows.patch @@ -27,18 +27,24 @@ index 77562d7c7248835532f2d9582cce6ef6725a12a6..264542304babba94e364811da8d7b51b if (!itemstack1.isEmpty()) { if (i == 0) { diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 6763d0b96c83d1b462999f525bf1f31c30cf705f..bfd7b1d1965cf9da5234c7835affa4e97a6e4bb0 100644 +index 6763d0b96c83d1b462999f525bf1f31c30cf705f..893bfd35298acbdb8a6d6c4cac9ae14f156c44c5 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -@@ -4,7 +4,7 @@ import net.minecraft.world.entity.EquipmentSlot; - - public class ArrowInfiniteEnchantment extends Enchantment { - public ArrowInfiniteEnchantment(Enchantment.Rarity weight, EquipmentSlot... slotTypes) { -- super(weight, EnchantmentCategory.BOW, slotTypes); -+ super(weight, net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW, slotTypes); // Purpur +@@ -7,6 +7,14 @@ public class ArrowInfiniteEnchantment extends Enchantment { + super(weight, EnchantmentCategory.BOW, slotTypes); } ++ // Purpur start ++ @Override ++ public boolean canEnchant(net.minecraft.world.item.ItemStack stack) { ++ // we have to cheat the system because this class is loaded before purpur's config is loaded ++ return (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW).canEnchant(stack.getItem()); ++ } ++ // Purpur end ++ @Override + public int getMinCost(int level) { + return 20; diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java index 6f6106ca4d74d50a7b74b086adc96c58c7906cb6..d6417c1e77ac8823e18a179dc9f61757a1f339ad 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java @@ -78,3 +84,15 @@ index d8ec1c94b018ce566ed81a41023b4192557dc06d..110f12af4c0e5e27578e2db4d15ddc30 } public static boolean endermanShortHeight = false; +diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +index 11c1eb0e0bc326b28dc0cab16f67c413cc52e98c..7073985656ae5b17a7489518747dc8584487e46e 100644 +--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java ++++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +@@ -59,6 +59,7 @@ public class CraftEnchantment extends Enchantment { + return EnchantmentTarget.CROSSBOW; + case VANISHABLE: + return EnchantmentTarget.VANISHABLE; ++ case BOW_AND_CROSSBOW: return EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur + default: + return null; + }