Sol Reklam

Rehber Spigot|Bukkit Eklenti Kodlama Rehberi #4 (Komut Oluşturma)

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 4)


Önceki rehber ItemStack ifadesini öğrenmiştik. Ve bir event ile kullanıp, kömür kırınca kömür kırma olayını iptal edip 2 kömürü oyuncu envanterine eklemesine sağlamıştık.
Bu derste eklentilerin %90'ında kullanılan, oyuncu ile sunucunun etkileşime geçmesini sağlayan komutların nasıl oluşturulduğunu öğreneceğiz.



Komutlar Nedir, Ne İşe Yarar?
Komutun dilimizdeki kullanımıyla yazacağımız eklentilerdeki kullanımı aynıdır.
Nasıl ki dilimizde komut vermek , "herhangi bir davranış için buyrukta bulunmak" anlamına geliyorsa; eklentilerde de aynı anlama gelir. Komut ile oyuncu, herhangi bir olayı aktifleştirebilir veya denetleyebilir veya durdurabilir, bunlar yazılan eklentiyle çoğaltılabilir.




Komut Nasıl Oluşturulur?
Komut oluşturmak için öncelikle komutumuzun metodunun bulunacağı sınıfı ana sınıfımızda belirtmemiz gerekir.
Peki nasıl ana sınıfta bunu belirtiriz ?


Kod:
    public void onEnable() {
      
        getCommand("Komut İsmi").setExecutor(new commandChanger());
      
        //  getCommand ile komutumuz neyse onu belirttik.
        //  daha sonra belirttiğimiz bu komutun hangi sınıfta bulunduğunu belirttik.
        //  eğer ki komutunuz ana sınıfınızda bulunuyorsa setExecutor(this) şeklinde yazmanız yeterlidir.
        //  this yazıldığında bulunduğu sınıfı işaret eder.(Temel Java bilgisidir ama yine de vereyim :)
      
      
      
        }

Ekran Alıntısı.PNG






Evet artık komutumuzu ve nerede olduğunu belirttiğimize göre komutumuzun metodunun nasıl olması gerektiğini ve neyin nasıl çalıştığını inceleyebiliriz.

Java:
    @Override
    public boolean onCommand(CommandSender gönderen, Command komut, String etiket, String[] argümanlar) {
      
        //"CommandSender gönderen" ifadesi ile komutu gönderenin kim olduğunu gönderen değişkenine atadık.
        //"Command komut" ifadesi ile komutumuzu komut isimli değişkene atadık.
        //"String etiket" ifadesi ile normalde /komut şeklinde olan komutumuzun '/' işareti olmadan yani yalnızca etiket olarak aldığı değeri etiket isimli değişkenimize atadık.
        //"String[] argümanlar" ifadesi ile komutumuzdan sonra gelebilecek olan ifadeleri argümanlar değişkenine atadık.
        //Örneğin: /sandık aç
        // yukardaki aç ifadesi esas komutumuzdan sonra gelen bir argümandır.Ve bunu bir diziye atadık.
      
        Player o = (Player ) gönderen;
        // Yukardaki satırda komutu gönderen kişiyi oyuncu olarak belirledik.
        if(komut.getName().equalsIgnoreCase("komut")){
        //Komutumuz eğer ki "komut" ise alttaki ifadeleri çalıştır.
            o.sendMessage(ChatColor.DARK_GREEN + "Tebrikler Komutunuz Başarıyla Çalıştı!");
            // Oyuncuya mesaj yolladık
        }
      
        return false;
        // Bu ifade temel Java bilgisidir fakat yine de açıklayayım:
        // metotlarda değer döndürme işlemi return ile sağlanır.
        // dikkat ederseniz komut metodumuzda değer olarak boolean döndürmesi belirtilmiş.
        // bu da plugin.yml de yazacağımız komutların hangisi için değer döndüreceğini belirtir.
        // false olursa komutu belirtmeniz gerekir
        // fakat true olursa plugin.ymlde belirttiğiniz tüm komutlar için geçerli olur.
      
    }

Ekran Alıntısı.PNG





Şimdi ise en önemli kısım olan, plugin.yml dosyasında komutumuzu belirtmemiz gerekir.
Burayı yapmazsanız komut çalışmaz!


Kod:
name:
author:
main:
version:
commands:
  komut:
    description: Bilgi kısmı
    usage: /komut


İlk derslerde plugin.yml nasıl oluşturulur öğrenmiştik.
Şimdi ise komutumuzu nasıl plugin.yml dosyasına işleriz onu öğrenelim:


Yukarıdaki kod bölümünde yazdığım şekliyle

commands: altına yazılan kelime sizi komutunuzun ismi olmalı.

daha sonra komutunuzun isminin altına yazdığınız şeyler ise yani " description: ve usage: ",

description: Komutun bilgi metnini buraya yazabilirsiniz. Kısaca /help yazınca çıkan metin.
usage: Eğer ki komut yanlış yazılmışsa , komutun nasıl kullanacağını gösterir.



ders4.PNG





Oyun İçi Görüntü

2018-12-07_15.30.59.png






Konuyu beğendiyseniz lütfen elmas vermeyi unutmayın.
Öneri ve fikirlerinizi yorumlarda belirtebilirsiniz.
Eklenti yazmak adına tüm sorularınızı ve sorunlarınızı yorumlarda belirtebilirsiniz.






İyi Forumlar..
 

Ekler

  • Ekran Alıntısı.PNG
    Ekran Alıntısı.PNG
    78,7 KB · Görünt.: 318
  • ders4.PNG
    ders4.PNG
    8,7 KB · Görünt.: 156
Son düzenleme:
S

Silinen üye 79251

Ziyaretçi

Kodlama öğrenmek istiyenler için güzel rehber. Devamı kesinlikle gelmeli!​
 

BlondeCowQQ

Koydum Çalışma Masasını

Discord:

BlondeCow#5145

Katılım
2 Ağustos 2018
Mesajlar
57
Elmaslar
34
Puanlar
2.060
Minecraft
BlondeCow

Geyik

Geik
Onaylı Satıcı

Discord:

Geik#1139

Katılım
30 Ağustos 2018
Mesajlar
363
Elmaslar
283
Puanlar
9.885
Minecraft
Geyik
Eklenti yazmaya başlayanlar için güzel rehberler hazırlıyorsun. Detaylandırıyorsun ellerine sağlık. Ama türkçe karakteri ham kodlarda kullanmanı göstermek için dahi olsa kullanmaman gerektiğini düşünüyorum. ASCII desteği olmayan sunucularda hata verebilir. Nede olsa bu konudan yararlanacak kişilerin temeli yeni atılıyor ve ilerde hatalar alabilir. "gönderen" yerine "gonderen" yazman sanırım bence daha mantıklı olurdu. Ama sana kalmış tabiki.

Ellerine sağlık!
 

SYN_T3SL4

If you can't handle it you will win nothing !

Discord:

Halil#4439

Katılım
11 Mart 2016
Mesajlar
991
Elmaslar
911
Puanlar
19.300
Yaş
22
Yer
Aydın / Kuşadası
Minecraft
SYN_T3SL4
Eklenti yazmaya başlayanlar için güzel rehberler hazırlıyorsun. Detaylandırıyorsun ellerine sağlık. Ama türkçe karakteri ham kodlarda kullanmanı göstermek için dahi olsa kullanmaman gerektiğini düşünüyorum. ASCII desteği olmayan sunucularda hata verebilir. Nede olsa bu konudan yararlanacak kişilerin temeli yeni atılıyor ve ilerde hatalar alabilir. "gönderen" yerine "gonderen" yazman sanırım bence daha mantıklı olurdu. Ama sana kalmış tabiki.

Ellerine sağlık!
Alakasız bir mantık. Kullanan eninde sonunda kendine göre değiştirmeyi öğrenebilir ayrıca bizde ki kodlama rehberleri genel de komutlardan öteye gidemiyor ve yüzeysel kalıyor. Yüzeysel bir rehber için de fazlasını beklememek gerek.
 

Geyik

Geik
Onaylı Satıcı

Discord:

Geik#1139

Katılım
30 Ağustos 2018
Mesajlar
363
Elmaslar
283
Puanlar
9.885
Minecraft
Geyik
Alakasız bir mantık. Kullanan eninde sonunda kendine göre değiştirmeyi öğrenebilir ayrıca bizde ki kodlama rehberleri genel de komutlardan öteye gidemiyor ve yüzeysel kalıyor. Yüzeysel bir rehber için de fazlasını beklememek gerek.
Yüzeysel olduğunu ve başlangıç için olduğunu farkındayım =) Fakat bu konudan öğrenen birisi alışkanlıklarını türkçe harfleri kullanarak devam edecektir. Global bir eklenti yazarken alışkanlıklarından dolayı hata yaptığı zaman hatayı bulana kadar saatlerini sarf edecek. Ve dediğim sadece bir öneri.
 

Kalerda

Vatan Sevdalısı
Katılım
13 Ağustos 2015
Mesajlar
641
Elmaslar
589
Puanlar
15.030
Yer
Türkiye
Alakasız bir mantık. Kullanan eninde sonunda kendine göre değiştirmeyi öğrenebilir ayrıca bizde ki kodlama rehberleri genel de komutlardan öteye gidemiyor ve yüzeysel kalıyor. Yüzeysel bir rehber için de fazlasını beklememek gerek.

Yüzeysel olduğunu ve başlangıç için olduğunu farkındayım =) Fakat bu konudan öğrenen birisi alışkanlıklarını türkçe harfleri kullanarak devam edecektir. Global bir eklenti yazarken alışkanlıklarından dolayı hata yaptığı zaman hatayı bulana kadar saatlerini sarf edecek. Ve dediğim sadece bir öneri.

Aslında dikkat ederseniz ben javayı öğretmiyorum. Javanın temelini yani JavaSE'ı bilen birisi zaten Türkçe karakter kullanmamaya çalışır. Ben rehberlerimde spigot kütüphanesini anlatmaya çalışıyorum .
 
Son düzenleme:
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı