diff --git a/paper-server/src/main/java/io/papermc/paper/datacomponent/PaperDataComponentType.java b/paper-server/src/main/java/io/papermc/paper/datacomponent/PaperDataComponentType.java index f2a31526c56c..8b123740e888 100644 --- a/paper-server/src/main/java/io/papermc/paper/datacomponent/PaperDataComponentType.java +++ b/paper-server/src/main/java/io/papermc/paper/datacomponent/PaperDataComponentType.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Set; import net.minecraft.core.Holder; +import net.minecraft.core.component.DataComponentGetter; import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.registries.Registries; import org.bukkit.craftbukkit.CraftRegistry; @@ -32,9 +33,9 @@ public static Set minecraftToBukkit(final Set @Nullable B convertDataComponentValue(final DataComponentMap map, final PaperDataComponentType.ValuedImpl type) { + public static @Nullable B convertDataComponentValue(final DataComponentGetter getter, final PaperDataComponentType.ValuedImpl type) { final net.minecraft.core.component.DataComponentType nms = bukkitToMinecraft(type); - final M nmsValue = map.get(nms); + final M nmsValue = getter.get(nms); if (nmsValue == null) { return null; } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index e45f9514e4b5..ecefa8e1487d 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -7,6 +7,7 @@ import com.google.common.collect.Lists; import com.mojang.logging.LogUtils; import io.papermc.paper.datacomponent.DataComponentType; +import io.papermc.paper.datacomponent.PaperDataComponentType; import io.papermc.paper.entity.LookAnchor; import io.papermc.paper.entity.TeleportFlag; import java.util.EnumSet; @@ -1324,19 +1325,21 @@ public void broadcastHurtAnimation(java.util.Collection players) { ((CraftPlayer) player).sendHurtAnimation(0, this); } } + @Override public @Nullable T getData(@NotNull final DataComponentType.Valued type) { - return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)); + return PaperDataComponentType.convertDataComponentValue(this.getHandle(), (PaperDataComponentType.ValuedImpl) type); } @Override public @Nullable T getDataOrDefault(@NotNull final DataComponentType.Valued type, @Nullable final T fallback) { - return this.entity.getOrDefault(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type), fallback); + final T value = this.getData((DataComponentType.Valued) type); + return (value != null) ? value : fallback; } @Override public boolean hasData(final @NotNull DataComponentType type) { - return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; + return this.getHandle().get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java index 67bfcdad56f6..3eea7b5e12a4 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -668,7 +668,7 @@ public T getData(final io.papermc.paper.datacomponent.DataComponentType.Valu if (this.isEmpty()) { return null; } - return PaperDataComponentType.convertDataComponentValue(this.handle.getComponents(), (PaperDataComponentType.ValuedImpl) type); + return PaperDataComponentType.convertDataComponentValue(this.handle, (PaperDataComponentType.ValuedImpl) type); } @Override