Interface ItemTagType<T,​Z>

Type Parameters:
T - the primary object type that is stored in the given tag
Z - the retrieved object type when applying this item tag type
All Known Implementing Classes:

public interface ItemTagType<T,​Z>
please use PersistentDataType as this part of the api is being replaced
This class represents an enum with a generic content type. It defines the types a custom item tag can have.

This interface can be used to create your own custom ItemTagType with different complex types. This may be useful for the likes of a UUIDItemTagType:

 public class UUIDItemTagType implements ItemTagType<byte[], UUID> {

         {@literal @Override}
         public Class<byte[]> getPrimitiveType() {
             return byte[].class;

         {@literal @Override}
         public Class<UUID> getComplexType() {
             return UUID.class;

         {@literal @Override}
         public byte[] toPrimitive(UUID complex, ItemTagAdapterContext context) {
             ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
             return bb.array();

         {@literal @Override}
         public UUID fromPrimitive(byte[] primitive, ItemTagAdapterContext context) {
             ByteBuffer bb = ByteBuffer.wrap(primitive);
             long firstLong = bb.getLong();
             long secondLong = bb.getLong();
             return new UUID(firstLong, secondLong);