Menü
💬 Forum 📦 Kaynaklar 🛒 Mağaza ⛏️ Sunucular ⚔️ Klanlar 📰 Blog 🏆 Liderlik 👥 Üyeler 🎖️ Rütbeler
0 üye online 👥 15 toplam üye 📝 Bugün 0 konu 💬 Bugün 0 mesaj

📖 Rehber Paper API ile Event Sistemi: Listener Yazma Rehberi

orginscorel · 29 gün önce · 1 gönderi · 9 görüntülenme
#1

Paper API Event Sistemi: Listener Yazma Rehberi



Minecraft plugin geliştirmede event sistemi en temel yapı taşlarından biridir. Oyunculara mesaj göndermek, moblar öldürüldüğünde XP vermek veya blok kırıldığında özel efekt yaratmak — hepsi event listener ile yapılır.

Event Listener Nedir?



Event listener, Minecraft sunucusunda belirli bir olay gerçekleştiğinde çalışan kod parçasıdır. Oyuncu giriş yaptığında, blok kırıldığında, mob öldürüldüğünde — bunların hepsi birer event'tir.

Temel Listener Örneği




package com.benimpaket.listeners;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import net.kyori.adventure.text.Component;

public class OyuncuListener implements Listener {

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        event.joinMessage(Component.text("§a+ " + event.getPlayer().getName() + " sunucuya katıldı"));
        event.getPlayer().sendMessage(Component.text("§6Hoş geldiniz! Sunucumuza katıldığınız için teşekkürler."));
    }

    @EventHandler
    public void onQuit(PlayerQuitEvent event) {
        event.quitMessage(Component.text("§c- " + event.getPlayer().getName() + " ayrıldı"));
    }
}


Listener'ı Kaydetme




// onEnable() içinde
getServer().getPluginManager().registerEvents(new OyuncuListener(), this);


Blok Kırma Event'i




@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    Player player = event.getPlayer();
    Block block = event.getBlock();

    if (block.getType() == Material.DIAMOND_ORE) {
        player.sendMessage("§b⬦ Elmas buldun! Tebrikler!");
        player.getWorld().playSound(player.getLocation(),
            Sound.UI_TOAST_CHALLENGE_COMPLETE, 1f, 1f);
    }
}


Event Priority




@EventHandler(priority = EventPriority.HIGH)
// LOWEST → LOW → NORMAL → HIGH → HIGHEST → MONITOR
// MONITOR: sadece dinle, event'i değiştirme


Event İptal Etme




@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
    if (event.getPlayer().getGameMode() == GameMode.ADVENTURE) {
        event.setCancelled(true); // Adventure modda blok kırma engellendi
    }
}

Cevap yazabilmek için giriş yap.