API
A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de pets do yPets, permitindo consultar pets equipados, obter bônus acumulados e trabalhar com dados de pets de jogadores.
Obtendo a instância da API
A API é exposta através de um BukkitService assim como feito comumente no Vault.
Exemplo:
PetAPIHolder petAPI;
try {
RegisteredServiceProvider<PetAPIHolder> rsp = Bukkit.getServer().getServicesManager().getRegistration(PetAPIHolder.class);
return rsp == null ? null : (PetAPIHolder)rsp.getProvider();
} catch (Throwable t) {
return null;
}
Métodos disponíveis
getPlayerPet(Player player)
Obtém o pet principal do jogador.
PetHolder pet = petAPI.getPlayerPet(player);Retorno:
PetHolderounullse o jogador não possuir pet ativo.
getPlayerPets(Player player)
Retorna a lista de pets equipados pelo jogador.
List<PetHolder> pets = petAPI.getPlayerPets(player);Observações:
- Em servidores não principais, retorna apenas o último pet usado
- Em servidores principais, retorna todos os pets equipados
getTotalBonus(Player player, String bonusType)
Calcula o bônus total acumulado de todos os pets equipados do jogador para um tipo específico.
double bonus = petAPI.getTotalBonus(player, "farm");Tipos de bônus suportados:
spawnersmachinesminesstoragefarmforestsellfishalmasdiscount_spawnersdiscount_machines
O valor retornado representa porcentagem (%).
getTotalBonusMultiplier(Player player, String bonusType)
Retorna o multiplicador final baseado no bônus total.
double multiplier = petAPI.getTotalBonusMultiplier(player, "farm");Exemplo:
- Bônus total:
20 - Retorno:
1.20
Estrutura de dados
PetHolder
Representa um pet do jogador.
Principais propriedades:
- Tipo do pet
- Tier
- Nível
- Experiência
- Dono
TierHolder
Define os bônus base e bônus por nível de cada tier do pet.
Cada bônus segue a fórmula:
bonus_total = bonus_base + (bonus_por_nivel * nivel)Exemplos de uso
Aplicando bônus em uma venda
double multiplier = petAPI.getTotalBonusMultiplier(player, "sell");
double finalValue = baseValue * multiplier;Verificando se o jogador possui pets ativos
if (!petAPI.getPlayerPets(player).isEmpty()) {
// jogador possui pets
}