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 peixeisCancelled()- Verifica se o evento está canceladosetCancelled(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
- Verifique isCancelled() antes de aplicar lógica para evitar processamento duplicado
- Cancele responsavelmente para evitar quebrar o sistema de pesca
- Use para integrações simples quando dados complexos de peixe não forem necessários
- Manipule eventos assincronamente se realizar operações custosas
- 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);
}
}