API
A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de bônus de armaduras do yArmorsBonus, permitindo consultar bônus, descontos e efeitos de poção.
Obtendo a instância da API
A API é exposta através de um BukkitService assim como feito comumente no Vault.
Exemplo:
ArmorAPIHolder armorAPI;
try {
RegisteredServiceProvider<ArmorAPIHolder> rsp = Bukkit.getServer().getServicesManager().getRegistration(ArmorAPIHolder.class);
return rsp == null ? null : (ArmorAPIHolder)rsp.getProvider();
} catch (Throwable t) {
return null;
}
Métodos disponíveis
Bônus de Produção
getBonusSpawners(Player player)
Obtém o bônus de spawners do jogador.
double bonus = armorAPI.getBonusSpawners(player);Retorno: Bônus em porcentagem (%)
getBonusMachines(Player player)
Obtém o bônus de máquinas do jogador.
double bonus = armorAPI.getBonusMachines(player);Retorno: Bônus em porcentagem (%)
getBonusMines(Player player)
Obtém o bônus de minas do jogador.
double bonus = armorAPI.getBonusMines(player);Retorno: Bônus em porcentagem (%)
getBonusFarm(Player player)
Obtém o bônus de fazenda do jogador.
double bonus = armorAPI.getBonusFarm(player);Retorno: Bônus em porcentagem (%)
getBonusForest(Player player)
Obtém o bônus de floresta do jogador.
double bonus = armorAPI.getBonusForest(player);Retorno: Bônus em porcentagem (%)
getBonusFish(Player player)
Obtém o bônus de pesca do jogador.
double bonus = armorAPI.getBonusFish(player);Retorno: Bônus em porcentagem (%)
Bônus de Armazenamento e Venda
getBonusStorage(Player player)
Obtém o bônus de armazenamento do jogador.
double bonus = armorAPI.getBonusStorage(player);Retorno: Bônus em porcentagem (%)
getBonusSell(Player player)
Obtém o bônus de venda do jogador.
double bonus = armorAPI.getBonusSell(player);Retorno: Bônus em porcentagem (%)
getBonusAlmas(Player player)
Obtém o bônus de almas do jogador.
double bonus = armorAPI.getBonusAlmas(player);Retorno: Bônus em porcentagem (%)
Descontos
getDiscountSpawners(Player player)
Obtém o desconto em spawners do jogador.
double discount = armorAPI.getDiscountSpawners(player);Retorno: Desconto em porcentagem (%)
getDiscountMachines(Player player)
Obtém o desconto em máquinas do jogador.
double discount = armorAPI.getDiscountMachines(player);Retorno: Desconto em porcentagem (%)
Habilidades Especiais
canFly(Player player)
Verifica se o jogador pode voar com sua armadura.
boolean canFly = armorAPI.canFly(player);Retorno: true se o jogador pode voar, false caso contrário
Efeitos de Poção
getEffectList(Player player)
Obtém a lista de efeitos de poção concedidos pela armadura.
HashMap<PotionEffectType, Integer> effects = armorAPI.getEffectList(player);Retorno: HashMap contendo tipo de efeito como chave e nível como valor
Exemplo:
HashMap<PotionEffectType, Integer> effects = armorAPI.getEffectList(player);
for (Map.Entry<PotionEffectType, Integer> entry : effects.entrySet()) {
PotionEffectType type = entry.getKey();
int level = entry.getValue();
System.out.println(type.getName() + ": " + level);
}Boas práticas
- Sempre verifique se os valores retornados são maiores que 0
- Use bônus e descontos para calcular valores finais
- Evite chamadas excessivas em eventos de alta frequência
- Armazene valores calculados quando possível
- Verificar se
canFly()é true antes de permitir voo
Exemplos de uso
Aplicando bônus em colheita
double bonus = armorAPI.getBonusFarm(player);
double finalAmount = baseAmount * (1 + (bonus / 100));Aplicando desconto em compra
double discount = armorAPI.getDiscountSpawners(player);
double finalPrice = basePrice * (1 - (discount / 100));Verificando habilidades especiais
if (armorAPI.canFly(player)) {
player.setAllowFlight(true);
}Aplicando efeitos de poção
HashMap<PotionEffectType, Integer> effects = armorAPI.getEffectList(player);
for (Map.Entry<PotionEffectType, Integer> entry : effects.entrySet()) {
PotionEffectType type = entry.getKey();
int level = entry.getValue();
player.addPotionEffect(new PotionEffect(type, Integer.MAX_VALUE, level - 1, false, false));
}Sistema de venda com múltiplos bônus
double baseSellValue = 1000;
double sellBonus = armorAPI.getBonusSell(player);
double almasBonus = armorAPI.getBonusAlmas(player);
double finalValue = baseSellValue * (1 + (sellBonus / 100));
double almasValue = baseSellValue * (1 + (almasBonus / 100));