API
A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de boosters do yBoosters, permitindo consultar dados de boosters de jogadores e verificar o status de habilidades globais.
Obtendo a instância da API
A API é exposta através de um BukkitService assim como feito comumente no Vault.
Exemplo:
BoosterAPIHolder boosterAPI;
try {
RegisteredServiceProvider<BoosterAPIHolder> rsp = Bukkit.getServer().getServicesManager().getRegistration(BoosterAPIHolder.class);
return rsp == null ? null : (BoosterAPIHolder)rsp.getProvider();
} catch (Throwable t) {
return null;
}
Métodos disponíveis
getPlayer(String playerName)
Recupera os dados de booster de um jogador específico.
PlayerBoosterHolder playerBooster = boosterAPI.getPlayer("Steve");Parâmetros:
playerName- Nome do jogador
Retorno:
PlayerBoosterHoldercontendo os dados de booster do jogador ounullse não encontrado
Observações:
- Recupera dados em cache do sistema principal
- Retorna
nullse o jogador não possuir dados de booster registrados - O resultado é recuperado diretamente do cache, não do banco de dados
isUsingBooster(PlayerBooster player)
Verifica se um jogador está utilizando algum booster ativo.
boolean hasBooster = BoosterAPI.isUsingBooster(playerBoosterData);Parâmetros:
player- Objeto PlayerBooster do jogador
Retorno:
truese o jogador possui booster ativo,falsecaso contrário
Observações:
- Verifica se o campo
habilidadenão está vazio - Método estático da classe BoosterAPI
- Útil para determinar se um jogador tem benefícios de booster aplicados
isGlobalActived(HabilidadeGlobal global)
Verifica se uma habilidade global está ativa.
boolean isActive = BoosterAPI.isGlobalActived(globalAbility);Parâmetros:
global- Objeto HabilidadeGlobal a verificar
Retorno:
truese a habilidade global está ativa,falsecaso contrário
Observações:
- Verifica se o objeto não é
nulle se a habilidade está preenchida - Método estático da classe BoosterAPI
- Útil para identificar efeitos globais ativos no servidor
Estrutura de dados
PlayerBoosterHolder
Representa os dados de booster de um jogador.
Propriedades principais:
- Habilidades ativas
- Duração dos boosters
- Histórico de boosters utilizados
- Multiplicadores ativos
PlayerBooster
Modelo interno de dados de booster do jogador.
Propriedades principais:
habilidade- Campo contendo a habilidade ativa (vazio se nenhuma)- Dados de duração e efeitos
HabilidadeGlobal
Representa uma habilidade global do servidor.
Propriedades principais:
habilidade- Campo contendo a habilidade global- Status de ativação
- Aplicabilidade geral do servidor
Boas práticas
- Sempre verifique
nullao recuperar dados de um jogador - Use
isUsingBooster()antes de aplicar efeitos de booster - Verifique
isGlobalActived()para efeitos que afetam todo o servidor - Evite chamadas excessivas em eventos de alta frequência
- Armazene valores consultados quando possível
Exemplos de uso
Verificando booster ativo de um jogador
PlayerBoosterHolder playerBooster = boosterAPI.getPlayer("Steve");
if (playerBooster != null && BoosterAPI.isUsingBooster(playerBooster)) {
// Jogador possui booster ativo
// Aplicar multiplicadores ou efeitos especiais
}Integrando bônus de booster em economia
PlayerBoosterHolder playerBooster = boosterAPI.getPlayer(player.getName());
double baseReward = 100;
double finalReward = baseReward;
if (playerBooster != null && BoosterAPI.isUsingBooster(playerBooster)) {
finalReward = baseReward * 1.5; // Aplicar multiplicador de booster
}
player.sendMessage("Recompensa: " + finalReward);Verificando habilidades globais ativas
HabilidadeGlobal doubleDropGlobal = getGlobalAbility("double_drop");
if (BoosterAPI.isGlobalActived(doubleDropGlobal)) {
// Drop duplo está ativo no servidor todo
itemDropAmount *= 2;
}Sistema de notificação de booster
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
PlayerBoosterHolder booster = boosterAPI.getPlayer(player.getName());
if (booster != null && BoosterAPI.isUsingBooster(booster)) {
player.sendMessage("Bem-vindo! Você possui um booster ativo!");
}
}Aplicar efeitos diferentes baseado em booster
PlayerBoosterHolder playerBooster = boosterAPI.getPlayer(player.getName());
if (playerBooster != null) {
if (BoosterAPI.isUsingBooster(playerBooster)) {
// Booster pessoal ativo
applyPersonalBoosterEffects(player);
}
}
HabilidadeGlobal serverBooster = getServerGlobalBooster();
if (BoosterAPI.isGlobalActived(serverBooster)) {
// Booster global ativo
applyGlobalBoosterEffects(player);
}