LogoyStore

API

Documentação completa da API do plugin yPescaSimples, incluindo manipulação de eventos para mecânicas de pesca simples.

Obtendo Listeners de Eventos

Para ouvir eventos do yPescaSimples, registre uma classe Listener no seu plugin:

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import br.com.ystoreplugins.product.ypescasimples.event.SimplePescaFishEvent;

public class MyPlugin extends JavaPlugin {
    
    @Override
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(new FishingListener(), this);
    }
}

Eventos

SimplePescaFishEvent

Disparado quando um jogador captura com sucesso um peixe no modo de pesca simples. Este evento é cancelável.

Métodos Disponíveis:

  • getPlayer() - Retorna a instância do Player que capturou o peixe
  • isCancelled() - Verifica se o evento está cancelado
  • setCancelled(boolean) - Cancela a captura de peixe

Observações:

  • Dispara quando um jogador captura com sucesso um peixe usando mecânicas de pesca simples
  • Esta é uma versão simplificada do sistema completo de pesca sem tipos de peixe complexos ou raridade
  • Cancelar previne que a captura de peixe seja processada
  • Nenhum dado de peixe ou peso disponível neste evento simplificado
  • Útil para rastreamento básico de eventos de pesca e integração

Exemplo:

@EventHandler
public void onSimplePescaFish(SimplePescaFishEvent event) {
    if (event.isCancelled()) return;
    
    Player player = event.getPlayer();
    System.out.println(player.getName() + " capturou um peixe!");
}

Boas Práticas

  1. Verifique isCancelled() antes de aplicar lógica para evitar processamento duplicado
  2. Cancele responsavelmente para evitar quebrar o sistema de pesca
  3. Use para integrações simples quando dados complexos de peixe não forem necessários
  4. Manipule eventos assincronamente se realizar operações custosas
  5. Registre capturas para fins de estatísticas ou anti-cheat

Exemplos de Uso

Exemplo 1: Rastreamento Básico de Capturas

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import br.com.ystoreplugins.product.ypescasimples.event.SimplePescaFishEvent;

public class SimpleFishingListener implements Listener {
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        Player player = event.getPlayer();
        System.out.println("[PESCA] " + player.getName() + " capturou um peixe");
    }
}

Exemplo 2: Notificação Simples de Captura

@EventHandler
public void onSimplePescaFish(SimplePescaFishEvent event) {
    if (event.isCancelled()) return;
    
    Player player = event.getPlayer();
    player.sendMessage("§aVocê capturou um peixe!");
}

Exemplo 3: Prevenção de Capturas em Mundos Específicos

@EventHandler
public void onSimplePescaFish(SimplePescaFishEvent event) {
    Player player = event.getPlayer();
    
    // Previne pesca no mundo de spawn
    if (player.getWorld().getName().equals("world_spawn")) {
        event.setCancelled(true);
        player.sendMessage("§cPesca não é permitida aqui!");
    }
}

Exemplo 4: Contador de Capturas

public class CatchCounter implements Listener {
    
    private final Map<Player, Integer> catches = new HashMap<>();
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        if (event.isCancelled()) return;
        
        Player player = event.getPlayer();
        int count = catches.getOrDefault(player, 0) + 1;
        catches.put(player, count);
        
        if (count % 10 == 0) {
            player.sendMessage("§eVocê capturou " + count + " peixes!");
        }
    }
}

Exemplo 5: Transmissão de Capturas Raras

public class RareCatchBroadcaster implements Listener {
    
    private final Random random = new Random();
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        if (event.isCancelled()) return;
        
        Player player = event.getPlayer();
        
        // 5% de chance de transmitir captura
        if (random.nextDouble() < 0.05) {
            org.bukkit.Bukkit.broadcastMessage("§6" + player.getName() + 
                " capturou um peixe lendário!");
        }
    }
}

Exemplo 6: Recompensas Baseadas em Localização

@EventHandler
public void onSimplePescaFish(SimplePescaFishEvent event) {
    if (event.isCancelled()) return;
    
    Player player = event.getPlayer();
    org.bukkit.Location location = player.getLocation();
    
    // Bônus por pescar em regiões específicas
    if (location.getY() < 50) {
        player.sendMessage("§aBônus de água profunda!");
        // Aplicar lógica de bônus
    }
}

Exemplo 7: Sistema de Cooldown

public class FishingCooldown implements Listener {
    
    private final Map<Player, Long> cooldowns = new HashMap<>();
    private static final long COOLDOWN_MS = 2000; // 2 segundos
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        Player player = event.getPlayer();
        long now = System.currentTimeMillis();
        
        if (cooldowns.containsKey(player)) {
            long lastCatch = cooldowns.get(player);
            if (now - lastCatch < COOLDOWN_MS) {
                event.setCancelled(true);
                player.sendMessage("§cEspere antes de capturar outro peixe!");
                return;
            }
        }
        
        cooldowns.put(player, now);
    }
}

Exemplo 8: Logger de Estatísticas de Pesca

public class FishingStatsLogger implements Listener {
    
    private final JavaPlugin plugin;
    private final Map<String, Integer> stats = new HashMap<>();
    
    public FishingStatsLogger(JavaPlugin plugin) {
        this.plugin = plugin;
    }
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        if (event.isCancelled()) return;
        
        Player player = event.getPlayer();
        String playerName = player.getName();
        
        int catches = stats.getOrDefault(playerName, 0) + 1;
        stats.put(playerName, catches);
        
        plugin.getLogger().info("[ESTATÍSTICAS] " + playerName + 
            " - Total de capturas: " + catches);
    }
}

Exemplo 9: Bônus Baseados em Permissão

@EventHandler
public void onSimplePescaFish(SimplePescaFishEvent event) {
    if (event.isCancelled()) return;
    
    Player player = event.getPlayer();
    
    if (player.hasPermission("myplugin.fishing.premium")) {
        player.sendMessage("§6Bônus de captura premium aplicado!");
        // Aplicar lógica de bônus premium
    }
    
    if (player.hasPermission("myplugin.fishing.vip")) {
        player.sendMessage("§5Bônus de captura VIP aplicado!");
        // Aplicar lógica de bônus VIP
    }
}

Exemplo 10: Detecção Anti-Spam de Pesca

public class FishingAntiSpam implements Listener {
    
    private final Map<Player, List<Long>> catchTimes = new HashMap<>();
    private static final int MAX_CATCHES_PER_SECOND = 5;
    
    @EventHandler
    public void onSimplePescaFish(SimplePescaFishEvent event) {
        Player player = event.getPlayer();
        long now = System.currentTimeMillis();
        
        List<Long> times = catchTimes.computeIfAbsent(player, k -> new ArrayList<>());
        
        // Remove capturas mais antigas que 1 segundo
        times.removeIf(time -> now - time > 1000);
        
        if (times.size() >= MAX_CATCHES_PER_SECOND) {
            event.setCancelled(true);
            player.sendMessage("§cPescando muito rápido! Desacelere.");
            return;
        }
        
        times.add(now);
    }
}

Nesta página