Skip to content

Commit b7ea1ee

Browse files
authored
Document more pdc usages in the API (#544)
1 parent eb14e71 commit b7ea1ee

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

docs/paper/dev/api/pdc.mdx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ The full list of classes that support the PDC are:
1616
- [`ItemMeta`](#itemmeta)
1717
- [`GeneratedStructure`](#generatedstructure)
1818
- [`Raid`](#raid)
19+
- [`OfflinePlayer`](#offlineplayer)
20+
- [`ItemStack`](#itemstack)
1921

2022
## What is it used for?
2123
In the past, developers resorted to a variety of methods to store custom data on objects:
@@ -201,3 +203,21 @@ and their PDC can be fetched with <Javadoc name={"org.bukkit.persistence.Persist
201203
- `GeneratedStructure#getPersistentDataContainer()`
202204
- ##### <Javadoc name={"org.bukkit.Raid"}>`Raid`</Javadoc>
203205
- `Raid#getPersistentDataContainer()`
206+
- ##### <Javadoc name={"org.bukkit.OfflinePlayer"}>`OfflinePlayer`</Javadoc>
207+
- OfflinePlayer only exposes a read-only version of the persistent data container.
208+
It can be accessed via `OfflinePlayer#getPersistentDataContainer()`.
209+
- ##### <Javadoc name={"org.bukkit.inventory.ItemStack"}>`ItemStack`</Javadoc>
210+
- The persistent data container of an `ItemStack` has historically been accessed by
211+
the `ItemStack`'s `ItemMeta`. This, however, includes the overhead of constructing the entire
212+
`ItemMeta`, which acts as a snapshot of the `ItemStack`'s data at the point of creation.
213+
214+
To avoid this overhead, ItemStack exposes a read-only view of its persistent data container at
215+
`ItemStack#getPersistentDataContainer()`.
216+
Edits to the persistent data container can be achieved via `ItemStack#editPersistentDataContainer(Consumer)`.
217+
The persistent data container available in the consumer is not valid outside the consumer.
218+
```java
219+
ItemStack itemStack = ...;
220+
itemStack.editPersistentDataContainer(pdc -> {
221+
pdc.set(key, PersistentDataType.STRING, "I love Tacos!");
222+
});
223+
```

0 commit comments

Comments
 (0)