Interface PersistentDataContainer
-
Method Summary
Modifier and TypeMethodDescription<T,
Z> Z get
(@NotNull NamespacedKey key, @NotNull PersistentDataType<T, Z> type) Returns the metadata value that is stored on thePersistentDataHolder
instance.Returns the adapter context this tag container uses.getKeys()
Get a set of keys present on thisPersistentDataContainer
instance.<T,
Z> Z getOrDefault
(@NotNull NamespacedKey key, @NotNull PersistentDataType<T, Z> type, Z defaultValue) Returns the metadata value that is stored on thePersistentDataHolder
instance.boolean
has
(@NotNull NamespacedKey key) Returns if the persistent metadata provider has metadata registered matching the provided key.<T,
Z> boolean has
(@NotNull NamespacedKey key, @NotNull PersistentDataType<T, Z> type) Returns if the persistent metadata provider has metadata registered matching the provided parameters.boolean
isEmpty()
Returns if the container instance is empty, therefore has no entries inside it.default void
readFromBytes
(byte @NotNull [] bytes) Read values from a serialised byte array into thisPersistentDataContainer
instance.void
readFromBytes
(byte @NotNull [] bytes, boolean clear) Read values from a serialised byte array into thisPersistentDataContainer
instance.void
remove
(@NotNull NamespacedKey key) Removes a custom key from thePersistentDataHolder
instance.byte @NotNull []
Serialize thisPersistentDataContainer
instance to a byte array.<T,
Z> void set
(@NotNull NamespacedKey key, @NotNull PersistentDataType<T, Z> type, Z value) Stores a metadata value on thePersistentDataHolder
instance.
-
Method Details
-
set
<T,Z> void set(@NotNull @NotNull NamespacedKey key, @NotNull @NotNull PersistentDataType<T, Z> type, @NotNull Z value) Stores a metadata value on thePersistentDataHolder
instance.This API cannot be used to manipulate minecraft data, as the values will be stored using your namespace. This method will override any existing value the
PersistentDataHolder
may have stored under the provided key.- Type Parameters:
T
- the generic java type of the tag valueZ
- the generic type of the object to store- Parameters:
key
- the key this value will be stored undertype
- the type this tag usesvalue
- the value stored in the tag- Throws:
NullPointerException
- if the key is nullNullPointerException
- if the type is nullNullPointerException
- if the value is null. Removing a tag should be done usingremove(NamespacedKey)
IllegalArgumentException
- if no suitable adapter will be found for thePersistentDataType.getPrimitiveType()
-
has
<T,Z> boolean has(@NotNull @NotNull NamespacedKey key, @NotNull @NotNull PersistentDataType<T, Z> type) Returns if the persistent metadata provider has metadata registered matching the provided parameters.This method will only return if the found value has the same primitive data type as the provided key.
Storing a value using a custom
PersistentDataType
implementation will not store the complex data type. Therefore storing a UUID (by storing a byte[]) will match has("key" ,PersistentDataType.BYTE_ARRAY
). Likewise a stored byte[] will always match your UUIDPersistentDataType
even if it is not 16 bytes long.This method is only usable for custom object keys. Overwriting existing tags, like the the display name, will not work as the values are stored using your namespace.
- Type Parameters:
T
- the generic type of the stored primitiveZ
- the generic type of the eventually created complex object- Parameters:
key
- the key the value is stored undertype
- the type which primitive storage type has to match the value- Returns:
- if a value
- Throws:
NullPointerException
- if the key to look up is nullNullPointerException
- if the type to cast the found object to is null
-
get
@Nullable <T,Z> Z get(@NotNull @NotNull NamespacedKey key, @NotNull @NotNull PersistentDataType<T, Z> type) Returns the metadata value that is stored on thePersistentDataHolder
instance.- Type Parameters:
T
- the generic type of the stored primitiveZ
- the generic type of the eventually created complex object- Parameters:
key
- the key to look up in the custom tag maptype
- the type the value must have and will be casted to- Returns:
- the value or
null
if no value was mapped under the given value - Throws:
NullPointerException
- if the key to look up is nullNullPointerException
- if the type to cast the found object to is nullIllegalArgumentException
- if the value exists under the given key, but cannot be access using the given typeIllegalArgumentException
- if no suitable adapter will be found for thePersistentDataType.getPrimitiveType()
-
getOrDefault
@NotNull <T,Z> Z getOrDefault(@NotNull @NotNull NamespacedKey key, @NotNull @NotNull PersistentDataType<T, Z> type, @NotNull Z defaultValue) Returns the metadata value that is stored on thePersistentDataHolder
instance. If the value does not exist in the container, the default value provided is returned.- Type Parameters:
T
- the generic type of the stored primitiveZ
- the generic type of the eventually created complex object- Parameters:
key
- the key to look up in the custom tag maptype
- the type the value must have and will be casted todefaultValue
- the default value to return if no value was found for the provided key- Returns:
- the value or the default value if no value was mapped under the given value
- Throws:
NullPointerException
- if the key to look up is nullNullPointerException
- if the type to cast the found object to is nullIllegalArgumentException
- if the value exists under the given key, but cannot be access using the given typeIllegalArgumentException
- if no suitable adapter will be found for thePersistentDataType.getPrimitiveType()
-
getKeys
Get a set of keys present on thisPersistentDataContainer
instance. Any changes made to the returned set will not be reflected on the instance.- Returns:
- the key set
-
remove
Removes a custom key from thePersistentDataHolder
instance.- Parameters:
key
- the key- Throws:
NullPointerException
- if the provided key is null
-
isEmpty
boolean isEmpty()Returns if the container instance is empty, therefore has no entries inside it.- Returns:
- the boolean
-
getAdapterContext
Returns the adapter context this tag container uses.- Returns:
- the tag context
-
has
Returns if the persistent metadata provider has metadata registered matching the provided key.- Parameters:
key
- the key for which existence should be checked.- Returns:
- whether the key exists
- Throws:
NullPointerException
- if the key to look up is null
-
serializeToBytes
Serialize thisPersistentDataContainer
instance to a byte array.- Returns:
- a binary representation of this container
- Throws:
IOException
- if we fail to write this container to a byte array
-
readFromBytes
Read values from a serialised byte array into thisPersistentDataContainer
instance.- Parameters:
bytes
- the byte array to read fromclear
- if true, thisPersistentDataContainer
instance will be cleared before reading- Throws:
IOException
- if the byte array has an invalid format
-
readFromBytes
Read values from a serialised byte array into thisPersistentDataContainer
instance. This method has the same effect asPersistentDataContainer#readFromBytes(bytes, true)
- Parameters:
bytes
- the byte array to read from- Throws:
IOException
- if the byte array has an invalid format
-