LogoyStore

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 pontos
  • double amount - Quantidade de pontos ganhos
  • EarnType earnType - Tipo de atividade que gerou os pontos

Métodos:

  • getClanTag() - Obtém a tag do clã
  • getAmount() - Obtém quantidade de pontos
  • getEarnType() - Obtém tipo de ganho
  • getHandlers() - Obtém lista de handlers do evento
  • getHandlerList() - 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 jogador
  • PLAYER_DEATH - Morte de um jogador do clã

Eventos:

  • YEVENTOS - Vencer evento no yEventos
  • YEVENTOS_LOSE - Perder evento no yEventos

Sistemas:

  • YRANKUP - Rankup no yRankup
  • YCLANS_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!");
    }
}

Nesta página