LogoyStore

API

A API fornece uma interface pública para desenvolvedores integrarem seus plugins ao sistema de fragmentos virtuais do yFragmentosVirtuais, permitindo consultar dados de fragmentos dos jogadores.

Obtendo a instância da API

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

Exemplo:

FragmentosVirtuaisAPIHolder fragmentosAPI;

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

Métodos disponíveis

getPlayer(String playerName)

Recupera os dados de fragmentos de um jogador.

PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer("Steve");

Parâmetros:

  • playerName - Nome do jogador

Retorno:

  • PlayerFragmentoHolder contendo os dados de fragmentos do jogador ou null se não encontrado

Observações:

  • Recupera dados em cache do sistema principal
  • Retorna null se o jogador não possuir dados de fragmentos registrados
  • O resultado é recuperado diretamente do cache, não do banco de dados

Estrutura de dados

PlayerFragmentoHolder

Representa os dados de fragmentos virtuais de um jogador.

Propriedades principais:

  • Quantidade total de fragmentos
  • Fragmentos por tipo/raridade
  • Histórico de coletas
  • Dados de conversão
  • Dados de armazenamento

Boas práticas

  • Sempre verifique null ao recuperar dados de um jogador
  • Use o nome exato do jogador para melhor compatibilidade
  • Evite chamadas excessivas em eventos de alta frequência
  • Os dados retornados são do cache, não são em tempo real com o banco de dados
  • Armazene valores consultados quando possível

Exemplos de uso

Verificar fragmentos do jogador

PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer("Steve");
if (playerFragmentos != null) {
    // Dados de fragmentos do jogador encontrados
    // Processe as informações necessárias
}

Integrando com sistemas de recompensas

PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer(player.getName());
if (playerFragmentos != null) {
    // Verificar se jogador tem fragmentos
    // Aplicar bônus ou recompensas baseado na quantidade
}

Verificar quantidade de fragmentos

PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer("Steve");
if (playerFragmentos != null) {
    long totalFragmentos = playerFragmentos.getFragmentos();
    // Usar quantidade em cálculos
}

Eventos baseados em fragmentos

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
    Player player = event.getPlayer();
    PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer(player.getName());
    
    if (playerFragmentos != null) {
        // Aplicar lógicas especiais baseado em fragmentos
        applyFragmentBonus(player, playerFragmentos);
    }
}

Dashboard de fragmentos

public void showFragmentDashboard(Player player) {
    PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer(player.getName());
    if (playerFragmentos != null) {
        player.sendMessage("═══════════════════════════");
        player.sendMessage("DADOS DE FRAGMENTOS");
        player.sendMessage("═══════════════════════════");
        // Exibir informações de fragmentos
        player.sendMessage("═══════════════════════════");
    }
}

Verificar progresso de coleta

@EventHandler
public void onPlayerEarn(PlayerEarnFragmentsEvent event) {
    Player player = event.getPlayer();
    PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer(player.getName());
    
    if (playerFragmentos != null) {
        long total = playerFragmentos.getFragmentos();
        long milestone = 1000;
        
        if (total >= milestone) {
            player.sendMessage("Você atingiu " + milestone + " fragmentos!");
        }
    }
}

Integração com loja virtual

public boolean canBuyItem(String playerName, long fragmentCost) {
    PlayerFragmentoHolder playerFragmentos = fragmentosAPI.getPlayer(playerName);
    if (playerFragmentos == null) return false;
    
    return playerFragmentos.getFragmentos() >= fragmentCost;
}

Sistema de leaderboard de fragmentos

public void displayFragmentLeaderboard(CommandSender sender) {
    sender.sendMessage("═══════════════════════════");
    sender.sendMessage("TOP COLETORES DE FRAGMENTOS");
    sender.sendMessage("═══════════════════════════");
    
    // Aqui você precisaria coletar dados de todos os jogadores
    // e ordená-los por quantidade de fragmentos
    
    sender.sendMessage("═══════════════════════════");
}

Nesta página