LogoyStore

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));

Nesta página