Annotation Type 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<?>[] value
      Gets the class that is the catalog for this CatalogedBy type.
    • Element Detail

      • 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