LogoyStore

API

A API fornece eventos públicos para desenvolvedores integrarem seus plugins ao sistema de prisão do yJail, permitindo monitorar prisões de jogadores.

Obtendo acesso aos eventos

Os eventos do yJail são eventos padrão do Bukkit e podem ser escutados como qualquer outro evento.

Exemplo:

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    // Manipular evento de prisão
}

Eventos disponíveis

PlayerJailEvent

Disparado quando um jogador é preso na prisão.

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    JailHolder jail = event.getJail();
    
    System.out.println(player.getName() + " foi preso em: " + jail.getName());
}

Propriedades:

  • Player player - Jogador que foi preso
  • JailHolder jail - Prisão onde o jogador foi colocado

Métodos:

  • getPlayer() - Obtém o jogador preso
  • getJail() - Obtém a prisão
  • getHandlers() - Obtém lista de handlers do evento
  • getHandlerList() - Obtém lista estática de handlers

Observações:

  • Evento não cancelável (prisão já foi executada)
  • Disparado após o jogador ser movido para a prisão
  • Útil para registrar e notificar sobre prisões

Estrutura de dados

JailHolder

Representa uma prisão (jail) no servidor.

Propriedades principais:

  • Nome da prisão
  • Localização de spawn
  • Limites/limites da área
  • Configurações específicas
  • Nível de segurança

Boas práticas

  • Use eventos para registrar prisões em sistema de logs
  • Notifique staff sobre prisões importantes
  • Evite operações pesadas dentro do event handler
  • Use dados do evento para análise e estatísticas
  • Combine com outros sistemas para gerenciamento de prisões

Exemplos de uso

Registrar prisão em log

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    JailHolder jail = event.getJail();
    
    String logMessage = player.getName() + " foi preso em " + 
                       jail.getName() + " às " + 
                       new SimpleDateFormat("HH:mm:ss").format(new Date());
    
    logDatabase(logMessage);
    Bukkit.getLogger().info(logMessage);
}

Notificar staff sobre prisão

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    JailHolder jail = event.getJail();
    
    for (Player staff : Bukkit.getOnlinePlayers()) {
        if (staff.hasPermission("jail.staff")) {
            staff.sendMessage("§c[PRISÃO] " + player.getName() + 
                            " foi enviado para: " + jail.getName());
        }
    }
}

Aplicar efeitos visuais

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    
    // Cegar o jogador por um tempo
    player.addPotionEffect(new PotionEffect(
        PotionEffectType.BLINDNESS,
        100,
        0,
        false,
        false
    ));
    
    player.sendMessage("§c§lVocê foi preso!");
}

Sistema de multas automáticas

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    
    // Cobrar multa ao ser preso
    double fine = 1000;
    if (removeBalance(player.getName(), fine)) {
        player.sendMessage("§cMulta de " + fine + " moedas aplicada!");
    }
}

Enviar mensagem ao Discord

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    JailHolder jail = event.getJail();
    
    String discordMessage = player.getName() + " foi preso em " + 
                           jail.getName();
    
    sendToDiscord(discordMessage);
}

Rastrear tempo de prisão

private Map<String, Long> jailTime = new HashMap<>();

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    
    // Registrar quando foi preso
    jailTime.put(player.getName(), System.currentTimeMillis());
    
    // Salvar em banco de dados
    saveJailRecord(player.getName(), event.getJail().getName());
}

@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
    jailTime.remove(event.getPlayer().getName());
}

Estatísticas de prisões

private Map<String, Integer> jailCount = new HashMap<>();

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    String key = player.getName();
    
    jailCount.put(key, jailCount.getOrDefault(key, 0) + 1);
    
    int count = jailCount.get(key);
    if (count >= 5) {
        player.sendMessage("§c⚠ Aviso: Você foi preso " + count + " vezes!");
    }
}

Sistema de reabilitação

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    
    // Oferecer opção de reabilitação
    player.sendMessage("§6Você pode fazer:");
    player.sendMessage("§6/reabilitar - Participar de programa de reabilitação");
    
    // Dar tarefa de reabilitação
    assignRehabTask(player);
}

Dashboard de prisão

public void showJailStatus(Player player) {
    player.sendMessage("═══════════════════════════");
    player.sendMessage("STATUS DE PRISÃO");
    player.sendMessage("═══════════════════════════");
    
    if (isPlayerJailed(player)) {
        JailHolder jail = getPlayerJail(player);
        long timeRemaining = getJailTimeRemaining(player);
        
        player.sendMessage("Status: ✓ PRESO");
        player.sendMessage("Prisão: " + jail.getName());
        player.sendMessage("Tempo restante: " + formatTime(timeRemaining));
    } else {
        player.sendMessage("Status: ✗ LIVRE");
        player.sendMessage("Você não está preso");
    }
    
    player.sendMessage("═══════════════════════════");
}

Integração com sistema de punições

@EventHandler
public void onPlayerJail(PlayerJailEvent event) {
    Player player = event.getPlayer();
    JailHolder jail = event.getJail();
    
    // Registrar como punição no sistema
    PunishmentRecord record = new PunishmentRecord(
        player.getName(),
        PunishmentType.JAIL,
        "Prisão em " + jail.getName(),
        System.currentTimeMillis()
    );
    
    savePunishment(record);
}

Nesta página