LogoyStore

API

Documentação completa da API do plugin yPresidente, incluindo métodos para acessar dados de sistema de presidente global.

Obtendo a Instância da API

Para acessar a API yPresidente, recupere a instância do serviço Bukkit:

import br.com.ystoreplugins.product.ypresidente.PresidentAPIHolder;
import org.bukkit.Bukkit;

PresidentAPIHolder presidentAPI = (PresidentAPIHolder) Bukkit.getServicesManager()
    .load(PresidentAPIHolder.class);

if (presidentAPI != null) {
    // API está pronta para usar
}

Alternativamente, se você estiver usando Maven e tiver o plugin como uma dependência:

import com.ystoreplugins.ypresidente.api.PresidentAPI;

PresidentAPI presidentAPI = new PresidentAPI();

Métodos Disponíveis

getGeneralData()

Recupera os dados do sistema de presidente global contendo todas as informações do sistema.

Parâmetros:

  • Nenhum

Retorna:

  • GeneralData - Objeto contendo toda a configuração e estado do sistema de presidente

Observações:

  • Retorna a instância singleton de GeneralData
  • Contém informações do presidente atual
  • Mantém todas as configurações de sistema e configurações
  • Seguro chamar várias vezes (retorna a mesma instância)
  • Use isto para acessar status do presidente, impostos, concessões e configurações globais
GeneralData data = presidentAPI.getGeneralData();
if (data != null) {
    // Acessar dados do sistema de presidente
}

Estruturas de Dados

GeneralData

Contém todos os dados de sistema do presidente. Mantém:

  • Informações do presidente atual (nome, UUID, mandato)
  • Configuração de impostos e status de coleta
  • Dados de concessão e gerenciamento
  • Saldo do tesouro do governo
  • Configurações e preferências do sistema
  • Dados históricos e estatísticas

Melhores Práticas

  1. Cache GeneralData localmente se acessar múltiplas vezes em rápida sucessão
  2. Ouça eventos relacionados a presidente para atualizações em tempo real em vez de fazer polling
  3. Manipule valores null com elegância caso dados do sistema não sejam carregados
  4. Use acesso somente leitura para plugins de terceiros (evite modificar dados diretamente)
  5. Verifique status do presidente antes de aplicar recursos específicos do presidente

Exemplos de Uso

Exemplo 1: Obtendo Dados do Sistema de Presidente

PresidentAPIHolder presidentAPI = (PresidentAPIHolder) Bukkit.getServicesManager()
    .load(PresidentAPIHolder.class);

GeneralData data = presidentAPI.getGeneralData();
if (data != null) {
    System.out.println("Dados do sistema de presidente recuperados com sucesso");
}

Exemplo 2: Exibindo Informações do Presidente Atual

PresidentAPIHolder presidentAPI = (PresidentAPIHolder) Bukkit.getServicesManager()
    .load(PresidentAPIHolder.class);

GeneralData data = presidentAPI.getGeneralData();
if (data != null) {
    System.out.println("Presidente Atual: " + data);
    // Acessar informações específicas do presidente
}

Exemplo 3: Verificando Status do Presidente

public class PresidentStatusChecker {
    
    private final PresidentAPIHolder presidentAPI;
    
    public PresidentStatusChecker(PresidentAPIHolder presidentAPI) {
        this.presidentAPI = presidentAPI;
    }
    
    public void checkPresidentStatus() {
        GeneralData data = presidentAPI.getGeneralData();
        
        if (data != null) {
            System.out.println("Sistema de presidente está ativo");
            // Acessar e processar dados de presidente
        } else {
            System.out.println("Dados do sistema de presidente não disponíveis");
        }
    }
}

Exemplo 4: Cache de Dados de Presidente

public class PresidentDataCache {
    
    private final PresidentAPIHolder presidentAPI;
    private GeneralData cachedData;
    private long lastUpdate;
    private static final long CACHE_DURATION = 5000; // 5 segundos
    
    public PresidentDataCache(PresidentAPIHolder presidentAPI) {
        this.presidentAPI = presidentAPI;
    }
    
    public GeneralData getPresidentData() {
        long now = System.currentTimeMillis();
        
        if (cachedData == null || (now - lastUpdate) > CACHE_DURATION) {
            cachedData = presidentAPI.getGeneralData();
            lastUpdate = now;
        }
        
        return cachedData;
    }
}

Exemplo 5: Dados de Presidente em Comandos

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class PresidentInfoCommand implements CommandExecutor {
    
    private final PresidentAPIHolder presidentAPI;
    
    public PresidentInfoCommand(PresidentAPIHolder presidentAPI) {
        this.presidentAPI = presidentAPI;
    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) return false;
        
        Player player = (Player) sender;
        GeneralData data = presidentAPI.getGeneralData();
        
        if (data == null) {
            player.sendMessage("§cSistema de presidente não disponível");
            return true;
        }
        
        player.sendMessage("§a§l=== Informações do Sistema de Presidente ===");
        player.sendMessage("§eSistema está ativo");
        // Exibir informações adicionais de GeneralData
        
        return true;
    }
}

Exemplo 6: Integração com Plugin de Economia

public class PresidentEconomyIntegration {
    
    private final PresidentAPIHolder presidentAPI;
    
    public PresidentEconomyIntegration(PresidentAPIHolder presidentAPI) {
        this.presidentAPI = presidentAPI;
    }
    
    public void logPresidentRevenue() {
        GeneralData data = presidentAPI.getGeneralData();
        
        if (data != null) {
            System.out.println("[PRESIDENTE] Dados de receita recuperados");
            // Processar e registrar informações de receita
        }
    }
}

Exemplo 7: Ouvinte de Status de Presidente

@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    PresidentAPIHolder presidentAPI = (PresidentAPIHolder) 
        Bukkit.getServicesManager().load(PresidentAPIHolder.class);
    
    GeneralData data = presidentAPI.getGeneralData();
    
    if (data != null) {
        event.getPlayer().sendMessage("§aBem-vindo! Um presidente lidera este servidor.");
    }
}

Exemplo 8: Verificação Periódica de Dados de Presidente

public class PresidentDataMonitor {
    
    private final JavaPlugin plugin;
    private final PresidentAPIHolder presidentAPI;
    
    public PresidentDataMonitor(JavaPlugin plugin, PresidentAPIHolder presidentAPI) {
        this.plugin = plugin;
        this.presidentAPI = presidentAPI;
    }
    
    public void startMonitoring() {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
            GeneralData data = presidentAPI.getGeneralData();
            
            if (data != null) {
                plugin.getLogger().info("[MONITOR] Sistema de presidente está saudável");
            } else {
                plugin.getLogger().warning("[MONITOR] Dados do sistema de presidente indisponíveis");
            }
        }, 0L, 20 * 60L); // Verificar a cada minuto
    }
}

Exemplo 9: Integração de Presidente Multi-Plugin

public class PresidentIntegrationManager {
    
    private final JavaPlugin plugin;
    private final PresidentAPIHolder presidentAPI;
    private GeneralData cachedPresidentData;
    
    public PresidentIntegrationManager(JavaPlugin plugin) {
        this.plugin = plugin;
        this.presidentAPI = (PresidentAPIHolder) 
            Bukkit.getServicesManager().load(PresidentAPIHolder.class);
    }
    
    public boolean isPresidentSystemActive() {
        try {
            GeneralData data = presidentAPI.getGeneralData();
            return data != null;
        } catch (Exception e) {
            plugin.getLogger().warning("Erro ao verificar sistema de presidente: " + e.getMessage());
            return false;
        }
    }
    
    public GeneralData getCachedPresidentData() {
        if (cachedPresidentData == null) {
            cachedPresidentData = presidentAPI.getGeneralData();
        }
        return cachedPresidentData;
    }
    
    public void refreshPresidentData() {
        cachedPresidentData = presidentAPI.getGeneralData();
        plugin.getLogger().info("Dados de presidente atualizados");
    }
}

Exemplo 10: Verificação de Saúde do Sistema de Presidente

public class PresidentSystemHealthCheck {
    
    private final JavaPlugin plugin;
    private final PresidentAPIHolder presidentAPI;
    
    public PresidentSystemHealthCheck(JavaPlugin plugin, PresidentAPIHolder presidentAPI) {
        this.plugin = plugin;
        this.presidentAPI = presidentAPI;
    }
    
    public void performHealthCheck() {
        try {
            GeneralData data = presidentAPI.getGeneralData();
            
            if (data == null) {
                plugin.getLogger().severe("[SAÚDE] Dados do sistema de presidente são null!");
                return;
            }
            
            plugin.getLogger().info("[SAÚDE] Sistema de presidente está operacional");
            plugin.getLogger().info("[SAÚDE] Dados gerais recuperados com sucesso");
            
            // Verificações de saúde adicionais podem ser feitas aqui
            validatePresidentData(data);
            
        } catch (Exception e) {
            plugin.getLogger().severe("[SAÚDE] Erro ao verificar sistema de presidente: " + 
                e.getMessage());
            e.printStackTrace();
        }
    }
    
    private void validatePresidentData(GeneralData data) {
        if (data == null) {
            plugin.getLogger().warning("[VALIDAR] GeneralData é null");
            return;
        }
        
        plugin.getLogger().info("[VALIDAR] Validação de GeneralData passou");
    }
}

Nesta página