aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-06-21 19:38:57 -0700
committerOwen1212055 <[email protected]>2024-11-18 14:50:38 -0500
commit92055b6da5d3c59bc17a509fdd3f2f8c2b14a757 (patch)
treea79749826e4938f7f9d49523d940a1cdc82582df /patches/api
parentc92fa203dc2a438a028ea423598b0a338f4626d3 (diff)
downloadPaper-92055b6da5d3c59bc17a509fdd3f2f8c2b14a757.tar.gz
Paper-92055b6da5d3c59bc17a509fdd3f2f8c2b14a757.zip
change package
Diffstat (limited to 'patches/api')
-rw-r--r--patches/api/0480-WIP-DataComponent-API.patch511
1 files changed, 251 insertions, 260 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
}