O código para você dar get na lista de classes com Listener registrado é esse:
Dependência do pacote: com.google.common.reflect.ClassPath(encontrado na maioria das APIs de desenvolvimento para Minecraft PC)
public static List<Class<?>> getListenersClasses(String starterPackage) {
List<Class<?>> getClasses = new LinkedList<>();
final ClassLoader loader = MAINCLASS.getClassLoader();
try {
for (final ClassPath.ClassInfo info : ClassPath.from(loader).getTopLevelClasses()) {
if (!info.getName().toLowerCase().startsWith(starterPackage.toLowerCase()))
continue;
final Class<?> clazz = info.load();
if (Listener.class.isAssignableFrom(clazz))
getClasses.add(clazz);
}
} catch (IOException e) {
e.printStackTrace();
}
return getClasses;
}
Para usar o código, é bem simples:
public void onEnable(){
for(Class<?> classe : getListenersClasses("PACOTE PRINCIPAL")){
Listener getLis;
try {
getLis = (Listener)classe.newInstance();
Bukkit.getPluginManager().registerEvents(getLis, this);
} catch (InstantiationException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}