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
- Cache GeneralData localmente se acessar múltiplas vezes em rápida sucessão
- Ouça eventos relacionados a presidente para atualizações em tempo real em vez de fazer polling
- Manipule valores null com elegância caso dados do sistema não sejam carregados
- Use acesso somente leitura para plugins de terceiros (evite modificar dados diretamente)
- 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");
}
}