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:
    ItemTagType.PrimitiveTagType

    @Deprecated
    public interface ItemTagType<T,​Z>
    Deprecated.
    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]);
                 bb.putLong(complex.getMostSignificantBits());
                 bb.putLong(complex.getLeastSignificantBits());
                 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);
             }
         }