Sol Reklam
Sağ Reklam

Rehber Spigot|Bukkit Eklenti Kodlama Rehberi #3 (ItemStack ve Eventlerle İlgili Küçük Bir Eklenti)

Durum
Mesaj gönderimine kapalı.

Kalerda

Vatan Sevdalısı
Katılım
13 Ağustos 2015
Mesajlar
641
Elmaslar
589
Puanlar
15.030
Yer
Türkiye
Spigot|Bukkit Eklenti Kodlama Rehberi(bölüm 3)

Önceki bölümlerden 1. bölümde eklenti kodlamak için gerekli ortamın hazırlanması ve ilk eklentinin çalıştırılmasını göstermiştim. 2. bölümde ise eventler ne işe yarar, kütüphane nedir gibi kavramlar üzerinde durduk.Bu bölümde ise eventleri kullanarak ,yeni bir bilgi olan ItemStack değerini kullanarak ve oyuncudan veri alarak bir eklenti yazacağız.Derslerde bu şekilde pratik üzerinden gitmeyi daha doğru buluyorum.


Bu Rehberde Kullanılacak Event Tipi Ve Ne İşe Yaradığı:
BlockBreakEvent - - -> Oyuncunun tüm blok kırma olaylarını dinler.

ItemStack nedir, nasıl kullanılır?
ItemStack ,minecraftta bulunan bir objenin, kaç tane olduğu ve hangi çeşitte olduğu gibi verilerle birlikte kullanılabilmesine imkan tanıyan bir ifadedir. Hangi çeşitten kastım şudur ki; misal glass_pane isimli obje kullanılırken direk glass_pane şeklinde tanımlanır. Fakat oyunun bize sağladığı renk özelliklerini bu şekilde veremeyiz. İşte bu noktada (byte) veri tipi işimize yarıyor.Peki bu (byte) veri tipini nasıl kullanırız? Cevabı aslında çok basit, minecraft eşya kodlarında örneğin; 355:5 gibi iki noktadan sonraki ifade varsa bu ifade o eşyanın (byte) değeridir.


Şimdi kodlar üzerinden ItemStack ifadesinin kullanımını göstereyim:
Java:
    ItemStack eşyaismi = new ItemStack(Material.IRON_ORE);
    //Burada yalnızca eşyamızın türünü belirttik.Bu kullanımda otomatik olarak eşya sayısı 1'e eşitlenir.
 
    ItemStack eşyaismi = new ItemStack(Material.IRON_ORE,26);
    //Bu kullanımda ise eşyamızın türünü belirttiği gibi ek olarak sayısını da belirtir.
 
    ItemStack eşyaismi = new ItemStack(Material.WOOL, 26, (byte) 6);
    //Bu kullanımda da eşyamızın türü ve sayısı belirtildi fakat bu sefer byte değerimiz var.
    //Eşyamıza dikkat edecek olursak, eşyamız yündür ve pembe renkli yündür.
    //İşte byte veri tipi bu tür renk gibi eşya ayrımlarında kullanılıyor.


Eklentimizin nasıl kodlandığını ve ne anlama geldiğini açıklayacak olursam, eklentimiz ilk önce oyuncunun blok kırma verilerini tek tek dinleyecek.Daha sonra eğer ki kömür madenine rastlarsa oyuncuya "Kömür madenini kırdınız!" mesajını yollayacak. Daha sonra oyuncunun blok kırma olayını iptal edecek. Daha sonra ise ItemStack ile tanımladığımız eşyayı oyuncunun envanterine ekleyecek.

Java:
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
         
    }
 
 
    @EventHandler
    public void onBlockBreak(BlockBreakEvent e) {
        Player oyuncu = e.getPlayer();
     
        Block kırılanblok = e.getBlock();
     
        if(kırılanblok.getType().equals(Material.COAL_ORE)) {
            oyuncu.sendMessage(ChatColor.RED + "Kömür madeni kırdınız!");
            e.setCancelled(true);
            ItemStack kömür = new ItemStack(Material.COAL_ORE, 2);
            oyuncu.getInventory().addItem(kömür);
        }
     
     
    }




Yazdığımız Kodların Resim Üzerinden Anlatımı:


Ders 3.png




Minecraft Eşya Listesi





Derslerimiz artık bundan sonra pratik üzerine devam edecektir.
Lütfen rehber serimi beğendiyseniz elmas vermeyi unutmayın.
Yorumlarda eklenmesini istediğiniz veya yapamadığınız kısımları sorabilirsiniz, tüm forum üyeleri olarak yardımcı oluruz.



İyi Forumlar Dilerim...
 
Son düzenleme:

kingOf0

"~SimitSu"

Discord:

kingOf0!#4055

Katılım
14 Haziran 2016
Mesajlar
998
Elmaslar
746
Puanlar
15.070
Yer
getPlayer("SimitSu").getLocation()
Minecraft
SimitSu
Spigot|Bukkit Eklenti Kodlama Rehberi(bölüm 3)

Önceki bölümlerden 1. bölümde eklenti kodlamak için gerekli ortamın hazırlanması ve ilk eklentinin çalıştırılmasını göstermiştim. 2. bölümde ise eventler ne işe yarar, kütüphane nedir gibi kavramlar üzerinde durduk.Bu bölümde ise eventleri kullanarak ,yeni bir bilgi olan ItemStack değerini kullanarak ve oyuncudan veri alarak bir eklenti yazacağız.Derslerde bu şekilde pratik üzerinden gitmeyi daha doğru buluyorum.


Bu Rehberde Kullanılacak Event Tipi Ve Ne İşe Yaradığı:
BlockBreakEvent - - -> Oyuncunun tüm blok kırma olaylarını dinler.

ItemStack nedir, nasıl kullanılır?
ItemStack ,minecraftta bulunan bir objenin, kaç tane olduğu ve hangi çeşitte olduğu gibi verilerle birlikte kullanılabilmesine imkan tanıyan bir ifadedir. Hangi çeşitten kastım şudur ki; misal glass_pane isimli obje kullanılırken direk glass_pane şeklinde tanımlanır. Fakat oyunun bize sağladığı renk özelliklerini bu şekilde veremeyiz. İşte bu noktada (byte) veri tipi işimize yarıyor.Peki bu (byte) veri tipini nasıl kullanırız? Cevabı aslında çok basit, minecraft eşya kodlarında örneğin; 355:5 gibi iki noktadan sonraki ifade varsa bu ifade o eşyanın (byte) değeridir.


Şimdi kodlar üzerinden ItemStack ifadesinin kullanımını göstereyim:
Java:
    ItemStack eşyaismi = new ItemStack(Material.IRON_ORE);
    //Burada yalnızca eşyamızın türünü belirttik.Bu kullanımda otomatik olarak eşya sayısı 1'e eşitlenir.
 
    ItemStack eşyaismi = new ItemStack(Material.IRON_ORE,26);
    //Bu kullanımda ise eşyamızın türünü belirttiği gibi ek olarak sayısını da belirtir.
 
    ItemStack eşyaismi = new ItemStack(Material.WOOL, 26, (byte) 6);
    //Bu kullanımda da eşyamızın türü ve sayısı belirtildi fakat bu sefer byte değerimiz var.
    //Eşyamıza dikkat edecek olursak, eşyamız yündür ve pembe renkli yündür.
    //İşte byte veri tipi bu tür renk gibi eşya ayrımlarında kullanılıyor.


Eklentimizin nasıl kodlandığını ve ne anlama geldiğini açıklayacak olursam, eklentimiz ilk önce oyuncunun blok kırma verilerini tek tek dinleyecek.Daha sonra eğer ki kömür madenine rastlarsa oyuncuya "Kömür madenini kırdınız!" mesajını yollayacak. Daha sonra oyuncunun blok kırma olayını iptal edecek. Daha sonra ise ItemStack ile tanımladığımız eşyayı oyuncunun envanterine ekleyecek.

Java:
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
         
    }
 
 
    @EventHandler
    public void onBlockBreak(BlockBreakEvent e) {
        Player oyuncu = e.getPlayer();
     
        Block kırılanblok = e.getBlock();
     
        if(kırılanblok.getType().equals(Material.COAL_ORE)) {
            oyuncu.sendMessage(ChatColor.RED + "Kömür madeni kırdınız!");
            e.setCancelled(true);
            ItemStack kömür = new ItemStack(Material.COAL_ORE, 2);
            oyuncu.getInventory().addItem(kömür);
        }
     
     
    }




Yazdığımız Kodların Resim Üzerinden Anlatımı:


Eki Görüntüle 51171



Minecraft Eşya Listesi





Derslerimiz artık bundan sonra pratik üzerine devam edecektir.
Lütfen rehber serimi beğendiyseniz elmas vermeyi unutmayın.
Yorumlarda eklenmesini istediğiniz veya yapamadığınız kısımları sorabilirsiniz, tüm forum üyeleri olarak yardımcı oluruz.



İyi Forumlar Dilerim...
Çok iyi java bilen birisi değilim ama bildiğim kadarıyla ufak bir yanlışın var.

"BlockBreakEvent" herhangi bir eventi dinlemez.

Kod:
... void LEl(BlockBreakEvent e)
... void dahaSonraÇağırmakİçinKullanabileceğimizİsim(değişkentürü değişkenadı)

Bu void'de BlockBreakEvent'in içindekileri kullanacağınızı belirtmek için değişkentürüne BlockBreakEvent yazdın. ve bu kodda bu eventten bahsederken "e" kullanacağın için onu e değişkeni olarak tanımladın.

eventi dinleyen şey @EventHandler ve implements Listener dır.

Eski rehberlerini okumadım ama, yukarıdaki kod'da implements listener'dan bahsetmemişsin. Bir eventin çalışmasının nasıl olacağını anlatmadan önce bunu anlatmalısın.
 

Kalerda

Vatan Sevdalısı
Katılım
13 Ağustos 2015
Mesajlar
641
Elmaslar
589
Puanlar
15.030
Yer
Türkiye
Çok iyi java bilen birisi değilim ama bildiğim kadarıyla ufak bir yanlışın var.

"BlockBreakEvent" herhangi bir eventi dinlemez.

Kod:
... void LEl(BlockBreakEvent e)
... void dahaSonraÇağırmakİçinKullanabileceğimizİsim(değişkentürü değişkenadı)

Bu void'de BlockBreakEvent'in içindekileri kullanacağınızı belirtmek için değişkentürüne BlockBreakEvent yazdın. ve bu kodda bu eventten bahsederken "e" kullanacağın için onu e değişkeni olarak tanımladın.

eventi dinleyen şey @EventHandler ve implements Listener dır.

Eski rehberlerini okumadım ama, yukarıdaki kod'da implements listener'dan bahsetmemişsin. Bir eventin çalışmasının nasıl olacağını anlatmadan önce bunu anlatmalısın.


KingOf daha önceki derslerime bakmadan yorum yapıyorsun buradaki amacın ne bilmiyorum fakat dediğin konuya gelecek olursak PlayerBreakEvent event sınıfındaki bir parçadır yani tüm eventlerin içinden yalnızca blok kırma eventini alıyoruz.Bu yüzden dinliyor demenin bir sakıncası olduğunu düşünmüyorum.

Ben java rehberi yapmıyorum , eklenti rehberi yapıyorum.Ve java hakkında temel bilgisi olan bir birey yazdığımız fonksiyonların vs. hangi sınıftan çekildiğini çok basit bir şekilde import ederek görebilir.Bu yüzden implements Listener konusuna girmedim.

Eventi dinleyen şey implement Listener değildir , direk Listener sınıfıdır ve üstte belirttiğim sebepten ötürü anlatma gereği duymadım.
Ayrıca eventi dinleyen şey Listener sınıfıdır demek de doğru değil onEnable() metodunda tanımladığımız
getServer().getPluginManager().registerEvents(this, this); fonksiyonudur.



@EventHandlerı ve eventlerin nasıl çalıştığını bir önceki rehberimde aşırı detaylı bir şekilde anlattım ama senin önceki rehberlere bakmadan gelip böyle bir yorum yapman bana çok farklı şeyleri işaret ediyor.
Şiddetle uyarıyor ve tavsiye ediyorum lütfen önceki rehberlere bakıp eleştirini 3-4 kez düşün öyle yap.Eleştirmek için eleştirme.
 

Geyik

Geik
Onaylı Satıcı

Discord:

Geik#1139

Katılım
30 Ağustos 2018
Mesajlar
365
Elmaslar
283
Puanlar
9.885
Minecraft
Geyik
Ellerine sağlık. Gayet başarılı bir seri. Ayrıca @kingOf0 Kalerda Eski konularında listenerdan bahsetmiş ve EventHandlerdan da bahsetmiş. Onun dışında BlockBreakEvent kendi başına bir eventtir. Aşağıda verceğim linkte Shift+F yapıp org.bukkit.event yazarsan bütün eventleri görebilirsin ve onların subTitle larına erişebilirsin. Sadece BlockBreakEvent ile metin taşı yazılabiliyor :)

İyi konuydu! Okurken heyecanlandım :))))

Bukkit 1.8-R0.1-SNAPSHOT API
 

Kalerda

Vatan Sevdalısı
Katılım
13 Ağustos 2015
Mesajlar
641
Elmaslar
589
Puanlar
15.030
Yer
Türkiye
Ellerine sağlık. Gayet başarılı bir seri. Ayrıca @kingOf0 Kalerda Eski konularında listenerdan bahsetmiş ve EventHandlerdan da bahsetmiş. Onun dışında BlockBreakEvent kendi başına bir eventtir. Aşağıda verceğim linkte Shift+F yapıp org.bukkit.event yazarsan bütün eventleri görebilirsin ve onların subTitle larına erişebilirsin. Sadece BlockBreakEvent ile metin taşı yazılabiliyor :)

İyi konuydu! Okurken heyecanlandım :))))

Bukkit 1.8-R0.1-SNAPSHOT API

Değerli yorumun için teşekkür ederim.
İşinize yarar bir konuysa ne mutlu bana.
İyi Forumlar...
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı