From f207099765f4f51048b1edcdc65170023925535b Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Sat, 9 Jul 2022 17:28:42 +0200 Subject: [PATCH] Add Offline PDC API --- .../craftbukkit/CraftOfflinePlayer.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java index 4f4e3ee18d..94ca040730 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java @@ -325,6 +325,34 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa } // Paper end + // Paper start - Add Offline PDC API + private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry(); + private io.papermc.paper.persistence.@org.checkerframework.checker.nullness.qual.MonotonicNonNull PersistentDataContainerView persistentDataContainerView; + + @Override + public io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer() { + if (this.persistentDataContainerView == null) { + this.persistentDataContainerView = new io.papermc.paper.persistence.PaperPersistentDataContainerView(DATA_TYPE_REGISTRY) { + + private CompoundTag getPersistentTag() { + return net.minecraft.Optionull.map(CraftOfflinePlayer.this.getData(), data -> data.getCompound("BukkitValues")); + } + + @Override + public CompoundTag toTagCompound() { + return java.util.Objects.requireNonNullElseGet(this.getPersistentTag(), CompoundTag::new); + } + + @Override + public net.minecraft.nbt.Tag getTag(String key) { + return net.minecraft.Optionull.map(this.getPersistentTag(), tag -> tag.get(key)); + } + }; + } + return this.persistentDataContainerView; + } + // Paper end - Add Offline PDC API + @Override public Location getLastDeathLocation() { if (this.getData().contains("LastDeathLocation", 10)) {