Annotation Interface CatalogedBy


@NonNull @Target(TYPE) @Inherited @Documented @Retention(RUNTIME) public @interface CatalogedBy
Annotates a class to specify a set of special catalog classes which act as the catalog for the annotated type. The specified catalog classes should be queryable or otherwise serve constant instances of the cataloged type.

All Classes mentioned in the CatalogedBy annotation must meet the following requirements:

  • The values served by catalog classes must remain the same and valid at all times.
  • The variables in catalog classes may link to null if the given value is no longer valid and no appropriate alternative can be found. If no alternative could be found and if there probably won't be a new one in the future then the field should be marked as deprecated and should be removed after a grace period or with the next big release of minecraft, SpongeAPI or the containing artifact.
  • It is possible for two or more different variables to link to the same value. This includes both simple "well known" aliases and features that been merged together or that were originally very similar and one has been removed.
  • It is also possible that one or more values are not listed in the catalog classes (Especially plugin or mod provided ones).
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<?>[]
    Gets the class that is the catalog for this CatalogedBy type.
  • Element Details

    • value

      Class<?>[] value
      Gets the class that is the catalog for this CatalogedBy type. Since the type class annotated with CatalogedBy knows what the catalog class is, we can safely rely on the value to get all known instances of the CatalogedBy.

      This is similar to knowing at runtime that all available "EntityType"(s) are cataloged in the "EntityTypes" class.

      Returns:
      The registrar class of the catalog