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:
PlayerFragmentoHoldercontendo os dados de fragmentos do jogador ounullse não encontrado
Observações:
- Recupera dados em cache do sistema principal
- Retorna
nullse 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
nullao 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("═══════════════════════════");
}