API
A API fornece eventos públicos para desenvolvedores integrarem seus plugins ao sistema de ligas do yLeagues, permitindo monitorar ganho de pontos de clãs.
Obtendo acesso aos eventos
Os eventos do yLeagues são eventos padrão do Bukkit e podem ser escutados como qualquer outro evento.
Exemplo:
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
// Manipular evento de ganho de pontos
}Eventos disponíveis
ClanEarnPointsEvent
Disparado quando um clã ganha pontos em uma liga.
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double amount = event.getAmount();
EarnType type = event.getEarnType();
System.out.println("Clã " + clanTag + " ganhou " + amount +
" pontos por: " + type.name());
}Propriedades:
String clanTag- Tag do clã que ganhou pontosdouble amount- Quantidade de pontos ganhosEarnType earnType- Tipo de atividade que gerou os pontos
Métodos:
getClanTag()- Obtém a tag do clãgetAmount()- Obtém quantidade de pontosgetEarnType()- Obtém tipo de ganhogetHandlers()- Obtém lista de handlers do eventogetHandlerList()- Obtém lista estática de handlers
Observações:
- Evento não cancelável (pontos já foram adicionados)
- Disparado após pontos serem creditados ao clã
- Muito útil para logging e integração de sistemas
Enums
EarnType
Tipos de atividades que geram pontos de liga:
PvP:
PLAYER_KILL- Matar um jogadorPLAYER_DEATH- Morte de um jogador do clã
Eventos:
YEVENTOS- Vencer evento no yEventosYEVENTOS_LOSE- Perder evento no yEventos
Sistemas:
YRANKUP- Rankup no yRankupYCLANS_KICK- Expulsar membro do clãYGUERRA- Participação em guerra (yGuerra)
Produção:
YSPAWNERS- Matando de spawners (ySpawners)YSTACKBOSSES- Matando stack bosses (yStackBosses)YBOSSES- Matando bosses (yBosses)YMINAS- Minando (yMinas)YMINASPACKETS- Minando com packets (yMinasPackets)YPLANTACOES- Colhendo plantações (yPlantações)YCAMPO- Colhendo campos (yCampo)YFLORESTA- Cortando floresta (yFloresta)YPESCA- Pescando (yPesca)
Punições:
PUNISH_MUTE- Membro foi mutado (yPunish)PUNISH_BAN- Membro foi banido (yPunish)
Outros:
COMMAND- Ganho via comando
Boas práticas
- Use eventos para registrar em sistema de logs
- Monitore tipos específicos de ganho para análises
- Notifique clãs sobre ganhos significativos
- Combine com ranking para comparações
- Evite operações pesadas dentro do event handler
- Considere armazenar histórico de ganhos
Exemplos de uso
Registrar ganho de pontos
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double amount = event.getAmount();
EarnType type = event.getEarnType();
String logMessage = "Clã " + clanTag + " ganhou " + amount +
" pontos por " + type.name();
logDatabase(logMessage);
}Notificar clã sobre ganho
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double amount = event.getAmount();
EarnType type = event.getEarnType();
String message = "§6[LIGA] Seu clã ganhou §f" + amount + "§6 pontos!";
notifyClanMembers(clanTag, message);
}Filtrar por tipo de ganho
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
if (event.getEarnType() == EarnType.PLAYER_KILL) {
// Dar bônus extra por matar jogadores
double bonus = event.getAmount() * 0.5;
addClanPoints(event.getClanTag(), bonus);
}
}Sistema de bônus por atividade
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double baseAmount = event.getAmount();
EarnType type = event.getEarnType();
double multiplier = 1.0;
switch (type) {
case PLAYER_KILL:
case YGUERRA:
multiplier = 1.5; // PvP dá mais
break;
case YEVENTOS:
multiplier = 2.0; // Eventos dão muito
break;
case PUNISH_BAN:
case PUNISH_MUTE:
multiplier = 0.5; // Punições dão menos
break;
}
double finalPoints = baseAmount * multiplier;
addClanPoints(clanTag, finalPoints - baseAmount); // Adicionar diferença
}Rastrear atividades do clã
private Map<String, Map<EarnType, Double>> clanActivity = new HashMap<>();
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
EarnType type = event.getEarnType();
double amount = event.getAmount();
clanActivity.computeIfAbsent(clanTag, k -> new HashMap<>())
.put(type, clanActivity.getOrDefault(clanTag, new HashMap<>())
.getOrDefault(type, 0.0) + amount);
}
public void showClanActivityReport(String clanTag) {
Map<EarnType, Double> activity = clanActivity.getOrDefault(clanTag, new HashMap<>());
System.out.println("Atividades do clã " + clanTag + ":");
activity.forEach((type, amount) -> {
System.out.println(" " + type.name() + ": " + amount + " pontos");
});
}Enviar para Discord
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double amount = event.getAmount();
EarnType type = event.getEarnType();
String discordMessage = "**" + clanTag + "** ganhou **" + amount +
"** pontos por **" + type.name() + "**";
sendToDiscord(discordMessage);
}Dashboard de liga
public void showLeagueStatus(String clanTag) {
System.out.println("═══════════════════════════");
System.out.println("STATUS DA LIGA - " + clanTag);
System.out.println("═══════════════════════════");
double currentPoints = getClanPoints(clanTag);
int rank = getClanRank(clanTag);
String tier = getClanTier(clanTag);
System.out.println("Pontos: " + currentPoints);
System.out.println("Rank: #" + rank);
System.out.println("Tier: " + tier);
System.out.println("═══════════════════════════");
}Verificar atividade recente
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
// Marcar que o clã foi ativo recentemente
markClanActive(clanTag);
// Se clã estava inativo, enviar mensagem
if (wasInactive(clanTag)) {
notifyClanMembers(clanTag, "Seu clã voltou à ativa!");
}
}Sistema de conquistas
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
double totalPoints = getClanPoints(clanTag);
// Milestones
if (totalPoints >= 1000 && totalPoints - event.getAmount() < 1000) {
unlockAchievement(clanTag, "PRIMEIRO_MIL");
notifyClanMembers(clanTag, "Conquistou: Primeiro Mil Pontos!");
}
if (totalPoints >= 10000 && totalPoints - event.getAmount() < 10000) {
unlockAchievement(clanTag, "DEZ_MIL");
notifyClanMembers(clanTag, "Conquistou: Dez Mil Pontos!");
}
}Análise de estratégia
@EventHandler
public void onClanEarnPoints(ClanEarnPointsEvent event) {
String clanTag = event.getClanTag();
EarnType type = event.getEarnType();
// Identificar fonte principal de pontos
EarnType mainSource = getMainPointSource(clanTag);
// Se clã está muito focado em uma atividade, sugerir diversificação
if (getPercentageOfSource(clanTag, type) > 70) {
notifyClanMembers(clanTag,
"§eConselho: Diversifique suas atividades para melhor desempenho!");
}
}