diff --git a/paper-server/patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/paper-server/patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index e37648a0fb..dbdb35bbc1 100644 --- a/paper-server/patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -97,7 +97,7 @@ + .bukkitToMinecraftHolder(offer.getEnchantment())); + this.levelClue[j] = offer.getEnchantmentLevel(); + } else { -+ this.costs[j] = 0; ++ if (enchantClue[j] != -1) this.costs[j] = 0; + this.enchantClue[j] = -1; + this.levelClue[j] = -1; + } @@ -107,7 +107,7 @@ this.broadcastChanges(); }); } else { -@@ -145,19 +_,51 @@ +@@ -145,19 +_,53 @@ return false; } else { this.access.execute((level, blockPos) -> { @@ -124,7 +124,9 @@ + enchants.put(org.bukkit.craftbukkit.enchantments.CraftEnchantment.minecraftHolderToBukkit(instance.enchantment), instance.level); + } + org.bukkit.craftbukkit.inventory.CraftItemStack craftItemStack = org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack); -+ org.bukkit.enchantments.Enchantment hintedEnchantment = org.bukkit.craftbukkit.enchantments.CraftEnchantment.minecraftHolderToBukkit(registry.byId(this.enchantClue[id])); ++ Holder holder = registry.byId(this.enchantClue[id]); ++ if (holder == null) return; ++ org.bukkit.enchantments.Enchantment hintedEnchantment = org.bukkit.craftbukkit.enchantments.CraftEnchantment.minecraftHolderToBukkit(holder); + int hintedEnchantmentLevel = this.levelClue[id]; + org.bukkit.event.enchantment.EnchantItemEvent event = new org.bukkit.event.enchantment.EnchantItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), this.getBukkitView(), this.access.getLocation().getBlock(), craftItemStack, this.costs[id], enchants, hintedEnchantment, hintedEnchantmentLevel, id); + level.getCraftServer().getPluginManager().callEvent(event);