mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-04 16:34:44 +01:00
6e71f41536
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 CraftBukkit Changes: 65247583f SPIGOT-7857: Improve ItemMeta block data deserialization 05d80500d SPIGOT-7857: Fix spurious internal NBT tag when deserializing BlockStateMeta cebb58e9a SPIGOT-7804: Fix written book serialization efcdd5d38 SPIGOT-7794: Cancelling InventoryItemMoveEvent destroys items b568ba572 SPIGOT-7789: Fix NPE in CraftMetaFirework applyToItem f057cf449 Remove outdated build delay Spigot Changes: f6a48054 SPIGOT-7835: Fix issue with custom hopper settings bb63b137 Rebuild patches e1142b4d Rebuild patches
38 lines
2.3 KiB
Diff
38 lines
2.3 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 be31b8a286794508a1c1bfcf3da0ac64c0383c60..b0d73a9412421d86bd244757806d58fd99687163 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java
|
|
@@ -594,4 +594,26 @@ public final class CraftItemFactory implements ItemFactory {
|
|
return eggItem == null ? null : new net.minecraft.world.item.ItemStack(eggItem).asBukkitMirror();
|
|
}
|
|
// Paper end - old getSpawnEgg API
|
|
+ // Paper start - enchantWithLevels API
|
|
+ @Override
|
|
+ public ItemStack enchantWithLevels(ItemStack itemStack, int levels, boolean allowTreasure, java.util.Random random) {
|
|
+ Preconditions.checkArgument(itemStack != null, "Argument 'itemStack' must not be null");
|
|
+ Preconditions.checkArgument(itemStack.getType() != Material.AIR, "Argument 'itemStack' must not be of type AIR");
|
|
+ Preconditions.checkArgument(itemStack.getAmount() > 0, "Argument 'itemStack' amount must be greater than 0");
|
|
+ Preconditions.checkArgument(levels > 0 && levels <= 30, "Argument 'levels' must be in range [1, 30] (attempted " + levels + ")");
|
|
+ Preconditions.checkArgument(random != null, "Argument 'random' must not be null");
|
|
+ final net.minecraft.world.item.ItemStack internalStack = CraftItemStack.asNMSCopy(itemStack);
|
|
+ if (internalStack.isEnchanted()) {
|
|
+ internalStack.set(net.minecraft.core.component.DataComponents.ENCHANTMENTS, null);
|
|
+ }
|
|
+ final net.minecraft.world.item.ItemStack enchanted = net.minecraft.world.item.enchantment.EnchantmentHelper.enchantItem(
|
|
+ MinecraftServer.getServer().getWorldData().enabledFeatures(),
|
|
+ new org.bukkit.craftbukkit.util.RandomSourceWrapper(random),
|
|
+ internalStack,
|
|
+ levels,
|
|
+ allowTreasure
|
|
+ );
|
|
+ return CraftItemStack.asCraftMirror(enchanted);
|
|
+ }
|
|
+ // Paper end - enchantWithLevels API
|
|
}
|