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:
ArmazemHoldercontendo os dados do armazém ounullse não encontrado
Observações:
- Recupera dados em cache do sistema principal
- Retorna
nullse 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:
ArmazemHoldercontendo os dados do armazém ounullse 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
ArmazemHoldervá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 vendaArmazemHolder- Armazém sendo vendidodouble amount- Valor total da vendaHashMap<String, Double> values- Valores por item
Métodos:
getPlayer()- Obtém o jogadorgetArmazem()- Obtém o armazémgetAmount()- Obtém o valor totalgetValues()- Obtém os valores por itemsetAmount(double)- Define o valor totalsetValues(HashMap)- Define os valores por item
Boas práticas
- Sempre verifique
nullao 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
}