Ir para conteúdo

[Bukkit Coding] Como registrar todas as suas classes Listener de uma só vez


KickPost

Posts Recomendados

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();
     }
   }
}
Editado por KickPost
Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...