mirror of
https://github.com/PaperMC/Paper.git
synced 2024-10-29 23:09:33 +01:00
92c1a3e392
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: 79e39671 SPIGOT-7034: Add methods for set/get instrument in Goat Horn CraftBukkit Changes: 4768df736 SPIGOT-7034: Add methods for set/get instrument in Goat Horn 941d7e954 SPIGOT-7225: FireworkMeta#getPower() can throw a NullPointerException for items with no power set
33 lines
2.2 KiB
Diff
33 lines
2.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
|
|
Date: Wed, 16 Mar 2022 20:35:21 -0700
|
|
Subject: [PATCH] Implement enchantWithLevels API
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
index a1a4640fc909aa0a261b78355ce8ab54ec70caac..f8d7e13c6ea7f2bc19d1d30bb82c54a4daeca45f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
@@ -412,6 +412,21 @@ public final class CraftItemFactory implements ItemFactory {
|
|
}
|
|
|
|
// Paper start
|
|
+ @Override
|
|
+ public ItemStack enchantWithLevels(ItemStack itemStack, int levels, boolean allowTreasure, java.util.Random random) {
|
|
+ Validate.notNull(itemStack, "Argument 'itemStack' must not be null");
|
|
+ Validate.isTrue(itemStack.getType() != Material.AIR, "Argument 'itemStack' must not be of type AIR");
|
|
+ Validate.isTrue(itemStack.getAmount() > 0, "Argument 'itemStack' amount must be greater than 0");
|
|
+ Validate.isTrue(levels > 0 && levels <= 30, "Argument 'levels' must be in range [1, 30] (attempted " + levels + ")");
|
|
+ Validate.notNull(random, "Argument 'random' must not be null");
|
|
+ final net.minecraft.world.item.ItemStack internalStack = CraftItemStack.asNMSCopy(itemStack);
|
|
+ if (internalStack.getTag() != null) {
|
|
+ internalStack.getTag().remove(net.minecraft.world.item.ItemStack.TAG_ENCH);
|
|
+ }
|
|
+ final net.minecraft.world.item.ItemStack enchanted = net.minecraft.world.item.enchantment.EnchantmentHelper.enchantItem(new org.bukkit.craftbukkit.util.RandomSourceWrapper(random), internalStack, levels, allowTreasure);
|
|
+ return CraftItemStack.asCraftMirror(enchanted);
|
|
+ }
|
|
+
|
|
@Override
|
|
public net.kyori.adventure.text.event.HoverEvent<net.kyori.adventure.text.event.HoverEvent.ShowItem> asHoverEvent(final ItemStack item, final java.util.function.UnaryOperator<net.kyori.adventure.text.event.HoverEvent.ShowItem> op) {
|
|
final net.minecraft.nbt.CompoundTag tag = CraftItemStack.asNMSCopy(item).getTag();
|