Annotation Interface GeyserCoreProvided


@Target(TYPE) @Retention(RUNTIME) public @interface GeyserCoreProvided
A marker annotation to make sure implementations of GeyserProvided are actually our implementations. Implement as follows:
     
     @GeyserProvided
     public interface MyGeyserApi {}
     @GeyserCoreProvided
     public class MyGeyserApiImpl implements MyGeyserApi {}
     
 

Then, verify an implementation of MyGeyserApi is our implementation:

     
       boolean isApiProvided = AnnotationUtils.hasAnnotationRecursive(clazz, GeyserProvided.class);
       boolean isCoreImpl = AnnotationUtils.hasAnnotationRecursive(clazz, GeyserCoreProvided.class);
       if (isApiProvided && !isCoreImpl) {
          throw new IllegalArgumentException("some message");
       }
     
 

The error message given should contain clear details on what the developer should be doing instead.