API
A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de AFK do yAFK, permitindo consultar dados de jogadores AFK e suas informações associadas.
Obtendo a instância da API
A API é exposta através de um BukkitService assim como feito comumente no Vault.
Exemplo:
AfkAPIHolder afkAPI;
try {
RegisteredServiceProvider<AfkAPIHolder> rsp = Bukkit.getServer().getServicesManager().getRegistration(AfkAPIHolder.class);
return rsp == null ? null : (AfkAPIHolder)rsp.getProvider();
} catch (Throwable t) {
return null;
}
Métodos disponíveis
retrievePlayer(String player)
Recupera os dados de AFK de um jogador específico.
PlayerAFKHolder playerAFK = afkAPI.retrievePlayer("Steve");Parâmetros:
player- Nome do jogador
Retorno:
PlayerAFKHoldercontendo os dados de AFK do jogador ounullse não encontrado
Observações:
- Recupera dados em cache do sistema principal
- Retorna
nullse o jogador não possuir dados de AFK registrados - O resultado é recuperado diretamente do cache, não do banco de dados
Estrutura de dados
PlayerAFKHolder
Representa os dados de AFK de um jogador.
Propriedades principais:
- Status de AFK (ativo/inativo)
- Tempo de AFK
- Informações do jogador associadas
- Dados de rastreamento de inatividade
Boas práticas
- Sempre verifique
nullao recuperar dados de um jogador - Use o nome exato do jogador para melhor compatibilidade
- Evite chamadas excessivas em eventos de alta frequência
- Os dados retornados são do cache, não são em tempo real com o banco de dados
Exemplos de uso
Verificando status AFK de um jogador
PlayerAFKHolder playerAFK = afkAPI.retrievePlayer("Steve");
if (playerAFK != null) {
// Dados de AFK do jogador encontrados
// Processe as informações necessárias
}Integrando com sistemas de recompensas
PlayerAFKHolder playerAFK = afkAPI.retrievePlayer(player.getName());
if (playerAFK != null && playerAFK.isAFK()) {
// Aplicar lógica para jogadores em AFK
}Obtendo informações de tempo AFK
PlayerAFKHolder playerData = afkAPI.retrievePlayer("Steve");
if (playerData != null) {
long afkTime = playerData.getAFKTime();
// Usar tempo de AFK em cálculos
}