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 presoJailHolder jail- Prisão onde o jogador foi colocado
Métodos:
getPlayer()- Obtém o jogador presogetJail()- Obtém a prisãogetHandlers()- Obtém lista de handlers do eventogetHandlerList()- 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);
}