LogoyStore

API

A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de armazenamento do yArmazem, permitindo recuperar dados de armazéns por ID ou localização.

Obtendo a instância da API

A API é exposta através de um BukkitService assim como feito comumente no Vault.

Exemplo:

ArmazemAPIHolder armazemAPI;

try {
  RegisteredServiceProvider<ArmazemAPIHolder> rsp = Bukkit.getServer().getServicesManager().getRegistration(ArmazemAPIHolder.class);
  return rsp == null ? null : (ArmazemAPIHolder)rsp.getProvider();
} catch (Throwable t) {
  return null;
}

Métodos disponíveis

retrieveArmazem(String plotId)

Recupera um armazém específico pelo seu ID de plot.

ArmazemHolder armazem = armazemAPI.retrieveArmazem("plot_123");

Parâmetros:

  • plotId - ID único do plot/armazém

Retorno:

  • ArmazemHolder contendo os dados do armazém ou null se não encontrado

Observações:

  • Recupera dados em cache do sistema principal
  • Retorna null se o armazém não estiver em cache
  • Para garantir que dados existam, use o método com Location

retrieveArmazem(Location location)

Recupera um armazém baseado na localização dentro do mundo.

ArmazemHolder armazem = armazemAPI.retrieveArmazem(player.getLocation());

Parâmetros:

  • location - Localização (X, Y, Z) do bloco

Retorno:

  • ArmazemHolder contendo os dados do armazém ou null se nenhum plot existir nessa localização

Observações:

  • Determina automaticamente o ID do plot baseado na localização
  • Carrega dados do banco de dados se não estiverem em cache
  • Cria um novo armazém com limites padrão se não existir na localização
  • Sempre retorna um ArmazemHolder válido se a localização for válida

Estrutura de dados

ArmazemHolder

Representa um armazém de um plot.

Propriedades principais:

  • ID do plot
  • Itens armazenados
  • Limite de armazenamento
  • Dados de transações
  • Histórico de atividades

ArmazemSellEvent

Evento disparado quando um armazém é vendido.

Propriedades:

  • Player - Jogador que realizou a venda
  • ArmazemHolder - Armazém sendo vendido
  • double amount - Valor total da venda
  • HashMap<String, Double> values - Valores por item

Métodos:

  • getPlayer() - Obtém o jogador
  • getArmazem() - Obtém o armazém
  • getAmount() - Obtém o valor total
  • getValues() - Obtém os valores por item
  • setAmount(double) - Define o valor total
  • setValues(HashMap) - Define os valores por item

Boas práticas

  • Sempre verifique null ao recuperar um armazém por ID
  • Use retrieveArmazem(Location) para garantir que dados existam
  • Evite chamadas excessivas em eventos de alta frequência
  • Listener de eventos pode ser usado para monitorar vendas de armazéns

Exemplos de uso

Recuperando armazém do jogador

Block block = player.getTargetBlock(null, 100);
ArmazemHolder armazem = armazemAPI.retrieveArmazem(block.getLocation());
if (armazem != null) {
    // Armazém encontrado
    // Processe as informações
}

Verificando limite de armazenamento

ArmazemHolder armazem = armazemAPI.retrieveArmazem("plot_123");
if (armazem != null) {
    double limite = armazem.getLimit();
    // Usar limite em cálculos
}

Monitorando vendas de armazéns

@EventHandler
public void onArmazemSell(ArmazemSellEvent event) {
    Player player = event.getPlayer();
    double totalValue = event.getAmount();
    
    // Aplicar lógica de recompensa extra, log, etc.
    player.sendMessage("Armazém vendido por: " + totalValue);
}

Obtendo itens armazenados

ArmazemHolder armazem = armazemAPI.retrieveArmazem(location);
if (armazem != null) {
    HashMap<String, Double> items = armazem.getItems();
    // Iterar sobre itens armazenados
}

Eventos

ArmazemSellEvent

Disparado quando um armazém é vendido.

@EventHandler
public void onSell(ArmazemSellEvent event) {
    // Manipular evento de venda
    event.setAmount(event.getAmount() * 1.5); // Aumentar valor
}

Nesta página