LogoyStore

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:

  • PlayerBoosterHolder contendo os dados de booster do jogador ou null se não encontrado

Observações:

  • Recupera dados em cache do sistema principal
  • Retorna null se 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:

  • true se o jogador possui booster ativo, false caso contrário

Observações:

  • Verifica se o campo habilidade nã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:

  • true se a habilidade global está ativa, false caso contrário

Observações:

  • Verifica se o objeto não é null e 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 null ao 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);
}

Nesta página