diff options
author | Jake Potrebic <[email protected]> | 2024-06-21 19:38:57 -0700 |
---|---|---|
committer | Owen1212055 <[email protected]> | 2024-11-18 14:50:38 -0500 |
commit | 92055b6da5d3c59bc17a509fdd3f2f8c2b14a757 (patch) | |
tree | a79749826e4938f7f9d49523d940a1cdc82582df | |
parent | c92fa203dc2a438a028ea423598b0a338f4626d3 (diff) | |
download | Paper-92055b6da5d3c59bc17a509fdd3f2f8c2b14a757.tar.gz Paper-92055b6da5d3c59bc17a509fdd3f2f8c2b14a757.zip |
change package
-rw-r--r-- | patches/api/0480-WIP-DataComponent-API.patch | 511 | ||||
-rw-r--r-- | patches/server/1026-WIP-DataComponent-API.patch | 534 |
2 files changed, 500 insertions, 545 deletions
diff --git a/patches/api/0480-WIP-DataComponent-API.patch b/patches/api/0480-WIP-DataComponent-API.patch index b651650697..c3f1397a6d 100644 --- a/patches/api/0480-WIP-DataComponent-API.patch +++ b/patches/api/0480-WIP-DataComponent-API.patch @@ -75,13 +75,13 @@ index 0000000000000000000000000000000000000000..abd1985275d59bc2377eb386a7f06c13 + } + +} -diff --git a/src/main/java/io/papermc/paper/component/ComponentBuilder.java b/src/main/java/io/papermc/paper/component/ComponentBuilder.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/ComponentBuilder.java b/src/main/java/io/papermc/paper/datacomponent/ComponentBuilder.java new file mode 100644 -index 0000000000000000000000000000000000000000..3f5e6f7c6fb44898e8bfdb87c8d2569086025cba +index 0000000000000000000000000000000000000000..6eb69eb0f220a3a5e63d8315802b4966dceda839 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/ComponentBuilder.java ++++ b/src/main/java/io/papermc/paper/datacomponent/ComponentBuilder.java @@ -0,0 +1,22 @@ -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -103,13 +103,13 @@ index 0000000000000000000000000000000000000000..3f5e6f7c6fb44898e8bfdb87c8d25690 + @Contract(value = "-> new", pure = true) + @NonNull C build(); +} -diff --git a/src/main/java/io/papermc/paper/component/DataComponentType.java b/src/main/java/io/papermc/paper/component/DataComponentType.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/DataComponentType.java b/src/main/java/io/papermc/paper/datacomponent/DataComponentType.java new file mode 100644 -index 0000000000000000000000000000000000000000..50d15b4e0ed5cd17fdc95476ee4650ef918af62c +index 0000000000000000000000000000000000000000..3152cc9cf29e7fd21b25f4c7a2b3d0b5bbf49d87 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/DataComponentType.java ++++ b/src/main/java/io/papermc/paper/datacomponent/DataComponentType.java @@ -0,0 +1,27 @@ -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import org.bukkit.Keyed; +import org.jetbrains.annotations.ApiStatus; @@ -136,45 +136,45 @@ index 0000000000000000000000000000000000000000..50d15b4e0ed5cd17fdc95476ee4650ef + + } +} -diff --git a/src/main/java/io/papermc/paper/component/DataComponentTypes.java b/src/main/java/io/papermc/paper/component/DataComponentTypes.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/DataComponentTypes.java b/src/main/java/io/papermc/paper/datacomponent/DataComponentTypes.java new file mode 100644 -index 0000000000000000000000000000000000000000..0d64edd242cd4a77cc1b6b8989544aad6641b5f5 +index 0000000000000000000000000000000000000000..0660abc2a184a2684b4a6817590b67b38022b19f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/DataComponentTypes.java -@@ -0,0 +1,313 @@ -+package io.papermc.paper.component; -+ -+import com.destroystokyo.paper.MaterialSetTag; -+import io.papermc.paper.component.item.BannerPatternLayers; -+import io.papermc.paper.component.item.BlockItemDataProperties; -+import io.papermc.paper.component.item.BundleContents; -+import io.papermc.paper.component.item.ChargedProjectiles; -+import io.papermc.paper.component.item.CustomModelData; -+import io.papermc.paper.component.item.DyedItemColor; -+import io.papermc.paper.component.item.Fireworks; -+import io.papermc.paper.component.item.FoodProperties; -+import io.papermc.paper.component.item.ItemAdventurePredicate; -+import io.papermc.paper.component.item.ItemArmorTrim; -+import io.papermc.paper.component.item.ItemAttributeModifiers; -+import io.papermc.paper.component.item.ItemContainerContents; -+import io.papermc.paper.component.item.ItemEnchantments; -+import io.papermc.paper.component.item.ItemLore; -+import io.papermc.paper.component.item.JukeboxPlayable; -+import io.papermc.paper.component.item.LockCode; -+import io.papermc.paper.component.item.LodestoneTracker; -+import io.papermc.paper.component.item.MapDecorations; -+import io.papermc.paper.component.item.MapID; -+import io.papermc.paper.component.item.MapItemColor; -+import io.papermc.paper.component.item.MapPostProcessing; -+import io.papermc.paper.component.item.PotDecorations; -+import io.papermc.paper.component.item.PotionContents; -+import io.papermc.paper.component.item.ResolvableProfile; -+import io.papermc.paper.component.item.SeededContainerLoot; -+import io.papermc.paper.component.item.SuspiciousStewEffects; -+import io.papermc.paper.component.item.Tool; -+import io.papermc.paper.component.item.Unbreakable; -+import io.papermc.paper.component.item.WritableBookContent; -+import io.papermc.paper.component.item.WrittenBookContent; ++++ b/src/main/java/io/papermc/paper/datacomponent/DataComponentTypes.java +@@ -0,0 +1,316 @@ ++package io.papermc.paper.datacomponent; ++ ++import io.papermc.paper.datacomponent.item.BannerPatternLayers; ++import io.papermc.paper.datacomponent.item.BlockItemDataProperties; ++import io.papermc.paper.datacomponent.item.BundleContents; ++import io.papermc.paper.datacomponent.item.ChargedProjectiles; ++import io.papermc.paper.datacomponent.item.CustomModelData; ++import io.papermc.paper.datacomponent.item.DyedItemColor; ++import io.papermc.paper.datacomponent.item.Fireworks; ++import io.papermc.paper.datacomponent.item.FoodProperties; ++import io.papermc.paper.datacomponent.item.ItemAdventurePredicate; ++import io.papermc.paper.datacomponent.item.ItemArmorTrim; ++import io.papermc.paper.datacomponent.item.ItemAttributeModifiers; ++import io.papermc.paper.datacomponent.item.ItemContainerContents; ++import io.papermc.paper.datacomponent.item.ItemEnchantments; ++import io.papermc.paper.datacomponent.item.ItemLore; ++import io.papermc.paper.datacomponent.item.JukeboxPlayable; ++import io.papermc.paper.datacomponent.item.LockCode; ++import io.papermc.paper.datacomponent.item.LodestoneTracker; ++import io.papermc.paper.datacomponent.item.MapDecorations; ++import io.papermc.paper.datacomponent.item.MapID; ++import io.papermc.paper.datacomponent.item.MapItemColor; ++import io.papermc.paper.datacomponent.item.MapPostProcessing; ++import io.papermc.paper.datacomponent.item.PotDecorations; ++import io.papermc.paper.datacomponent.item.PotionContents; ++import io.papermc.paper.datacomponent.item.ResolvableProfile; ++import io.papermc.paper.datacomponent.item.SeededContainerLoot; ++import io.papermc.paper.datacomponent.item.SuspiciousStewEffects; ++import io.papermc.paper.datacomponent.item.Tool; ++import io.papermc.paper.datacomponent.item.Unbreakable; ++import io.papermc.paper.datacomponent.item.WritableBookContent; ++import io.papermc.paper.datacomponent.item.WrittenBookContent; ++import java.util.List; +import net.kyori.adventure.key.Key; +import net.kyori.adventure.text.Component; +import org.bukkit.DyeColor; @@ -186,10 +186,13 @@ index 0000000000000000000000000000000000000000..0d64edd242cd4a77cc1b6b8989544aad +import org.checkerframework.checker.index.qual.NonNegative; +import org.checkerframework.checker.index.qual.Positive; +import org.checkerframework.common.value.qual.IntRange; -+import java.util.List; + +import static java.util.Objects.requireNonNull; + ++/** ++ * All the different types of data that {@link org.bukkit.inventory.ItemStack ItemStacks} ++ * and {@link org.bukkit.inventory.ItemType ItemTypes} can have. ++ */ +public final class DataComponentTypes { + + // public static final DataComponentType.Valued<BinaryTagHolder> CUSTOM_DATA = valued("custom_data"); @@ -455,15 +458,15 @@ index 0000000000000000000000000000000000000000..0d64edd242cd4a77cc1b6b8989544aad + private DataComponentTypes() { + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/BannerPatternLayers.java b/src/main/java/io/papermc/paper/component/item/BannerPatternLayers.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/BannerPatternLayers.java b/src/main/java/io/papermc/paper/datacomponent/item/BannerPatternLayers.java new file mode 100644 -index 0000000000000000000000000000000000000000..3d1c94278eeaffcc68d1d83b7bc548d72fd8e757 +index 0000000000000000000000000000000000000000..c628b5aed20c4d8781e0ad19fdbc4a926fcfc0fa --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/BannerPatternLayers.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/BannerPatternLayers.java @@ -0,0 +1,42 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Arrays; +import java.util.List; +import org.bukkit.block.banner.Pattern; @@ -503,15 +506,15 @@ index 0000000000000000000000000000000000000000..3d1c94278eeaffcc68d1d83b7bc548d7 + @NonNull Builder addAll(@NonNull List<@NonNull Pattern> patterns); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/BlockItemDataProperties.java b/src/main/java/io/papermc/paper/component/item/BlockItemDataProperties.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/BlockItemDataProperties.java b/src/main/java/io/papermc/paper/datacomponent/item/BlockItemDataProperties.java new file mode 100644 -index 0000000000000000000000000000000000000000..1c4859bcabcc2a4a2e3b52253a984960970bc3d9 +index 0000000000000000000000000000000000000000..270f98e95b1d0322a42bad52d492fa0018f43bc1 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/BlockItemDataProperties.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/BlockItemDataProperties.java @@ -0,0 +1,28 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.Material; +import org.bukkit.block.data.BlockData; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -537,15 +540,15 @@ index 0000000000000000000000000000000000000000..1c4859bcabcc2a4a2e3b52253a984960 + // building this requires BlockProperty API, so an empty builder for now (essentially read-only) + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/BundleContents.java b/src/main/java/io/papermc/paper/component/item/BundleContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/BundleContents.java b/src/main/java/io/papermc/paper/datacomponent/item/BundleContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..e9efe98121d45890824d624a8cf66d3342ae84a3 +index 0000000000000000000000000000000000000000..e3443702bfad57aa1a66331060f33b2e406ca153 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/BundleContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/BundleContents.java @@ -0,0 +1,59 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Arrays; +import java.util.List; +import org.bukkit.inventory.ItemStack; @@ -602,15 +605,15 @@ index 0000000000000000000000000000000000000000..e9efe98121d45890824d624a8cf66d33 + @NonNull Builder addAll(@NonNull List<@NonNull ItemStack> stacks); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ChargedProjectiles.java b/src/main/java/io/papermc/paper/component/item/ChargedProjectiles.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ChargedProjectiles.java b/src/main/java/io/papermc/paper/datacomponent/item/ChargedProjectiles.java new file mode 100644 -index 0000000000000000000000000000000000000000..13e7303189c38c79b4b0726841a2fd6fd8e720a6 +index 0000000000000000000000000000000000000000..505f93dec42585072f518b4484fdee176e941f50 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ChargedProjectiles.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ChargedProjectiles.java @@ -0,0 +1,59 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Arrays; +import java.util.List; +import org.bukkit.inventory.ItemStack; @@ -667,13 +670,13 @@ index 0000000000000000000000000000000000000000..13e7303189c38c79b4b0726841a2fd6f + @NonNull Builder addAll(@NonNull List<@NonNull ItemStack> itemStacks); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ComponentTypesBridge.java b/src/main/java/io/papermc/paper/component/item/ComponentTypesBridge.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridge.java b/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridge.java new file mode 100644 -index 0000000000000000000000000000000000000000..59db78f559404777ba6e711a0b2c267d750ec6c8 +index 0000000000000000000000000000000000000000..a1c78fae5327ef9f9398e00a0b20b5171333bba7 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ComponentTypesBridge.java -@@ -0,0 +1,87 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridge.java +@@ -0,0 +1,88 @@ ++package io.papermc.paper.datacomponent.item; + +import io.papermc.paper.registry.set.RegistryKeySet; +import io.papermc.paper.util.Filtered; @@ -685,6 +688,7 @@ index 0000000000000000000000000000000000000000..59db78f559404777ba6e711a0b2c267d +import org.bukkit.inventory.meta.trim.ArmorTrim; +import org.bukkit.map.MapCursor; +import org.bukkit.potion.PotionEffect; ++import org.checkerframework.checker.nullness.qual.Nullable; +import org.jetbrains.annotations.ApiStatus; + @@ -756,17 +760,17 @@ index 0000000000000000000000000000000000000000..59db78f559404777ba6e711a0b2c267d + + Tool.Builder tool(); + -+ Tool.Rule rule(RegistryKeySet<BlockType> blockTypes, Float speed, TriState correctForDrops); ++ Tool.Rule rule(RegistryKeySet<BlockType> blockTypes, @Nullable Float speed, TriState correctForDrops); + + ItemAdventurePredicate.Builder itemAdventurePredicate(); +} -diff --git a/src/main/java/io/papermc/paper/component/item/CustomModelData.java b/src/main/java/io/papermc/paper/component/item/CustomModelData.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java b/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java new file mode 100644 -index 0000000000000000000000000000000000000000..d8919127e181573ef5afe857cbc777a6a45b140a +index 0000000000000000000000000000000000000000..e93f962fc51c0f260719fccad7ccdadc114bfc31 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/CustomModelData.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/CustomModelData.java @@ -0,0 +1,27 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -793,15 +797,15 @@ index 0000000000000000000000000000000000000000..d8919127e181573ef5afe857cbc777a6 + @NonNull CustomModelData build(); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/DyedItemColor.java b/src/main/java/io/papermc/paper/component/item/DyedItemColor.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/DyedItemColor.java b/src/main/java/io/papermc/paper/datacomponent/item/DyedItemColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..ade9b048dd56f397278717fefc10a3c369603d30 +index 0000000000000000000000000000000000000000..ee9983f45d4457935381fac9bf44455a59661e6d --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/DyedItemColor.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/DyedItemColor.java @@ -0,0 +1,43 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.Color; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -842,15 +846,15 @@ index 0000000000000000000000000000000000000000..ade9b048dd56f397278717fefc10a3c3 + @NonNull Builder color(@NonNull Color color); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/Fireworks.java b/src/main/java/io/papermc/paper/component/item/Fireworks.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/Fireworks.java b/src/main/java/io/papermc/paper/datacomponent/item/Fireworks.java new file mode 100644 -index 0000000000000000000000000000000000000000..720ba84a3f7c426e6bb533e47ce4546725cc7136 +index 0000000000000000000000000000000000000000..6b3bbe5038f4b2527485eec3848fb0b4bcd640a5 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/Fireworks.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/Fireworks.java @@ -0,0 +1,68 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; +import org.bukkit.FireworkEffect; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -916,15 +920,15 @@ index 0000000000000000000000000000000000000000..720ba84a3f7c426e6bb533e47ce45467 + @NonNull Builder addAll(@NonNull List<@NonNull FireworkEffect> effects); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/FoodProperties.java b/src/main/java/io/papermc/paper/component/item/FoodProperties.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/FoodProperties.java b/src/main/java/io/papermc/paper/datacomponent/item/FoodProperties.java new file mode 100644 -index 0000000000000000000000000000000000000000..18acee6c417e477770535e9c85a8efdf3700696d +index 0000000000000000000000000000000000000000..f431e1d6fbf5c1d9dbd59f513cf2ba4af4e2786f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/FoodProperties.java -@@ -0,0 +1,109 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/FoodProperties.java +@@ -0,0 +1,108 @@ ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; @@ -933,7 +937,6 @@ index 0000000000000000000000000000000000000000..18acee6c417e477770535e9c85a8efdf +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; -+import org.jetbrains.annotations.Range; +import org.jetbrains.annotations.Unmodifiable; + @@ -1031,19 +1034,17 @@ index 0000000000000000000000000000000000000000..18acee6c417e477770535e9c85a8efdf + @NonNull Builder addAllEffects(@NonNull List<@NonNull PossibleEffect> effects); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemAdventurePredicate.java b/src/main/java/io/papermc/paper/component/item/ItemAdventurePredicate.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemAdventurePredicate.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemAdventurePredicate.java new file mode 100644 -index 0000000000000000000000000000000000000000..3a16423dc37c6a56d86c1f07518c601ef6fbcbbc +index 0000000000000000000000000000000000000000..be1042bc02a41b837eeedfe4877dcf2106db05f5 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemAdventurePredicate.java -@@ -0,0 +1,42 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemAdventurePredicate.java +@@ -0,0 +1,40 @@ ++package io.papermc.paper.datacomponent.item; + +import io.papermc.paper.block.BlockPredicate; -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; -+import org.bukkit.attribute.Attribute; -+import org.bukkit.attribute.AttributeModifier; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; @@ -1079,15 +1080,15 @@ index 0000000000000000000000000000000000000000..3a16423dc37c6a56d86c1f07518c601e + @NonNull Builder addPredicate(@NonNull BlockPredicate predicate); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemArmorTrim.java b/src/main/java/io/papermc/paper/component/item/ItemArmorTrim.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemArmorTrim.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemArmorTrim.java new file mode 100644 -index 0000000000000000000000000000000000000000..5a288237162c75fb0e969b894b719ba09a0c4a02 +index 0000000000000000000000000000000000000000..8c806c19cf294a08078c6a5b89107d16528b02f5 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemArmorTrim.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemArmorTrim.java @@ -0,0 +1,43 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.inventory.meta.trim.ArmorTrim; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -1128,15 +1129,15 @@ index 0000000000000000000000000000000000000000..5a288237162c75fb0e969b894b719ba0 + @NonNull Builder armorTrim(@NonNull ArmorTrim armorTrim); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemAttributeModifiers.java b/src/main/java/io/papermc/paper/component/item/ItemAttributeModifiers.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemAttributeModifiers.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemAttributeModifiers.java new file mode 100644 -index 0000000000000000000000000000000000000000..3faf44b7864119f8bd14cfb835d91d29b6d48bbf +index 0000000000000000000000000000000000000000..2fdb6e02235ea28c63bb0b3b6edeecef98a1b996 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemAttributeModifiers.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemAttributeModifiers.java @@ -0,0 +1,55 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; @@ -1189,15 +1190,15 @@ index 0000000000000000000000000000000000000000..3faf44b7864119f8bd14cfb835d91d29 + @NonNull Builder addModifier(@NonNull Attribute attribute, @NonNull AttributeModifier attributeModifier); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemContainerContents.java b/src/main/java/io/papermc/paper/component/item/ItemContainerContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemContainerContents.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemContainerContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..41c91487c3e60c744dba7cf0be86adce97bf5e4d +index 0000000000000000000000000000000000000000..a748ef9a97a3aa1bba794470cc7c2a8ca58e7ecf --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemContainerContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemContainerContents.java @@ -0,0 +1,42 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Arrays; +import java.util.List; +import org.bukkit.inventory.ItemStack; @@ -1237,15 +1238,15 @@ index 0000000000000000000000000000000000000000..41c91487c3e60c744dba7cf0be86adce + @NonNull Builder addAll(@NonNull List<@NonNull ItemStack> itemStacks); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemEnchantments.java b/src/main/java/io/papermc/paper/component/item/ItemEnchantments.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemEnchantments.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemEnchantments.java new file mode 100644 -index 0000000000000000000000000000000000000000..bc4773e8cac7a06dd92923486aa58615d6c0eb41 +index 0000000000000000000000000000000000000000..1ac01e0937c33c2588af383ec18f50190c852060 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemEnchantments.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemEnchantments.java @@ -0,0 +1,55 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Map; +import org.bukkit.enchantments.Enchantment; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -1298,15 +1299,15 @@ index 0000000000000000000000000000000000000000..bc4773e8cac7a06dd92923486aa58615 + @NonNull Builder addAll(@NonNull Map<@NonNull Enchantment, @NonNull @IntRange(from = 0, to = 255) Integer> enchantments); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ItemLore.java b/src/main/java/io/papermc/paper/component/item/ItemLore.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ItemLore.java b/src/main/java/io/papermc/paper/datacomponent/item/ItemLore.java new file mode 100644 -index 0000000000000000000000000000000000000000..35ae4f276be7edfd293a1ba3b4bebb99972f3e0d +index 0000000000000000000000000000000000000000..655ca9fedbf4e5c12ec2016c5779e47431a459e1 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ItemLore.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ItemLore.java @@ -0,0 +1,69 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; @@ -1373,23 +1374,19 @@ index 0000000000000000000000000000000000000000..35ae4f276be7edfd293a1ba3b4bebb99 + @NonNull Builder addAllLines(@NonNull List<@NonNull ? extends ComponentLike> lines); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/JukeboxPlayable.java b/src/main/java/io/papermc/paper/component/item/JukeboxPlayable.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/JukeboxPlayable.java b/src/main/java/io/papermc/paper/datacomponent/item/JukeboxPlayable.java new file mode 100644 -index 0000000000000000000000000000000000000000..d039388819d241a8ffeadab5d806387b61a0f9db +index 0000000000000000000000000000000000000000..27121491d961fac5f2492ba2fb786682164e9791 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/JukeboxPlayable.java -@@ -0,0 +1,30 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/JukeboxPlayable.java +@@ -0,0 +1,26 @@ ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.JukeboxSong; -+import org.bukkit.attribute.Attribute; -+import org.bukkit.attribute.AttributeModifier; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; -+import org.jetbrains.annotations.Unmodifiable; -+import java.util.List; + +public interface JukeboxPlayable extends ShownInTooltip<JukeboxPlayable> { + @@ -1409,13 +1406,13 @@ index 0000000000000000000000000000000000000000..d039388819d241a8ffeadab5d806387b + Builder jukeboxSong(@NonNull JukeboxSong song); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/LockCode.java b/src/main/java/io/papermc/paper/component/item/LockCode.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/LockCode.java b/src/main/java/io/papermc/paper/datacomponent/item/LockCode.java new file mode 100644 -index 0000000000000000000000000000000000000000..dfcd12fe3fed01ff93bce6eca732bd6f1f4cf5fd +index 0000000000000000000000000000000000000000..cf6a2e8e6640deeae05283b3cb5755a417d01484 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/LockCode.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/LockCode.java @@ -0,0 +1,27 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -1442,15 +1439,15 @@ index 0000000000000000000000000000000000000000..dfcd12fe3fed01ff93bce6eca732bd6f + @NonNull LockCode build(); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/LodestoneTracker.java b/src/main/java/io/papermc/paper/component/item/LodestoneTracker.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/LodestoneTracker.java b/src/main/java/io/papermc/paper/datacomponent/item/LodestoneTracker.java new file mode 100644 -index 0000000000000000000000000000000000000000..316e3e0894c0d5cc0a7b304a815803f90eb2c766 +index 0000000000000000000000000000000000000000..3b99f6b9cfeba3fdb37aaea92c7f6de19c222373 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/LodestoneTracker.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/LodestoneTracker.java @@ -0,0 +1,59 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.Location; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; @@ -1507,15 +1504,15 @@ index 0000000000000000000000000000000000000000..316e3e0894c0d5cc0a7b304a815803f9 + @NonNull Builder tracked(boolean tracked); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/MapDecorations.java b/src/main/java/io/papermc/paper/component/item/MapDecorations.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/MapDecorations.java b/src/main/java/io/papermc/paper/datacomponent/item/MapDecorations.java new file mode 100644 -index 0000000000000000000000000000000000000000..589be7348bfef06fe628696d56748a9d44fca177 +index 0000000000000000000000000000000000000000..da18b602778bf4c6fc536988d89f77d4585da454 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/MapDecorations.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/MapDecorations.java @@ -0,0 +1,98 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Map; +import org.bukkit.map.MapCursor; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -1611,13 +1608,13 @@ index 0000000000000000000000000000000000000000..589be7348bfef06fe628696d56748a9d + MapDecorations.@NonNull Builder putAll(@NonNull Map<@NonNull String, @NonNull DecorationEntry> entries); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/MapID.java b/src/main/java/io/papermc/paper/component/item/MapID.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/MapID.java b/src/main/java/io/papermc/paper/datacomponent/item/MapID.java new file mode 100644 -index 0000000000000000000000000000000000000000..d4a8ff6c9f82b35bf339f4cfa171a95c74327c7e +index 0000000000000000000000000000000000000000..17cf58c3577a9d352686b4fcb08e7da629b8af94 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/MapID.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/MapID.java @@ -0,0 +1,39 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -1656,13 +1653,13 @@ index 0000000000000000000000000000000000000000..d4a8ff6c9f82b35bf339f4cfa171a95c + @NonNull MapID build(); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/MapItemColor.java b/src/main/java/io/papermc/paper/component/item/MapItemColor.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/MapItemColor.java b/src/main/java/io/papermc/paper/datacomponent/item/MapItemColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..fdcf1f092fe52d9f111b47651a5f7eba6d28692d +index 0000000000000000000000000000000000000000..0f4186034ecb6ad1effa681870d24005f0ebe677 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/MapItemColor.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/MapItemColor.java @@ -0,0 +1,39 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.Color; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -1701,27 +1698,27 @@ index 0000000000000000000000000000000000000000..fdcf1f092fe52d9f111b47651a5f7eba + @NonNull MapItemColor build(); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/MapPostProcessing.java b/src/main/java/io/papermc/paper/component/item/MapPostProcessing.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/MapPostProcessing.java b/src/main/java/io/papermc/paper/datacomponent/item/MapPostProcessing.java new file mode 100644 -index 0000000000000000000000000000000000000000..0b26ee6870600557b82a6ea37e2789dcb5e267c8 +index 0000000000000000000000000000000000000000..acdede37bf2625698e9a6c0521e7e98a5fd9c377 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/MapPostProcessing.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/MapPostProcessing.java @@ -0,0 +1,6 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +public enum MapPostProcessing { + LOCK, + SCALE +} -diff --git a/src/main/java/io/papermc/paper/component/item/PotDecorations.java b/src/main/java/io/papermc/paper/component/item/PotDecorations.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PotDecorations.java b/src/main/java/io/papermc/paper/datacomponent/item/PotDecorations.java new file mode 100644 -index 0000000000000000000000000000000000000000..fb2f3d705102cf67c847b2b2d38cc239c89b6716 +index 0000000000000000000000000000000000000000..abd94c0c900f7c2bf936e0c5c28ec92847db39ec --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PotDecorations.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PotDecorations.java @@ -0,0 +1,50 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.bukkit.Material; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; @@ -1769,15 +1766,15 @@ index 0000000000000000000000000000000000000000..fb2f3d705102cf67c847b2b2d38cc239 + Builder front(@Nullable Material font); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PotionContents.java b/src/main/java/io/papermc/paper/component/item/PotionContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PotionContents.java b/src/main/java/io/papermc/paper/datacomponent/item/PotionContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..d25430f52d95f90875f4052b39e652282275c8e7 +index 0000000000000000000000000000000000000000..321f317248834713361985fad47180fc045d1c82 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PotionContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PotionContents.java @@ -0,0 +1,85 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; +import org.bukkit.Color; +import org.bukkit.potion.PotionEffect; @@ -1860,17 +1857,17 @@ index 0000000000000000000000000000000000000000..d25430f52d95f90875f4052b39e65228 + @NonNull Builder addAll(@NonNull List<@NonNull PotionEffect> potionEffects); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ResolvableProfile.java b/src/main/java/io/papermc/paper/component/item/ResolvableProfile.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ResolvableProfile.java b/src/main/java/io/papermc/paper/datacomponent/item/ResolvableProfile.java new file mode 100644 -index 0000000000000000000000000000000000000000..89c4314048cfb277026c9f5e9a7c05494b3f4c02 +index 0000000000000000000000000000000000000000..10cb1af6c976659f80839ce46cdddcc89ed20681 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ResolvableProfile.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ResolvableProfile.java @@ -0,0 +1,51 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.destroystokyo.paper.profile.PlayerProfile; +import com.destroystokyo.paper.profile.ProfileProperty; -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.Collection; +import java.util.List; +import java.util.UUID; @@ -1917,15 +1914,15 @@ index 0000000000000000000000000000000000000000..89c4314048cfb277026c9f5e9a7c0549 + @NonNull Builder addAllProperties(@NonNull List<@NonNull ProfileProperty> properties); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/SeededContainerLoot.java b/src/main/java/io/papermc/paper/component/item/SeededContainerLoot.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/SeededContainerLoot.java b/src/main/java/io/papermc/paper/datacomponent/item/SeededContainerLoot.java new file mode 100644 -index 0000000000000000000000000000000000000000..4eb82c2611aa217c7053efc994b4b794a76e5e7c +index 0000000000000000000000000000000000000000..c857d9127aa0030b7f4f620242cbd9ba54dae015 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/SeededContainerLoot.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/SeededContainerLoot.java @@ -0,0 +1,37 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import net.kyori.adventure.key.Key; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -1960,13 +1957,13 @@ index 0000000000000000000000000000000000000000..4eb82c2611aa217c7053efc994b4b794 + @NonNull Builder seed(long seed); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ShownInTooltip.java b/src/main/java/io/papermc/paper/component/item/ShownInTooltip.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ShownInTooltip.java b/src/main/java/io/papermc/paper/datacomponent/item/ShownInTooltip.java new file mode 100644 -index 0000000000000000000000000000000000000000..75c4ede2e9a2913a2bd542935b0bcaba454ad749 +index 0000000000000000000000000000000000000000..1e39fc6779e324030fb2890a4568376ffe3e5fab --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ShownInTooltip.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ShownInTooltip.java @@ -0,0 +1,21 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; @@ -1987,15 +1984,15 @@ index 0000000000000000000000000000000000000000..75c4ede2e9a2913a2bd542935b0bcaba + @NonNull B showInTooltip(boolean showInTooltip); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/SuspiciousStewEffects.java b/src/main/java/io/papermc/paper/component/item/SuspiciousStewEffects.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/SuspiciousStewEffects.java b/src/main/java/io/papermc/paper/datacomponent/item/SuspiciousStewEffects.java new file mode 100644 -index 0000000000000000000000000000000000000000..84e1c430acb5f488dc6835c1269586873dae5026 +index 0000000000000000000000000000000000000000..b3055cd0b4446b5100ac85312a1cfbce4c8e6714 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/SuspiciousStewEffects.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/SuspiciousStewEffects.java @@ -0,0 +1,59 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import io.papermc.paper.potion.SuspiciousEffectEntry; +import java.util.Arrays; +import java.util.List; @@ -2052,28 +2049,24 @@ index 0000000000000000000000000000000000000000..84e1c430acb5f488dc6835c126958687 + @NonNull Builder addAll(@NonNull List<@NonNull SuspiciousEffectEntry> entries); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/Tool.java b/src/main/java/io/papermc/paper/component/item/Tool.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/Tool.java b/src/main/java/io/papermc/paper/datacomponent/item/Tool.java new file mode 100644 -index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d633ad3f7 +index 0000000000000000000000000000000000000000..d5ab454e3012e310ca48a69fba3bd5e895c68fce --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/Tool.java -@@ -0,0 +1,128 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/Tool.java +@@ -0,0 +1,122 @@ ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import java.util.List; -+import java.util.Optional; +import io.papermc.paper.registry.set.RegistryKeySet; +import net.kyori.adventure.util.TriState; +import org.bukkit.block.BlockType; -+import org.bukkit.inventory.ItemStack; -+import org.bukkit.potion.PotionEffect; +import org.checkerframework.checker.index.qual.NonNegative; +import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.checker.nullness.qual.Nullable; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Unmodifiable; + +/** @@ -2111,11 +2104,11 @@ index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d + @ApiStatus.NonExtendable + interface Rule { + -+ static @NonNull Rule of(final @NonNull RegistryKeySet<BlockType> blockTypes, final @Nullable Float speed, final @NotNull TriState correctForDrops) { ++ static @NonNull Rule of(final @NonNull RegistryKeySet<BlockType> blockTypes, final @Nullable Float speed, final @NonNull TriState correctForDrops) { + return ComponentTypesBridge.bridge().rule(blockTypes, speed, correctForDrops); + } + -+ static @NonNull Rule minesAndDrops(final @NonNull RegistryKeySet<BlockType> blocks, float speed) { ++ static @NonNull Rule minesAndDrops(final @NonNull RegistryKeySet<BlockType> blocks, final float speed) { + return of(blocks, speed, TriState.TRUE); + } + @@ -2123,7 +2116,7 @@ index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d + return of(tag, null, TriState.FALSE); + } + -+ static @NonNull Rule overrideSpeed(final @NonNull RegistryKeySet<BlockType> tag, float speed) { ++ static @NonNull Rule overrideSpeed(final @NonNull RegistryKeySet<BlockType> tag, final float speed) { + return of(tag, speed, TriState.NOT_SET); + } + @@ -2139,15 +2132,13 @@ index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d + * {@code true} will cause the block to mine at its most efficient speed, and drop items if the targeted block requires that. + * @return speed override + */ -+ @Nullable -+ Float speed(); ++ @Nullable Float speed(); + + /** + * Overrides whether this tool is considered 'correct' if present and matched. + * @return + */ -+ @NotNull -+ TriState correctForDrops(); ++ @NonNull TriState correctForDrops(); + } + + @ApiStatus.NonExtendable @@ -2159,7 +2150,7 @@ index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d + * @return self + */ + @Contract(value = "_ -> this", mutates = "this") -+ @NonNull Builder damagePerBlock(@NonNull int damage); ++ @NonNull Builder damagePerBlock(int damage); + + /** + * Controls mining speed to use if no rules match and don't override mining speed. @@ -2186,15 +2177,15 @@ index 0000000000000000000000000000000000000000..848cf03f35e2fe07373d8281082c1d8d + @NonNull Builder addRules(@NonNull List<@NonNull Rule> rules); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/Unbreakable.java b/src/main/java/io/papermc/paper/component/item/Unbreakable.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/Unbreakable.java b/src/main/java/io/papermc/paper/datacomponent/item/Unbreakable.java new file mode 100644 -index 0000000000000000000000000000000000000000..bae28273ffa8017fecb24328f21b6a4622326273 +index 0000000000000000000000000000000000000000..ecd1130152d0bac324cfd1feeb38b86e9e9a5893 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/Unbreakable.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/Unbreakable.java @@ -0,0 +1,27 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; @@ -2219,15 +2210,15 @@ index 0000000000000000000000000000000000000000..bae28273ffa8017fecb24328f21b6a46 + interface Builder extends ShownInTooltip.Builder<Builder>, ComponentBuilder<Unbreakable> { + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/WritableBookContent.java b/src/main/java/io/papermc/paper/component/item/WritableBookContent.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/WritableBookContent.java b/src/main/java/io/papermc/paper/datacomponent/item/WritableBookContent.java new file mode 100644 -index 0000000000000000000000000000000000000000..368662920dda88a35d61c9f98d41e4a84626999d +index 0000000000000000000000000000000000000000..5e4909f44f902058cd41560c3efccef5049b2402 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/WritableBookContent.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/WritableBookContent.java @@ -0,0 +1,62 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import io.papermc.paper.util.Filtered; +import java.util.Collection; +import java.util.List; @@ -2287,15 +2278,15 @@ index 0000000000000000000000000000000000000000..368662920dda88a35d61c9f98d41e4a8 + @NonNull Builder addPagesFiltered(@NonNull Collection<@NonNull Filtered<@NonNull String>> pages); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/WrittenBookContent.java b/src/main/java/io/papermc/paper/component/item/WrittenBookContent.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/WrittenBookContent.java b/src/main/java/io/papermc/paper/datacomponent/item/WrittenBookContent.java new file mode 100644 -index 0000000000000000000000000000000000000000..f33aa2d9528b96df98b40cd9d0b052cfcebe20de +index 0000000000000000000000000000000000000000..de4927fa96ed799d2c80f47958dc5c4baa508ce4 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/WrittenBookContent.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/WrittenBookContent.java @@ -0,0 +1,92 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + -+import io.papermc.paper.component.ComponentBuilder; ++import io.papermc.paper.datacomponent.ComponentBuilder; +import io.papermc.paper.util.Filtered; +import java.util.Collection; +import java.util.List; @@ -2385,25 +2376,25 @@ index 0000000000000000000000000000000000000000..f33aa2d9528b96df98b40cd9d0b052cf + @NonNull Builder addPagesFiltered(@NonNull Collection<@NonNull Filtered<@NonNull ? extends ComponentLike>> pages); + } +} -diff --git a/src/main/java/io/papermc/paper/component/package-info.java b/src/main/java/io/papermc/paper/component/package-info.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/package-info.java b/src/main/java/io/papermc/paper/datacomponent/package-info.java new file mode 100644 -index 0000000000000000000000000000000000000000..37c9e2b084fe4c82242ae64569bb76beb6a88c09 +index 0000000000000000000000000000000000000000..3ddd1f787e97c22eee3e32bb2a9660a8e300d7f9 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/package-info.java ++++ b/src/main/java/io/papermc/paper/datacomponent/package-info.java @@ -0,0 +1,5 @@ +@DefaultQualifier(NonNull.class) -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; diff --git a/src/main/java/io/papermc/paper/registry/RegistryKey.java b/src/main/java/io/papermc/paper/registry/RegistryKey.java -index 2945dde566682f977e84fde5d473a6c69be24df1..f212fa95d1fdfee7f8465ffa06b68ba2045c8f14 100644 +index 2945dde566682f977e84fde5d473a6c69be24df1..6ab6e9d3a1fcb5fcb370e507164da70012e61e88 100644 --- a/src/main/java/io/papermc/paper/registry/RegistryKey.java +++ b/src/main/java/io/papermc/paper/registry/RegistryKey.java @@ -1,5 +1,6 @@ package io.papermc.paper.registry; -+import io.papermc.paper.component.DataComponentType; ++import io.papermc.paper.datacomponent.DataComponentType; import net.kyori.adventure.key.Keyed; import org.bukkit.Art; import org.bukkit.Fluid; @@ -2450,7 +2441,7 @@ index 0000000000000000000000000000000000000000..5c8cdf46bc12501e1f284b4760c48e79 + @Nullable T filtered(); +} diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 54704da43cf9c429f3914f0580246dde99aa93c0..a30cd6e6a72dc299a6a1cd26dc9dcd8af0d0c18e 100644 +index 54704da43cf9c429f3914f0580246dde99aa93c0..7f566e1b6de89923cc1eca079b00c10afc2ae981 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java @@ -130,7 +130,7 @@ import org.jetbrains.annotations.Nullable; @@ -2490,10 +2481,10 @@ index 54704da43cf9c429f3914f0580246dde99aa93c0..a30cd6e6a72dc299a6a1cd26dc9dcd8a + * @param dataComponentType the data component type + * @return the default value or null if there is none + * @param <T> the value type -+ * @see #hasDefaultData(io.papermc.paper.component.DataComponentType) for DataComponentType.NonValued ++ * @see #hasDefaultData(io.papermc.paper.datacomponent.DataComponentType) for DataComponentType.NonValued + * @throws IllegalArgumentException if {@link #isItem()} is false + */ -+ public @Nullable <T> T getDefaultData(final io.papermc.paper.component.DataComponentType.@NotNull Valued<T> dataComponentType) { ++ public @Nullable <T> T getDefaultData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> dataComponentType) { + Preconditions.checkArgument(this.asItemType() != null); + return this.asItemType().getDefaultData(dataComponentType); + } @@ -2505,7 +2496,7 @@ index 54704da43cf9c429f3914f0580246dde99aa93c0..a30cd6e6a72dc299a6a1cd26dc9dcd8a + * @return true if there is a default value + * @throws IllegalArgumentException if {@link #isItem()} is false + */ -+ public boolean hasDefaultData(final io.papermc.paper.component.@NotNull DataComponentType dataComponentType) { ++ public boolean hasDefaultData(final io.papermc.paper.datacomponent.@NotNull DataComponentType dataComponentType) { + Preconditions.checkArgument(this.asItemType() != null); + return this.asItemType().hasDefaultData(dataComponentType); + } @@ -2516,14 +2507,14 @@ index 54704da43cf9c429f3914f0580246dde99aa93c0..a30cd6e6a72dc299a6a1cd26dc9dcd8a + * @return an immutable set of data component types + * @throws IllegalArgumentException if {@link #isItem()} is false + */ -+ public [email protected] @NotNull Set<io.papermc.paper.component.DataComponentType> getDefaultDataTypes() { ++ public [email protected] @NotNull Set<io.papermc.paper.datacomponent.DataComponentType> getDefaultDataTypes() { + Preconditions.checkArgument(this.asItemType() != null); + return this.asItemType().getDefaultDataTypes(); + } + // Paper end - data component API } diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index 9725580b6458e5d37fbc6059869604f9883bd6d1..0e4f8505d47c55c52571e217265d7deeed645b8b 100644 +index 9725580b6458e5d37fbc6059869604f9883bd6d1..966bbc686280a1b7f479a2ff755e477662f4bcd2 100644 --- a/src/main/java/org/bukkit/Registry.java +++ b/src/main/java/org/bukkit/Registry.java @@ -348,6 +348,8 @@ public interface Registry<T extends Keyed> extends Iterable<T> { @@ -2531,12 +2522,12 @@ index 9725580b6458e5d37fbc6059869604f9883bd6d1..0e4f8505d47c55c52571e217265d7dee } }; + -+ Registry<io.papermc.paper.component.DataComponentType> DATA_COMPONENT_TYPE = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.DATA_COMPONENT_TYPE); // Paper ++ Registry<io.papermc.paper.datacomponent.DataComponentType> DATA_COMPONENT_TYPE = io.papermc.paper.registry.RegistryAccess.registryAccess().getRegistry(io.papermc.paper.registry.RegistryKey.DATA_COMPONENT_TYPE); // Paper // Paper end - potion effect type registry /** * Get the object by its key. diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5fd898a72 100644 +index f603b5b6ba80af919f415322583a8345a5b1358a..26cb1e31a8169283f11b5a7af8a4fd52754095ae 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1031,4 +1031,123 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat @@ -2551,10 +2542,10 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * @param type the data component type + * @return the value for the data component type, or null if not set or marked as removed + * @param <T> the value type -+ * @see #hasData(io.papermc.paper.component.DataComponentType) for DataComponentType.NonValued ++ * @see #hasData(io.papermc.paper.datacomponent.DataComponentType) for DataComponentType.NonValued + */ + @org.jetbrains.annotations.Contract(pure = true) -+ public <T> @Nullable T getData(final io.papermc.paper.component.DataComponentType.@NotNull Valued<T> type) { ++ public <T> @Nullable T getData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type) { + return this.craftDelegate.getData(type); + } + @@ -2569,7 +2560,7 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + */ + @Utility + @org.jetbrains.annotations.Contract(value = "_, !null -> !null", pure = true) -+ public <T> @Nullable T getDataOrDefault(final io.papermc.paper.component.DataComponentType.@NotNull Valued<? extends T> type, final @Nullable T fallback) { ++ public <T> @Nullable T getDataOrDefault(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<? extends T> type, final @Nullable T fallback) { + final T object = this.getData(type); + return object != null ? object : fallback; + } @@ -2581,7 +2572,7 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * @return true if set, false otherwise + */ + @org.jetbrains.annotations.Contract(pure = true) -+ public boolean hasData(final io.papermc.paper.component.@NotNull DataComponentType type) { ++ public boolean hasData(final io.papermc.paper.datacomponent.@NotNull DataComponentType type) { + return this.craftDelegate.hasData(type); + } + @@ -2591,36 +2582,36 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * @return an immutable set of data component types + */ + @org.jetbrains.annotations.Contract("-> new") -+ public [email protected] Set<io.papermc.paper.component.@NotNull DataComponentType> getDataTypes() { ++ public [email protected] Set<io.papermc.paper.datacomponent.@NotNull DataComponentType> getDataTypes() { + return this.craftDelegate.getDataTypes(); + } + + /** + * Sets the value of the data component type for this itemstack. To + * reset the value to the default for the {@link #getType() item type}, use -+ * {@link #resetData(io.papermc.paper.component.DataComponentType)}. To mark the data component type -+ * as removed, use {@link #unsetData(io.papermc.paper.component.DataComponentType)} ++ * {@link #resetData(io.papermc.paper.datacomponent.DataComponentType)}. To mark the data component type ++ * as removed, use {@link #unsetData(io.papermc.paper.datacomponent.DataComponentType)} + * + * @param type component type + * @param valueBuilder value builder + * @param <T> value type + */ + @Utility -+ public <T> void setData(final io.papermc.paper.component.DataComponentType.@NotNull Valued<T> type, final io.papermc.paper.component.@NotNull ComponentBuilder<T> valueBuilder) { ++ public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final io.papermc.paper.datacomponent.@NotNull ComponentBuilder<T> valueBuilder) { + this.setData(type, valueBuilder.build()); + } + + /** + * Sets the value of the data component type for this itemstack. To + * reset the value to the default for the {@link #getType() item type}, use -+ * {@link #resetData(io.papermc.paper.component.DataComponentType)}. To mark the data component type -+ * as removed, use {@link #unsetData(io.papermc.paper.component.DataComponentType)} ++ * {@link #resetData(io.papermc.paper.datacomponent.DataComponentType)}. To mark the data component type ++ * as removed, use {@link #unsetData(io.papermc.paper.datacomponent.DataComponentType)} + * + * @param type component type + * @param value value to set + * @param <T> value type + */ -+ public <T> void setData(final io.papermc.paper.component.DataComponentType.@NotNull Valued<T> type, final @NotNull T value) { ++ public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final @NotNull T value) { + this.craftDelegate.setData(type, value); + } + @@ -2629,7 +2620,7 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * + * @param type type + */ -+ public void setData(final io.papermc.paper.component.DataComponentType.@NotNull NonValued type) { ++ public void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull NonValued type) { + this.craftDelegate.setData(type); + } + @@ -2638,16 +2629,16 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * + * @param type data component type + */ -+ public void unsetData(final io.papermc.paper.component.@NotNull DataComponentType type) { ++ public void unsetData(final io.papermc.paper.datacomponent.@NotNull DataComponentType type) { + this.craftDelegate.unsetData(type); + } + + /** + * Resets the value of this component to be the default -+ * value for the item type from {@link Material#getDefaultData(io.papermc.paper.component.DataComponentType.Valued)} ++ * value for the item type from {@link Material#getDefaultData(io.papermc.paper.datacomponent.DataComponentType.Valued)} + * @param type data component type to reset + */ -+ public void resetData(final io.papermc.paper.component.@NotNull DataComponentType type) { ++ public void resetData(final io.papermc.paper.datacomponent.@NotNull DataComponentType type) { + this.craftDelegate.resetData(type); + } + @@ -2658,13 +2649,13 @@ index f603b5b6ba80af919f415322583a8345a5b1358a..577fa629f8bf0fb3b90689ce391155e5 + * @param type the data component type + * @return true if the data type is overridden + */ -+ public boolean isOverridden(final io.papermc.paper.component.@NotNull DataComponentType type) { ++ public boolean isOverridden(final io.papermc.paper.datacomponent.@NotNull DataComponentType type) { + return this.craftDelegate.isOverridden(type); + } + // Paper end - data component API } diff --git a/src/main/java/org/bukkit/inventory/ItemType.java b/src/main/java/org/bukkit/inventory/ItemType.java -index 6bc1853ada3ea38bc36cb31fbb5ce246347fe5d4..a985de6eeeee2b4a856dbcfb403cfe128235dd24 100644 +index 6bc1853ada3ea38bc36cb31fbb5ce246347fe5d4..a5d2ba61678bb55ee6ff44026f58e15fa7f1e466 100644 --- a/src/main/java/org/bukkit/inventory/ItemType.java +++ b/src/main/java/org/bukkit/inventory/ItemType.java @@ -2326,4 +2326,31 @@ public interface ItemType extends Keyed, Translatable, net.kyori.adventure.trans @@ -2679,9 +2670,9 @@ index 6bc1853ada3ea38bc36cb31fbb5ce246347fe5d4..a985de6eeeee2b4a856dbcfb403cfe12 + * @param dataComponentType the data component type + * @return the default value or null if there is none + * @param <T> the value type -+ * @see #hasDefaultData(io.papermc.paper.component.DataComponentType) for DataComponentType.NonValued ++ * @see #hasDefaultData(io.papermc.paper.datacomponent.DataComponentType) for DataComponentType.NonValued + */ -+ @Nullable <T> T getDefaultData(io.papermc.paper.component.DataComponentType.@NotNull Valued<T> dataComponentType); ++ @Nullable <T> T getDefaultData(io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> dataComponentType); + + /** + * Checks if the data component type has a default value for this ItemType. @@ -2689,13 +2680,13 @@ index 6bc1853ada3ea38bc36cb31fbb5ce246347fe5d4..a985de6eeeee2b4a856dbcfb403cfe12 + * @param dataComponentType the data component type + * @return true if there is a default value + */ -+ boolean hasDefaultData(io.papermc.paper.component.@NotNull DataComponentType dataComponentType); ++ boolean hasDefaultData(io.papermc.paper.datacomponent.@NotNull DataComponentType dataComponentType); + + /** + * Gets the default data component types for this ItemType. + * + * @return an immutable set of data component types + */ -+ [email protected] @NotNull Set<io.papermc.paper.component.DataComponentType> getDefaultDataTypes(); ++ [email protected] @NotNull Set<io.papermc.paper.datacomponent.DataComponentType> getDefaultDataTypes(); + // Paper end - data component API } diff --git a/patches/server/1026-WIP-DataComponent-API.patch b/patches/server/1026-WIP-DataComponent-API.patch index 21dfe4207b..970b57a1e5 100644 --- a/patches/server/1026-WIP-DataComponent-API.patch +++ b/patches/server/1026-WIP-DataComponent-API.patch @@ -7,13 +7,13 @@ Subject: [PATCH] WIP DataComponent API public net/minecraft/world/item/component/ItemContainerContents MAX_SIZE public net/minecraft/world/item/component/ItemContainerContents items -diff --git a/src/main/java/io/papermc/paper/component/ComponentAdapter.java b/src/main/java/io/papermc/paper/component/ComponentAdapter.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/ComponentAdapter.java b/src/main/java/io/papermc/paper/datacomponent/ComponentAdapter.java new file mode 100644 -index 0000000000000000000000000000000000000000..e538819c873a324c58bcd8e73f89510ed77b7a00 +index 0000000000000000000000000000000000000000..2e6860c991b7484996897c3432d85f6df8cb1022 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/ComponentAdapter.java ++++ b/src/main/java/io/papermc/paper/datacomponent/ComponentAdapter.java @@ -0,0 +1,25 @@ -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import java.util.function.Function; +import net.minecraft.core.component.DataComponentType; @@ -38,45 +38,45 @@ index 0000000000000000000000000000000000000000..e538819c873a324c58bcd8e73f89510e + return this.vanillaToApi.apply(value); + } +} -diff --git a/src/main/java/io/papermc/paper/component/ComponentAdapters.java b/src/main/java/io/papermc/paper/component/ComponentAdapters.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/ComponentAdapters.java b/src/main/java/io/papermc/paper/datacomponent/ComponentAdapters.java new file mode 100644 -index 0000000000000000000000000000000000000000..b01c5169e5677ff5b18e2e90be4f2018ad5928cc +index 0000000000000000000000000000000000000000..7aa48de3f2c02f8d4f775b23f563d6c4d47d5b64 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/ComponentAdapters.java ++++ b/src/main/java/io/papermc/paper/datacomponent/ComponentAdapters.java @@ -0,0 +1,185 @@ -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import io.papermc.paper.adventure.PaperAdventure; -+import io.papermc.paper.component.item.PaperBannerPatternLayers; -+import io.papermc.paper.component.item.PaperBlockItemDataProperties; -+import io.papermc.paper.component.item.PaperBundleContents; -+import io.papermc.paper.component.item.PaperChargedProjectiles; -+import io.papermc.paper.component.item.PaperCustomModelData; -+import io.papermc.paper.component.item.PaperDyedItemColor; -+import io.papermc.paper.component.item.PaperFireworks; -+import io.papermc.paper.component.item.PaperFoodProperties; -+import io.papermc.paper.component.item.PaperItemAdventurePredicate; -+import io.papermc.paper.component.item.PaperItemArmorTrim; -+import io.papermc.paper.component.item.PaperItemAttributeModifiers; -+import io.papermc.paper.component.item.PaperItemContainerContents; -+import io.papermc.paper.component.item.PaperItemEnchantments; -+import io.papermc.paper.component.item.PaperItemLore; -+import io.papermc.paper.component.item.PaperItemTool; -+import io.papermc.paper.component.item.PaperJukeboxPlayable; -+import io.papermc.paper.component.item.PaperLockCode; -+import io.papermc.paper.component.item.PaperLodestoneTracker; -+import io.papermc.paper.component.item.PaperMapDecorations; -+import io.papermc.paper.component.item.PaperMapID; -+import io.papermc.paper.component.item.PaperMapItemColor; -+import io.papermc.paper.component.item.PaperPotDecorations; -+import io.papermc.paper.component.item.PaperPotionContents; -+import io.papermc.paper.component.item.PaperResolvableProfile; -+import io.papermc.paper.component.item.PaperSeededContainerLoot; -+import io.papermc.paper.component.item.PaperSuspiciousStewEffects; -+import io.papermc.paper.component.item.PaperUnbreakable; -+import io.papermc.paper.component.item.PaperWritableBookContent; -+import io.papermc.paper.component.item.PaperWrittenBookContent; ++import io.papermc.paper.datacomponent.item.PaperBannerPatternLayers; ++import io.papermc.paper.datacomponent.item.PaperBlockItemDataProperties; ++import io.papermc.paper.datacomponent.item.PaperBundleContents; ++import io.papermc.paper.datacomponent.item.PaperChargedProjectiles; ++import io.papermc.paper.datacomponent.item.PaperCustomModelData; ++import io.papermc.paper.datacomponent.item.PaperDyedItemColor; ++import io.papermc.paper.datacomponent.item.PaperFireworks; ++import io.papermc.paper.datacomponent.item.PaperFoodProperties; ++import io.papermc.paper.datacomponent.item.PaperItemAdventurePredicate; ++import io.papermc.paper.datacomponent.item.PaperItemArmorTrim; ++import io.papermc.paper.datacomponent.item.PaperItemAttributeModifiers; ++import io.papermc.paper.datacomponent.item.PaperItemContainerContents; ++import io.papermc.paper.datacomponent.item.PaperItemEnchantments; ++import io.papermc.paper.datacomponent.item.PaperItemLore; ++import io.papermc.paper.datacomponent.item.PaperItemTool; ++import io.papermc.paper.datacomponent.item.PaperJukeboxPlayable; ++import io.papermc.paper.datacomponent.item.PaperLockCode; ++import io.papermc.paper.datacomponent.item.PaperLodestoneTracker; ++import io.papermc.paper.datacomponent.item.PaperMapDecorations; ++import io.papermc.paper.datacomponent.item.PaperMapID; ++import io.papermc.paper.datacomponent.item.PaperMapItemColor; ++import io.papermc.paper.datacomponent.item.PaperPotDecorations; ++import io.papermc.paper.datacomponent.item.PaperPotionContents; ++import io.papermc.paper.datacomponent.item.PaperResolvableProfile; ++import io.papermc.paper.datacomponent.item.PaperSeededContainerLoot; ++import io.papermc.paper.datacomponent.item.PaperSuspiciousStewEffects; ++import io.papermc.paper.datacomponent.item.PaperUnbreakable; ++import io.papermc.paper.datacomponent.item.PaperWritableBookContent; ++import io.papermc.paper.datacomponent.item.PaperWrittenBookContent; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; @@ -153,7 +153,7 @@ index 0000000000000000000000000000000000000000..b01c5169e5677ff5b18e2e90be4f2018 + register(DataComponents.MAP_COLOR, PaperMapItemColor::new); + register(DataComponents.MAP_ID, PaperMapID::new); + register(DataComponents.MAP_DECORATIONS, PaperMapDecorations::new); -+ register(DataComponents.MAP_POST_PROCESSING, nms -> io.papermc.paper.component.item.MapPostProcessing.valueOf(nms.name()), api -> MapPostProcessing.valueOf(api.name())); ++ register(DataComponents.MAP_POST_PROCESSING, nms -> io.papermc.paper.datacomponent.item.MapPostProcessing.valueOf(nms.name()), api -> MapPostProcessing.valueOf(api.name())); + register(DataComponents.CHARGED_PROJECTILES, PaperChargedProjectiles::new); + register(DataComponents.BUNDLE_CONTENTS, PaperBundleContents::new); + register(DataComponents.POTION_CONTENTS, PaperPotionContents::new); @@ -229,13 +229,13 @@ index 0000000000000000000000000000000000000000..b01c5169e5677ff5b18e2e90be4f2018 + ADAPTERS.put(key, new ComponentAdapter<>(type, apiToVanilla, vanillaToApi)); + } +} -diff --git a/src/main/java/io/papermc/paper/component/PaperComponentType.java b/src/main/java/io/papermc/paper/component/PaperComponentType.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/PaperComponentType.java b/src/main/java/io/papermc/paper/datacomponent/PaperComponentType.java new file mode 100644 -index 0000000000000000000000000000000000000000..5639559368e6866e9b0afa6688f3b12cde4254f8 +index 0000000000000000000000000000000000000000..b5db510f1e641bba6d6a70c920921a774dc411a0 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/PaperComponentType.java ++++ b/src/main/java/io/papermc/paper/datacomponent/PaperComponentType.java @@ -0,0 +1,118 @@ -+package io.papermc.paper.component; ++package io.papermc.paper.datacomponent; + +import java.util.Collections; +import java.util.Set; @@ -353,13 +353,13 @@ index 0000000000000000000000000000000000000000..5639559368e6866e9b0afa6688f3b12c + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ComponentTypesBridgesImpl.java b/src/main/java/io/papermc/paper/component/item/ComponentTypesBridgesImpl.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridgesImpl.java b/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridgesImpl.java new file mode 100644 -index 0000000000000000000000000000000000000000..071df718283271df1a148e9ad4654da70e58d4c0 +index 0000000000000000000000000000000000000000..ba148b249d0e29debca93bc146caabf3016a1d57 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ComponentTypesBridgesImpl.java -@@ -0,0 +1,173 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ComponentTypesBridgesImpl.java +@@ -0,0 +1,177 @@ ++package io.papermc.paper.datacomponent.item; + +import io.papermc.paper.registry.set.RegistryKeySet; +import io.papermc.paper.util.Filtered; @@ -369,7 +369,11 @@ index 0000000000000000000000000000000000000000..071df718283271df1a148e9ad4654da7 +import org.bukkit.inventory.meta.trim.ArmorTrim; +import org.bukkit.map.MapCursor; +import org.bukkit.potion.PotionEffect; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.checker.nullness.qual.Nullable; ++import org.checkerframework.framework.qual.DefaultQualifier; + ++@DefaultQualifier(NonNull.class) +public final class ComponentTypesBridgesImpl implements ComponentTypesBridge { + + @Override @@ -478,7 +482,7 @@ index 0000000000000000000000000000000000000000..071df718283271df1a148e9ad4654da7 + } + + @Override -+ public Tool.Rule rule(final RegistryKeySet<BlockType> blockTypes, final Float speed, final TriState correctForDrops) { ++ public Tool.Rule rule(final RegistryKeySet<BlockType> blockTypes, final @Nullable Float speed, final TriState correctForDrops) { + return new PaperItemTool.PaperRule(blockTypes, speed, correctForDrops); + } + @@ -532,13 +536,13 @@ index 0000000000000000000000000000000000000000..071df718283271df1a148e9ad4654da7 + return new PaperLockCode.BuilderImpl(); + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/ComponentUtils.java b/src/main/java/io/papermc/paper/component/item/ComponentUtils.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/ComponentUtils.java b/src/main/java/io/papermc/paper/datacomponent/item/ComponentUtils.java new file mode 100644 -index 0000000000000000000000000000000000000000..fdb9b248ae51419ac98a1321e9c96e0de3337d58 +index 0000000000000000000000000000000000000000..d91a8b1e903ebb01b7da7e4d0150af5cc9ef68e4 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/ComponentUtils.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/ComponentUtils.java @@ -0,0 +1,38 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableList; @@ -576,13 +580,13 @@ index 0000000000000000000000000000000000000000..fdb9b248ae51419ac98a1321e9c96e0d + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperBannerPatternLayers.java b/src/main/java/io/papermc/paper/component/item/PaperBannerPatternLayers.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperBannerPatternLayers.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperBannerPatternLayers.java new file mode 100644 -index 0000000000000000000000000000000000000000..3077a38a5b33b155ea23ebf163c5c4c425d6c8b8 +index 0000000000000000000000000000000000000000..a624e3fe2721ef55399b2d4bccf6ddf3917c756b --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperBannerPatternLayers.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperBannerPatternLayers.java @@ -0,0 +1,62 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.List; +import java.util.Optional; @@ -595,7 +599,7 @@ index 0000000000000000000000000000000000000000..3077a38a5b33b155ea23ebf163c5c4c4 +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperBannerPatternLayers( @@ -644,13 +648,13 @@ index 0000000000000000000000000000000000000000..3077a38a5b33b155ea23ebf163c5c4c4 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperBlockItemDataProperties.java b/src/main/java/io/papermc/paper/component/item/PaperBlockItemDataProperties.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperBlockItemDataProperties.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperBlockItemDataProperties.java new file mode 100644 -index 0000000000000000000000000000000000000000..ec156e305c4aebf2972082f6bde2390be8544269 +index 0000000000000000000000000000000000000000..09335d46724831478fe396905a0f8d21a971a3f4 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperBlockItemDataProperties.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperBlockItemDataProperties.java @@ -0,0 +1,55 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.HashMap; @@ -705,13 +709,13 @@ index 0000000000000000000000000000000000000000..ec156e305c4aebf2972082f6bde2390b + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperBundleContents.java b/src/main/java/io/papermc/paper/component/item/PaperBundleContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperBundleContents.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperBundleContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..fbd9a0a1eb447d1a5ab0e898d9dc80b61acde6be +index 0000000000000000000000000000000000000000..ff2f4400ce971c6934672267c02e99a3d16500d7 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperBundleContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperBundleContents.java @@ -0,0 +1,52 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.ArrayList; +import java.util.List; @@ -721,7 +725,7 @@ index 0000000000000000000000000000000000000000..fbd9a0a1eb447d1a5ab0e898d9dc80b6 +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperBundleContents( @@ -763,13 +767,13 @@ index 0000000000000000000000000000000000000000..fbd9a0a1eb447d1a5ab0e898d9dc80b6 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperChargedProjectiles.java b/src/main/java/io/papermc/paper/component/item/PaperChargedProjectiles.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperChargedProjectiles.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperChargedProjectiles.java new file mode 100644 -index 0000000000000000000000000000000000000000..862eb057c156117b5856cd9bc453a6e378c972e6 +index 0000000000000000000000000000000000000000..4e05a8a3609f50d1e33c7babee6be5b6bc27237a --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperChargedProjectiles.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperChargedProjectiles.java @@ -0,0 +1,51 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.ArrayList; +import java.util.List; @@ -779,7 +783,7 @@ index 0000000000000000000000000000000000000000..862eb057c156117b5856cd9bc453a6e3 +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperChargedProjectiles( @@ -820,13 +824,13 @@ index 0000000000000000000000000000000000000000..862eb057c156117b5856cd9bc453a6e3 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperCustomModelData.java b/src/main/java/io/papermc/paper/component/item/PaperCustomModelData.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java new file mode 100644 -index 0000000000000000000000000000000000000000..b7a1233997d7192c5fd5a8c2e43fe235e1f1fa96 +index 0000000000000000000000000000000000000000..88f9697d3beda288c3e02b571753c1244f7c5e58 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperCustomModelData.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperCustomModelData.java @@ -0,0 +1,37 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -863,13 +867,13 @@ index 0000000000000000000000000000000000000000..b7a1233997d7192c5fd5a8c2e43fe235 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperDyedItemColor.java b/src/main/java/io/papermc/paper/component/item/PaperDyedItemColor.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperDyedItemColor.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperDyedItemColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..c5b60a6c93baed9f132e1ab9d5b3c7d7da386819 +index 0000000000000000000000000000000000000000..da22c58bcbf3e03686961f5a5127edeff700a545 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperDyedItemColor.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperDyedItemColor.java @@ -0,0 +1,55 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.Color; +import org.bukkit.craftbukkit.util.Handleable; @@ -924,13 +928,13 @@ index 0000000000000000000000000000000000000000..c5b60a6c93baed9f132e1ab9d5b3c7d7 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperFireworks.java b/src/main/java/io/papermc/paper/component/item/PaperFireworks.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperFireworks.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperFireworks.java new file mode 100644 -index 0000000000000000000000000000000000000000..0b3e574f9b5c05d97fbbbe66579844ec14ed2798 +index 0000000000000000000000000000000000000000..9671617b9cf3c0e97b1b200d1f44b85a3c17a38b --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperFireworks.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperFireworks.java @@ -0,0 +1,79 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.ArrayList; @@ -942,8 +946,8 @@ index 0000000000000000000000000000000000000000..0b3e574f9b5c05d97fbbbe66579844ec +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.addAndConvert; -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.addAndConvert; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperFireworks( @@ -1009,13 +1013,13 @@ index 0000000000000000000000000000000000000000..0b3e574f9b5c05d97fbbbe66579844ec + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperFoodProperties.java b/src/main/java/io/papermc/paper/component/item/PaperFoodProperties.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperFoodProperties.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperFoodProperties.java new file mode 100644 -index 0000000000000000000000000000000000000000..faff33e3dc42cd52130c4896d939ae5386db3035 +index 0000000000000000000000000000000000000000..17e40b72146afcc7eb79a536855d22244b3bb899 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperFoodProperties.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperFoodProperties.java @@ -0,0 +1,146 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.ArrayList; @@ -1031,8 +1035,8 @@ index 0000000000000000000000000000000000000000..faff33e3dc42cd52130c4896d939ae53 +import org.checkerframework.framework.qual.DefaultQualifier; +import org.jetbrains.annotations.Nullable; + -+import static io.papermc.paper.component.item.ComponentUtils.addAndConvert; -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.addAndConvert; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperFoodProperties( @@ -1161,41 +1165,29 @@ index 0000000000000000000000000000000000000000..faff33e3dc42cd52130c4896d939ae53 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemAdventurePredicate.java b/src/main/java/io/papermc/paper/component/item/PaperItemAdventurePredicate.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAdventurePredicate.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAdventurePredicate.java new file mode 100644 -index 0000000000000000000000000000000000000000..c0604b3d12e5299e602075cbdfa5a630b0ea52e6 +index 0000000000000000000000000000000000000000..cde2b0abffbd717984c57e649a91842c30b5360d --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemAdventurePredicate.java -@@ -0,0 +1,90 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAdventurePredicate.java +@@ -0,0 +1,78 @@ ++package io.papermc.paper.datacomponent.item; + -+import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; -+import java.util.function.Function; +import io.papermc.paper.block.BlockPredicate; +import io.papermc.paper.registry.RegistryKey; +import io.papermc.paper.registry.set.PaperRegistrySets; -+import io.papermc.paper.registry.set.RegistryKeySet; -+import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; -+import net.minecraft.world.item.AdventureModePredicate; -+import net.minecraft.world.level.block.Block; -+import org.bukkit.attribute.Attribute; -+import org.bukkit.attribute.AttributeModifier; -+import org.bukkit.block.BlockType; -+import org.bukkit.craftbukkit.CraftEquipmentSlot; -+import org.bukkit.craftbukkit.attribute.CraftAttribute; -+import org.bukkit.craftbukkit.attribute.CraftAttributeInstance; +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; +import org.jetbrains.annotations.Unmodifiable; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperItemAdventurePredicate( @@ -1257,13 +1249,13 @@ index 0000000000000000000000000000000000000000..c0604b3d12e5299e602075cbdfa5a630 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemArmorTrim.java b/src/main/java/io/papermc/paper/component/item/PaperItemArmorTrim.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemArmorTrim.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemArmorTrim.java new file mode 100644 -index 0000000000000000000000000000000000000000..8d2f20225101a1134b9d89a03f2f1a704bd4d51f +index 0000000000000000000000000000000000000000..d96be0ea89094d080ab81722d36af99a4be7808f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemArmorTrim.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemArmorTrim.java @@ -0,0 +1,68 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.craftbukkit.inventory.trim.CraftTrimMaterial; +import org.bukkit.craftbukkit.inventory.trim.CraftTrimPattern; @@ -1331,13 +1323,13 @@ index 0000000000000000000000000000000000000000..8d2f20225101a1134b9d89a03f2f1a70 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemAttributeModifiers.java b/src/main/java/io/papermc/paper/component/item/PaperItemAttributeModifiers.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAttributeModifiers.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAttributeModifiers.java new file mode 100644 -index 0000000000000000000000000000000000000000..e5cf4c3d6dbfc70feebb328aa006e18c33e09418 +index 0000000000000000000000000000000000000000..ea0c8b76a577a4be9588154f8192257a7bc2b1ed --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemAttributeModifiers.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemAttributeModifiers.java @@ -0,0 +1,91 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.ArrayList; @@ -1351,7 +1343,7 @@ index 0000000000000000000000000000000000000000..e5cf4c3d6dbfc70feebb328aa006e18c +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperItemAttributeModifiers( @@ -1428,13 +1420,13 @@ index 0000000000000000000000000000000000000000..e5cf4c3d6dbfc70feebb328aa006e18c + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemContainerContents.java b/src/main/java/io/papermc/paper/component/item/PaperItemContainerContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemContainerContents.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemContainerContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..cb198c1d7194562ffc4e74047250b53f6e41b034 +index 0000000000000000000000000000000000000000..eb86427206b7f5d38c40bfe26358dc6a051ac87f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemContainerContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemContainerContents.java @@ -0,0 +1,63 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.ArrayList; @@ -1445,8 +1437,8 @@ index 0000000000000000000000000000000000000000..cb198c1d7194562ffc4e74047250b53f +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.addAndConvert; -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.addAndConvert; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperItemContainerContents( @@ -1497,13 +1489,13 @@ index 0000000000000000000000000000000000000000..cb198c1d7194562ffc4e74047250b53f + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemEnchantments.java b/src/main/java/io/papermc/paper/component/item/PaperItemEnchantments.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemEnchantments.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemEnchantments.java new file mode 100644 -index 0000000000000000000000000000000000000000..2e6e7c82362bb209b198a38e186b3bcfaa41b952 +index 0000000000000000000000000000000000000000..bbf1524f95f8672dff239f17303e858bdc8fd5b3 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemEnchantments.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemEnchantments.java @@ -0,0 +1,92 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.Collections; @@ -1595,13 +1587,13 @@ index 0000000000000000000000000000000000000000..2e6e7c82362bb209b198a38e186b3bcf + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemLore.java b/src/main/java/io/papermc/paper/component/item/PaperItemLore.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemLore.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemLore.java new file mode 100644 -index 0000000000000000000000000000000000000000..66c18c734d25fa4184f62146cdb849536137f16b +index 0000000000000000000000000000000000000000..a7374010c21d87a225805d2c7dce2c5d04cc2e19 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemLore.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemLore.java @@ -0,0 +1,85 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import io.papermc.paper.adventure.PaperAdventure; @@ -1614,7 +1606,7 @@ index 0000000000000000000000000000000000000000..66c18c734d25fa4184f62146cdb84953 +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperItemLore( @@ -1686,40 +1678,31 @@ index 0000000000000000000000000000000000000000..66c18c734d25fa4184f62146cdb84953 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperItemTool.java b/src/main/java/io/papermc/paper/component/item/PaperItemTool.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperItemTool.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemTool.java new file mode 100644 -index 0000000000000000000000000000000000000000..67efd3e55c95567187319010d7ea825fb736e375 +index 0000000000000000000000000000000000000000..f6338542768b4f5c29919bc69d825a9cc18d7989 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperItemTool.java -@@ -0,0 +1,107 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperItemTool.java +@@ -0,0 +1,98 @@ ++package io.papermc.paper.datacomponent.item; + -+import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; -+import io.papermc.paper.registry.PaperRegistries; +import io.papermc.paper.registry.RegistryKey; +import io.papermc.paper.registry.set.PaperRegistrySets; +import io.papermc.paper.registry.set.RegistryKeySet; +import net.kyori.adventure.util.TriState; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; -+import net.minecraft.server.MinecraftServer; -+import org.bukkit.attribute.Attribute; -+import org.bukkit.attribute.AttributeModifier; +import org.bukkit.block.BlockType; -+import org.bukkit.craftbukkit.CraftEquipmentSlot; -+import org.bukkit.craftbukkit.attribute.CraftAttribute; -+import org.bukkit.craftbukkit.attribute.CraftAttributeInstance; +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; -+import org.checkerframework.checker.units.qual.N; +import org.checkerframework.framework.qual.DefaultQualifier; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperItemTool( @@ -1799,30 +1782,22 @@ index 0000000000000000000000000000000000000000..67efd3e55c95567187319010d7ea825f + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperJukeboxPlayable.java b/src/main/java/io/papermc/paper/component/item/PaperJukeboxPlayable.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java new file mode 100644 -index 0000000000000000000000000000000000000000..b9970492ea094c94b7c323115189c09656f0b364 +index 0000000000000000000000000000000000000000..754532e7ecc86d4494af58658a4d96d2d5c64876 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperJukeboxPlayable.java -@@ -0,0 +1,67 @@ -+package io.papermc.paper.component.item; ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperJukeboxPlayable.java +@@ -0,0 +1,59 @@ ++package io.papermc.paper.datacomponent.item; + -+import com.google.common.base.Preconditions; -+import java.util.ArrayList; -+import java.util.List; +import net.minecraft.world.item.EitherHolder; +import org.bukkit.JukeboxSong; -+import org.bukkit.attribute.Attribute; -+import org.bukkit.attribute.AttributeModifier; -+import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.CraftJukeboxSong; -+import org.bukkit.craftbukkit.attribute.CraftAttribute; -+import org.bukkit.craftbukkit.attribute.CraftAttributeInstance; +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperJukeboxPlayable( @@ -1872,13 +1847,13 @@ index 0000000000000000000000000000000000000000..b9970492ea094c94b7c323115189c096 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperLockCode.java b/src/main/java/io/papermc/paper/component/item/PaperLockCode.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperLockCode.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperLockCode.java new file mode 100644 -index 0000000000000000000000000000000000000000..0e6320385a3eaea265bd3ffd2a9ee8310b18599d +index 0000000000000000000000000000000000000000..07c87bef8903014a955ca61bd797f16310468716 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperLockCode.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperLockCode.java @@ -0,0 +1,37 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -1915,13 +1890,13 @@ index 0000000000000000000000000000000000000000..0e6320385a3eaea265bd3ffd2a9ee831 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperLodestoneTracker.java b/src/main/java/io/papermc/paper/component/item/PaperLodestoneTracker.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperLodestoneTracker.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperLodestoneTracker.java new file mode 100644 -index 0000000000000000000000000000000000000000..5611a001165a32f39a26ce171142420ed704430b +index 0000000000000000000000000000000000000000..27605ab59141e0b995d83eaafc4b83056fe3eb61 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperLodestoneTracker.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperLodestoneTracker.java @@ -0,0 +1,56 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.Optional; +import net.minecraft.core.GlobalPos; @@ -1977,13 +1952,13 @@ index 0000000000000000000000000000000000000000..5611a001165a32f39a26ce171142420e + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperMapDecorations.java b/src/main/java/io/papermc/paper/component/item/PaperMapDecorations.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperMapDecorations.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapDecorations.java new file mode 100644 -index 0000000000000000000000000000000000000000..99193e35b31259687d350e29c968c8a58397b8e4 +index 0000000000000000000000000000000000000000..90610ea3860e764f9e634bb81f952c1621269d1d --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperMapDecorations.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapDecorations.java @@ -0,0 +1,90 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.HashMap; +import java.util.Map; @@ -2073,13 +2048,13 @@ index 0000000000000000000000000000000000000000..99193e35b31259687d350e29c968c8a5 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperMapID.java b/src/main/java/io/papermc/paper/component/item/PaperMapID.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperMapID.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapID.java new file mode 100644 -index 0000000000000000000000000000000000000000..451e08627a041509e959396e9ce84acd944c17bf +index 0000000000000000000000000000000000000000..e74819d2e8c3819419d5ddbe686fddf3cb030dd4 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperMapID.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapID.java @@ -0,0 +1,38 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import net.minecraft.world.level.saveddata.maps.MapId; +import org.bukkit.craftbukkit.util.Handleable; @@ -2117,13 +2092,13 @@ index 0000000000000000000000000000000000000000..451e08627a041509e959396e9ce84acd + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperMapItemColor.java b/src/main/java/io/papermc/paper/component/item/PaperMapItemColor.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperMapItemColor.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapItemColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..c4087ef46d8ec600a88d3c7c64e740c2721ab0d6 +index 0000000000000000000000000000000000000000..14656be5a23dac70460499a79f60b8f3b3d86f1f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperMapItemColor.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperMapItemColor.java @@ -0,0 +1,38 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.Color; +import org.bukkit.craftbukkit.util.Handleable; @@ -2161,13 +2136,13 @@ index 0000000000000000000000000000000000000000..c4087ef46d8ec600a88d3c7c64e740c2 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperPotDecorations.java b/src/main/java/io/papermc/paper/component/item/PaperPotDecorations.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperPotDecorations.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperPotDecorations.java new file mode 100644 -index 0000000000000000000000000000000000000000..8b468cc4e15ac1e3e379ba67dbeb681accdc7665 +index 0000000000000000000000000000000000000000..f79cc0bfd543c755a445e140c8ceacb302f53ada --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperPotDecorations.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperPotDecorations.java @@ -0,0 +1,87 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import java.util.Optional; @@ -2254,13 +2229,13 @@ index 0000000000000000000000000000000000000000..8b468cc4e15ac1e3e379ba67dbeb681a + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperPotionContents.java b/src/main/java/io/papermc/paper/component/item/PaperPotionContents.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperPotionContents.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperPotionContents.java new file mode 100644 -index 0000000000000000000000000000000000000000..6c2769f8ba95598c19b87d6b1f8e2f35e4dce813 +index 0000000000000000000000000000000000000000..a18cbe16298ad944e1fff4f4c5576ae377f9a00f --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperPotionContents.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperPotionContents.java @@ -0,0 +1,90 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import java.util.ArrayList; +import java.util.List; @@ -2276,7 +2251,7 @@ index 0000000000000000000000000000000000000000..6c2769f8ba95598c19b87d6b1f8e2f35 +import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperPotionContents( @@ -2350,13 +2325,13 @@ index 0000000000000000000000000000000000000000..6c2769f8ba95598c19b87d6b1f8e2f35 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperResolvableProfile.java b/src/main/java/io/papermc/paper/component/item/PaperResolvableProfile.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperResolvableProfile.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperResolvableProfile.java new file mode 100644 -index 0000000000000000000000000000000000000000..aafad5e0e57cc782be8afcbf8b5d399c6f937867 +index 0000000000000000000000000000000000000000..11498b8e6cb2db2cfb67ac3fbd4217c681d79f11 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperResolvableProfile.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperResolvableProfile.java @@ -0,0 +1,105 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.destroystokyo.paper.profile.CraftPlayerProfile; +import com.destroystokyo.paper.profile.PlayerProfile; @@ -2375,7 +2350,7 @@ index 0000000000000000000000000000000000000000..aafad5e0e57cc782be8afcbf8b5d399c +import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperResolvableProfile( @@ -2461,13 +2436,13 @@ index 0000000000000000000000000000000000000000..aafad5e0e57cc782be8afcbf8b5d399c + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperSeededContainerLoot.java b/src/main/java/io/papermc/paper/component/item/PaperSeededContainerLoot.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperSeededContainerLoot.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperSeededContainerLoot.java new file mode 100644 -index 0000000000000000000000000000000000000000..0fab7c755799ba1af558c72758100577014fe146 +index 0000000000000000000000000000000000000000..c6a11cbe924926ec6d7ac1d69b5dacfb93b2769b --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperSeededContainerLoot.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperSeededContainerLoot.java @@ -0,0 +1,61 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.key.Key; @@ -2528,13 +2503,13 @@ index 0000000000000000000000000000000000000000..0fab7c755799ba1af558c72758100577 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperSuspiciousStewEffects.java b/src/main/java/io/papermc/paper/component/item/PaperSuspiciousStewEffects.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperSuspiciousStewEffects.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperSuspiciousStewEffects.java new file mode 100644 -index 0000000000000000000000000000000000000000..a608014a15c1efea9b010314e013eb3c9a77c956 +index 0000000000000000000000000000000000000000..19827c8b88f9a9b882633c5aff0561df4cbf2f48 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperSuspiciousStewEffects.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperSuspiciousStewEffects.java @@ -0,0 +1,59 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import io.papermc.paper.potion.SuspiciousEffectEntry; +import java.util.ArrayList; @@ -2544,7 +2519,7 @@ index 0000000000000000000000000000000000000000..a608014a15c1efea9b010314e013eb3c +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; +import static io.papermc.paper.potion.SuspiciousEffectEntry.create; + +@DefaultQualifier(NonNull.class) @@ -2593,13 +2568,13 @@ index 0000000000000000000000000000000000000000..a608014a15c1efea9b010314e013eb3c + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperUnbreakable.java b/src/main/java/io/papermc/paper/component/item/PaperUnbreakable.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperUnbreakable.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperUnbreakable.java new file mode 100644 -index 0000000000000000000000000000000000000000..8be3187a6c624d4ba74d2a58bc64b1b0615a23f6 +index 0000000000000000000000000000000000000000..f95ceec3e154772f0af9e51eac99dcd77a1beab8 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperUnbreakable.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperUnbreakable.java @@ -0,0 +1,42 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import org.bukkit.craftbukkit.util.Handleable; +import org.checkerframework.checker.nullness.qual.NonNull; @@ -2641,13 +2616,13 @@ index 0000000000000000000000000000000000000000..8be3187a6c624d4ba74d2a58bc64b1b0 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperWritableBookContent.java b/src/main/java/io/papermc/paper/component/item/PaperWritableBookContent.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperWritableBookContent.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperWritableBookContent.java new file mode 100644 -index 0000000000000000000000000000000000000000..a71d7cf78182926d0a3d66e93e9a36b191ff11df +index 0000000000000000000000000000000000000000..5c8249525613bfb2ddca470f27947fbe7f8cac86 --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperWritableBookContent.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperWritableBookContent.java @@ -0,0 +1,107 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import io.papermc.paper.util.Filtered; @@ -2660,7 +2635,7 @@ index 0000000000000000000000000000000000000000..a71d7cf78182926d0a3d66e93e9a36b1 +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.framework.qual.DefaultQualifier; + -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; +import static io.papermc.paper.util.Filtered.create; + +@DefaultQualifier(NonNull.class) @@ -2754,13 +2729,13 @@ index 0000000000000000000000000000000000000000..a71d7cf78182926d0a3d66e93e9a36b1 + } + } +} -diff --git a/src/main/java/io/papermc/paper/component/item/PaperWrittenBookContent.java b/src/main/java/io/papermc/paper/component/item/PaperWrittenBookContent.java +diff --git a/src/main/java/io/papermc/paper/datacomponent/item/PaperWrittenBookContent.java b/src/main/java/io/papermc/paper/datacomponent/item/PaperWrittenBookContent.java new file mode 100644 -index 0000000000000000000000000000000000000000..42b3d2d576dba7c5d403061d2e102a32d3b177f4 +index 0000000000000000000000000000000000000000..4925f031e41d6b62e597fd1d558b38ec94956f4e --- /dev/null -+++ b/src/main/java/io/papermc/paper/component/item/PaperWrittenBookContent.java ++++ b/src/main/java/io/papermc/paper/datacomponent/item/PaperWrittenBookContent.java @@ -0,0 +1,190 @@ -+package io.papermc.paper.component.item; ++package io.papermc.paper.datacomponent.item; + +import com.google.common.base.Preconditions; +import io.papermc.paper.adventure.PaperAdventure; @@ -2781,7 +2756,7 @@ index 0000000000000000000000000000000000000000..42b3d2d576dba7c5d403061d2e102a32 + +import static io.papermc.paper.adventure.PaperAdventure.asAdventure; +import static io.papermc.paper.adventure.PaperAdventure.asVanilla; -+import static io.papermc.paper.component.item.ComponentUtils.transform; ++import static io.papermc.paper.datacomponent.item.ComponentUtils.transform; + +@DefaultQualifier(NonNull.class) +public record PaperWrittenBookContent( @@ -2951,15 +2926,15 @@ index 0000000000000000000000000000000000000000..42b3d2d576dba7c5d403061d2e102a32 + } +} diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java -index 9c0972023bc9be20ba81bbc2e1d6688b615760c0..e7f5aea8c52615cb0644b52e527d0105745bf0f6 100644 +index 9c0972023bc9be20ba81bbc2e1d6688b615760c0..7eb43862789ec1b37b658727e0fc7a99c91d0129 100644 --- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java +++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java @@ -3,6 +3,8 @@ package io.papermc.paper.registry; import io.papermc.paper.adventure.PaperAdventure; import io.papermc.paper.registry.data.PaperEnchantmentRegistryEntry; import io.papermc.paper.registry.data.PaperGameEventRegistryEntry; -+import io.papermc.paper.component.DataComponentType; -+import io.papermc.paper.component.PaperComponentType; ++import io.papermc.paper.datacomponent.DataComponentType; ++import io.papermc.paper.datacomponent.PaperComponentType; import io.papermc.paper.registry.entry.RegistryEntry; import io.papermc.paper.registry.tag.TagKey; import java.util.Collections; @@ -2985,7 +2960,7 @@ index 8ac485d82c2d2b32f4d54e02c18c2cb2c3df4fa4..4f15ec26c7512a6f2b9c14e108d582d3 ItemEnchantments(Object2IntAVLTreeMap<Holder<Enchantment>> enchantments, boolean showInTooltip) { // Paper diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index 32a41c8b324aad67b9dcf74387aef299e6478a64..6521990ecae548dae34e1e1e6309d0548023e0e9 100644 +index 32a41c8b324aad67b9dcf74387aef299e6478a64..30cca598bdec443ffe4f8a38ae8c10c4b20d1027 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -192,7 +192,7 @@ public final class CraftItemStack extends ItemStack { @@ -3030,48 +3005,48 @@ index 32a41c8b324aad67b9dcf74387aef299e6478a64..6521990ecae548dae34e1e1e6309d054 // Paper end - pdc + // Paper start - data component API + @Override -+ public <T> T getData(final io.papermc.paper.component.DataComponentType.Valued<T> type) { ++ public <T> T getData(final io.papermc.paper.datacomponent.DataComponentType.Valued<T> type) { + if (this.isEmpty()) { + return null; + } -+ return io.papermc.paper.component.PaperComponentType.convertDataComponentValue(this.handle.getComponents(), (io.papermc.paper.component.PaperComponentType.ValuedImpl<T, ?>) type); ++ return io.papermc.paper.datacomponent.PaperComponentType.convertDataComponentValue(this.handle.getComponents(), (io.papermc.paper.datacomponent.PaperComponentType.ValuedImpl<T, ?>) type); + } + + @Override -+ public boolean hasData(final io.papermc.paper.component.DataComponentType type) { ++ public boolean hasData(final io.papermc.paper.datacomponent.DataComponentType type) { + if (this.isEmpty()) { + return false; + } -+ return this.handle.has(io.papermc.paper.component.PaperComponentType.bukkitToMinecraft(type)); ++ return this.handle.has(io.papermc.paper.datacomponent.PaperComponentType.bukkitToMinecraft(type)); + } + + @Override -+ public java.util.Set<io.papermc.paper.component.DataComponentType> getDataTypes() { ++ public java.util.Set<io.papermc.paper.datacomponent.DataComponentType> getDataTypes() { + if (this.isEmpty()) { + return java.util.Collections.emptySet(); + } -+ return io.papermc.paper.component.PaperComponentType.minecraftToBukkit(this.handle.getComponents().keySet()); ++ return io.papermc.paper.datacomponent.PaperComponentType.minecraftToBukkit(this.handle.getComponents().keySet()); + } + + @Override -+ public <T> void setData(final io.papermc.paper.component.DataComponentType.Valued<T> type, final T value) { ++ public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.Valued<T> type, final T value) { + Preconditions.checkArgument(value != null, "value cannot be null"); + if (this.isEmpty()) { + return; + } -+ this.setDataInternal((io.papermc.paper.component.PaperComponentType.ValuedImpl<T, ?>) type, value); ++ this.setDataInternal((io.papermc.paper.datacomponent.PaperComponentType.ValuedImpl<T, ?>) type, value); + } + + @Override -+ public void setData(final io.papermc.paper.component.DataComponentType.NonValued type) { ++ public void setData(final io.papermc.paper.datacomponent.DataComponentType.NonValued type) { + if (this.isEmpty()) { + return; + } -+ this.setDataInternal((io.papermc.paper.component.PaperComponentType.NonValuedImpl<?, ?>) type, null); ++ this.setDataInternal((io.papermc.paper.datacomponent.PaperComponentType.NonValuedImpl<?, ?>) type, null); + } + -+ private <A, V> void setDataInternal(final io.papermc.paper.component.PaperComponentType<A, V> type, final A value) { -+ final io.papermc.paper.component.ComponentAdapter<V, A> adapter = type.getAdapter(); ++ private <A, V> void setDataInternal(final io.papermc.paper.datacomponent.PaperComponentType<A, V> type, final A value) { ++ final io.papermc.paper.datacomponent.ComponentAdapter<V, A> adapter = type.getAdapter(); + if (adapter.isValued()) { + Preconditions.checkArgument(value != null, "value cannot be null"); + this.handle.set(type.getHandle(), adapter.toVanilla(value)); @@ -3081,23 +3056,23 @@ index 32a41c8b324aad67b9dcf74387aef299e6478a64..6521990ecae548dae34e1e1e6309d054 + } + + @Override -+ public void unsetData(final io.papermc.paper.component.DataComponentType type) { ++ public void unsetData(final io.papermc.paper.datacomponent.DataComponentType type) { + if (this.isEmpty()) { + return; + } -+ this.handle.remove(io.papermc.paper.component.PaperComponentType.bukkitToMinecraft(type)); ++ this.handle.remove(io.papermc.paper.datacomponent.PaperComponentType.bukkitToMinecraft(type)); + } + + @Override -+ public void resetData(final io.papermc.paper.component.DataComponentType type) { ++ public void resetData(final io.papermc.paper.datacomponent.DataComponentType type) { + if (this.isEmpty()) { + return; + } -+ this.resetData((io.papermc.paper.component.PaperComponentType<?, ?>) type); ++ this.resetData((io.papermc.paper.datacomponent.PaperComponentType<?, ?>) type); + } + -+ private <M> void resetData(final io.papermc.paper.component.PaperComponentType<?, M> type) { -+ final net.minecraft.core.component.DataComponentType<M> nms = io.papermc.paper.component.PaperComponentType.bukkitToMinecraft(type); ++ private <M> void resetData(final io.papermc.paper.datacomponent.PaperComponentType<?, M> type) { ++ final net.minecraft.core.component.DataComponentType<M> nms = io.papermc.paper.datacomponent.PaperComponentType.bukkitToMinecraft(type); + final M nmsValue = this.handle.getItem().components().get(nms); + // if nmsValue is null, it will clear any set patch + // if nmsValue is not null, it will still clear any set patch because it will equal the default value @@ -3105,18 +3080,18 @@ index 32a41c8b324aad67b9dcf74387aef299e6478a64..6521990ecae548dae34e1e1e6309d054 + } + + @Override -+ public boolean isOverridden(final io.papermc.paper.component.DataComponentType type) { ++ public boolean isOverridden(final io.papermc.paper.datacomponent.DataComponentType type) { + if (this.isEmpty()) { + return false; + } -+ final net.minecraft.core.component.DataComponentType<?> nms = io.papermc.paper.component.PaperComponentType.bukkitToMinecraft(type); ++ final net.minecraft.core.component.DataComponentType<?> nms = io.papermc.paper.datacomponent.PaperComponentType.bukkitToMinecraft(type); + // maybe a more efficient way is to expose the "patch" map in PatchedDataComponentMap and just check if the type exists as a key + return java.util.Objects.equals(this.handle.get(nms), this.handle.getPrototype().get(nms)); + } + // Paper end - data component API } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemType.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemType.java -index 07539ebfefa3352de5ee7a17f2724cf2c979f399..9f4ae52e2d2d33f8f22c2196c244ee2f8b4da32d 100644 +index 07539ebfefa3352de5ee7a17f2724cf2c979f399..29feba5baa188885d1e586681635fcace788b4c4 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemType.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemType.java @@ -263,4 +263,21 @@ public class CraftItemType<M extends ItemMeta> implements ItemType.Typed<M>, Han @@ -3126,18 +3101,18 @@ index 07539ebfefa3352de5ee7a17f2724cf2c979f399..9f4ae52e2d2d33f8f22c2196c244ee2f + + // Paper start - data component API + @Override -+ public <T> T getDefaultData(final io.papermc.paper.component.DataComponentType.Valued<T> dataComponentType) { -+ return io.papermc.paper.component.PaperComponentType.convertDataComponentValue(this.item.components(), ((io.papermc.paper.component.PaperComponentType.ValuedImpl<T, ?>) dataComponentType)); ++ public <T> T getDefaultData(final io.papermc.paper.datacomponent.DataComponentType.Valued<T> dataComponentType) { ++ return io.papermc.paper.datacomponent.PaperComponentType.convertDataComponentValue(this.item.components(), ((io.papermc.paper.datacomponent.PaperComponentType.ValuedImpl<T, ?>) dataComponentType)); + } + + @Override -+ public boolean hasDefaultData(final io.papermc.paper.component.DataComponentType dataComponentType) { -+ return this.item.components().has(io.papermc.paper.component.PaperComponentType.bukkitToMinecraft(dataComponentType)); ++ public boolean hasDefaultData(final io.papermc.paper.datacomponent.DataComponentType dataComponentType) { ++ return this.item.components().has(io.papermc.paper.datacomponent.PaperComponentType.bukkitToMinecraft(dataComponentType)); + } + + @Override -+ public java.util.Set<io.papermc.paper.component.DataComponentType> getDefaultDataTypes() { -+ return io.papermc.paper.component.PaperComponentType.minecraftToBukkit(this.item.components().keySet()); ++ public java.util.Set<io.papermc.paper.datacomponent.DataComponentType> getDefaultDataTypes() { ++ return io.papermc.paper.datacomponent.PaperComponentType.minecraftToBukkit(this.item.components().keySet()); + } + // Paper end - data component API } @@ -3205,57 +3180,49 @@ index 4d97024bb05ab815409fc25c5924903868cc3945..a1839baaef752f54efeebb982b160396 if (this.hasDisplayName()) { itemTag.put(CraftMetaItem.NAME, this.displayName); } -diff --git a/src/main/resources/META-INF/services/io.papermc.paper.component.item.ComponentTypesBridge b/src/main/resources/META-INF/services/io.papermc.paper.component.item.ComponentTypesBridge +diff --git a/src/main/resources/META-INF/services/io.papermc.paper.datacomponent.item.ComponentTypesBridge b/src/main/resources/META-INF/services/io.papermc.paper.datacomponent.item.ComponentTypesBridge new file mode 100644 -index 0000000000000000000000000000000000000000..a2c02206254a18e089cb2b40eab5c59e08c1e8c8 +index 0000000000000000000000000000000000000000..1c1fcbbacc3881e088d64a7a840b3f3e31706c0f --- /dev/null -+++ b/src/main/resources/META-INF/services/io.papermc.paper.component.item.ComponentTypesBridge ++++ b/src/main/resources/META-INF/services/io.papermc.paper.datacomponent.item.ComponentTypesBridge @@ -0,0 +1 @@ -+io.papermc.paper.component.item.ComponentTypesBridgesImpl ++io.papermc.paper.datacomponent.item.ComponentTypesBridgesImpl diff --git a/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java b/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java new file mode 100644 -index 0000000000000000000000000000000000000000..cb52cc252934561e7b47fbd4a26d10013e9e7e77 +index 0000000000000000000000000000000000000000..eab92494238fc6664ba7d551a2b9d8b33e59e188 --- /dev/null +++ b/src/test/java/io/papermc/paper/item/ItemStackDataComponentTest.java -@@ -0,0 +1,403 @@ +@@ -0,0 +1,392 @@ +package io.papermc.paper.item; + -+import ca.spottedleaf.concurrentutil.util.CollectionUtil; -+import com.google.common.collect.HashMultiset; +import com.google.common.collect.Iterators; -+import com.google.common.collect.Lists; -+import io.papermc.paper.block.BlockPredicate; -+import io.papermc.paper.component.DataComponentType; -+import io.papermc.paper.component.DataComponentTypes; -+import io.papermc.paper.component.item.ChargedProjectiles; -+import io.papermc.paper.component.item.CustomModelData; -+import io.papermc.paper.component.item.DyedItemColor; -+import io.papermc.paper.component.item.Fireworks; -+import io.papermc.paper.component.item.FoodProperties; -+import io.papermc.paper.component.item.ItemAdventurePredicate; -+import io.papermc.paper.component.item.ItemArmorTrim; -+import io.papermc.paper.component.item.ItemAttributeModifiers; -+import io.papermc.paper.component.item.ItemEnchantments; -+import io.papermc.paper.component.item.ItemLore; -+import io.papermc.paper.component.item.MapID; -+import io.papermc.paper.component.item.MapItemColor; -+import io.papermc.paper.component.item.PotDecorations; -+import io.papermc.paper.component.item.Tool; -+import io.papermc.paper.component.item.Unbreakable; ++import io.papermc.paper.datacomponent.DataComponentType; ++import io.papermc.paper.datacomponent.DataComponentTypes; ++import io.papermc.paper.datacomponent.item.ChargedProjectiles; ++import io.papermc.paper.datacomponent.item.CustomModelData; ++import io.papermc.paper.datacomponent.item.DyedItemColor; ++import io.papermc.paper.datacomponent.item.Fireworks; ++import io.papermc.paper.datacomponent.item.FoodProperties; ++import io.papermc.paper.datacomponent.item.ItemArmorTrim; ++import io.papermc.paper.datacomponent.item.ItemAttributeModifiers; ++import io.papermc.paper.datacomponent.item.ItemEnchantments; ++import io.papermc.paper.datacomponent.item.ItemLore; ++import io.papermc.paper.datacomponent.item.MapID; ++import io.papermc.paper.datacomponent.item.MapItemColor; ++import io.papermc.paper.datacomponent.item.PotDecorations; ++import io.papermc.paper.datacomponent.item.Tool; ++import io.papermc.paper.datacomponent.item.Unbreakable; +import io.papermc.paper.registry.RegistryAccess; +import io.papermc.paper.registry.RegistryKey; +import io.papermc.paper.registry.set.RegistrySet; +import io.papermc.paper.registry.tag.TagKey; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.util.TriState; -+import net.minecraft.world.item.enchantment.Enchantments; -+import net.minecraft.world.level.saveddata.maps.MapId; +import org.bukkit.Color; +import org.bukkit.FireworkEffect; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.Registry; -+import org.bukkit.Tag; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; +import org.bukkit.block.BlockState; @@ -3266,7 +3233,6 @@ index 0000000000000000000000000000000000000000..cb52cc252934561e7b47fbd4a26d1001 +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemRarity; +import org.bukkit.inventory.ItemStack; -+import org.bukkit.inventory.ItemType; +import org.bukkit.inventory.meta.ArmorMeta; +import org.bukkit.inventory.meta.BlockStateMeta; +import org.bukkit.inventory.meta.CrossbowMeta; @@ -3284,14 +3250,12 @@ index 0000000000000000000000000000000000000000..cb52cc252934561e7b47fbd4a26d1001 +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.support.AbstractTestingBase; -+import org.codehaus.plexus.util.CollectionUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Function; -+import java.util.stream.Collectors; + +class ItemStackDataComponentTest extends AbstractTestingBase { + @@ -3964,7 +3928,7 @@ index aabe3730fa582f442ee0544dd1a9f3123f719c68..a75fb4f856728610bec5ebd24eb9c283 this.downCastTest(name, provider.stack(), craftBlank); craftBlank.setItemMeta(craftBlank.getItemMeta()); diff --git a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java -index a480944e1fc1b79b91be7e8d3e3799b9168cf5a0..2eb1cc0b796df3cfb2f40d4cbc3f8fbe740218a3 100644 +index a480944e1fc1b79b91be7e8d3e3799b9168cf5a0..7ae45920e02c1ada0a5d4d1f3512a0b8006ff18e 100644 --- a/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java +++ b/src/test/java/org/bukkit/support/provider/RegistriesArgumentProvider.java @@ -58,7 +58,7 @@ public class RegistriesArgumentProvider implements ArgumentsProvider { @@ -3972,7 +3936,7 @@ index a480944e1fc1b79b91be7e8d3e3799b9168cf5a0..2eb1cc0b796df3cfb2f40d4cbc3f8fbe register(RegistryKey.ITEM, ItemType.class, Registries.ITEM, CraftItemType.class, net.minecraft.world.item.Item.class, true); register(RegistryKey.BLOCK, BlockType.class, Registries.BLOCK, CraftBlockType.class, net.minecraft.world.level.block.Block.class, true); - -+ register(RegistryKey.DATA_COMPONENT_TYPE, io.papermc.paper.component.DataComponentType.class, Registries.DATA_COMPONENT_TYPE, io.papermc.paper.component.PaperComponentType.class, net.minecraft.core.component.DataComponentType.class, false); ++ register(RegistryKey.DATA_COMPONENT_TYPE, io.papermc.paper.datacomponent.DataComponentType.class, Registries.DATA_COMPONENT_TYPE, io.papermc.paper.datacomponent.PaperComponentType.class, net.minecraft.core.component.DataComponentType.class, false); } private static void register(RegistryKey registryKey, Class bukkit, ResourceKey registry, Class craft, Class minecraft) { // Paper |