Selamlar dostlarım.Forumda çok az bulunan bir eğitim serisine başlamayı hedefliyorum.Serimizin ilk bölümüne geliştirme ortamımızın kurulumuyla başlayacaktım fakat forumda böyle bir konu bulunduğunu fark ettim.Bu yüzden direkt olarak eklenti geliştirmeyi sizlere anlatmakla başlıyorum.
Eklenti hazırlamak için ön hazırlıklar: Rehber - Java Yazmak İçin Kurulum [Resimli]
Not: Seri içerisinde Java ile ilgili kapsamlı bilgiler verilmeyecektir.Yalnızca Bukkit (Spigot veya BungeeCord) için eklenti geliştirmeyi öğretmek amaçlı hazırlanmıştır.
1. İlk Eklentimiz
1.1. Proje Oluşturma
İlk olarak kurmuş olduğumuz eclipse programını açarak işe başlayalım.Başlangıçta size bir dizi kişiselleştirme ayarı yaptıracaktır.Bu ayarları isteğinize göre seçebilirsiniz. Ardından karşınıza bu şekilde bir pencere açılacaktır.
Not: Eclipse ilk açıldığında ekranın alt bölümünde çeşitli pencereler açıyor bu pencereler başlangıç için işimize yaramayacaktır.Bu yüzden kapatabilirsiniz. (Console vs.)
Daha sonra ilk eklenti projemizi oluşturalım.Bunu yapmak için ekranın sol tarafında bulunan Package Explorer'a, ekranın sol üstünde bulunan File butonuna veya ALT+SHIFT+N tuş kombinasyonuna basarak istediğimiz menüye erişiyoruz.Bizim şimdilik ilgileneceğimiz kısım Java Project seçeneği.Bu yüzden bu seçeneğe tıklıyoruz.
Java Project seçeneğine tıkladıktan sonra karşımıza aşağıdaki gibi bir arayüz çıkıyor.Buradan yapmamız gerekenler:
- Bir proje adı belirlemek.
- Çalışacağımız sürümü belirlemek. (İlk defa Java ile uğraşıyorsanız değiştirmenize gerek yok.)
- Tüm ayarları yaptıktan sonra Next > butonuna tıklıyoruz ve karşımıza yeni bir sekme açılıyor.
- Üst menüden Libraries sekmesine geliyoruz ve Add External JARs seçeneğine tıklıyoruz.
- Eklemek istediğiniz Spigot.jar veya Bukkit.jar dosyasını seçiyoruz.
- Başlangıç için yalnızca Spigot veya Bukkit'i projemize dahil ediyoruz ve Finish butonuna basıyoruz. (Sunucuyu açmak için kullandığınız Bukkit ya da Spigot dosyasını projenize dahil edebilirsiniz.)
İlk projemizi oluşturduk ve karşımıza bu şekilde bir ekran çıktı.Projeme tıklayarak altındaki dosyaları inceliyorum.Bizim bu seride ilgileneceğimiz bölüm src bölümüdür.Eklentilerin dosyaları bu bölüm altına oluşturulacaktır.Hazırsanız ilk eklentiyi oluşturalım.
1.2. Paket Oluşturma
Java'daki paketleri bilgisayarınızdaki klasörler gibi düşünebilirsiniz.Bizim de bir klasöre ihtiyacımız var bu yüzden bir paket oluşturuyoruz.src'ye sağ tıklıyoruz ve çıkan seçeneklerden Package'yi seçiyoruz.Karşımıza isim yazma ekranı çıkıyor.Bu isim verme tamamen sizin ruh halinize bağlı olarak değişebilir.Aşağıya birkaç örnek paket ismi bırakıyorum ki geleneklerden uzaklaşmayalım.
- me.won5.mctrders
- tr.won5.ders
- com.won5.ders
- com.won5.game.ders
- <ek>.<mahlas>.<eklenti_adı>
Not: Paket isimleri genelde küçük harflerle yazılır.
Ve daha niceleri.Geleneklerden bahsetmişken gelin biraz paketler üzerine konuşalım.Paket isimlerindeki noktalar dikkatinizi çekmiştir değil mi? Bu noktalar sayesinde klasörleri bir alt dizine taşıyabiliyoruz.Hemen bir örnekle açıklayalım.Aşağıdaki paket ismi:
ni.w5.ders
Aşağıdaki klasör yapısına benzer.
Kod:
+ ni
+---- w5
+----+---- ders
1.3. İlk Sınıf
Kendimize uygun bir paket ismi seçtiğimizi varsayarak devam ediyoruz.Şimdi eklentinin çalıştırılması için bir ana sınıfa ihtiyacımız var."Paketlerin bile bir geleneği var ise sınıfların hele ki ana sınıfın bile ne gelenekleri vardır." dediğinizi duyar gibiyim.Evet sınıflara da isim verirken birkaç geleneği görmezden gelemeyiz.Bunlar:
- Sınıfların ilk harfleri büyük yazılmalıdır.
- Her kelimenin ilk harfi büyük yazılmalıdır ve kelimeler boşluk ile ayrılmamalıdır. (Hiç ayırmamak daha estetik bir dosya yapısı sağlar fakat ayırmak için alt çizgi kullanabilirsiniz.)
- Özel karakter kullanımından kaçınılmalıdır.
- Ana sınıf dosyamızın adı genelde "Main, <Eklenti adı>, ..." şeklinde yazılır fakat yine hayal gücünüze bırakıyorum.
Bu kadar kural yeterli şimdi ilk sınıfımızı oluşturalım.Bunun için oluşturduğumuz pakete sağ tıklıyor ardından New > bölümünden Class'ı seçiyoruz.
1. Paketimizin ismi.
2. Sınıfımızın ismi.
3. Sınıfımızın erişilebilirlik ayarları.
4. Sınıfın hangi sınıftan miras alma yolu ile kopyalanacağı.
5.1. Bizimle hiç alakası olmayan bir seçenek.Herhangi bir platform için Java kodlarken Java'nın ilk çalıştıracağı metot.
5.2. Miras alınan sınıftaki yapıcı metotları kopyala.
5.3. Yine bizi ilgilendirmeyen bir seçenek.
6. İsterseniz kaynak kodlarına default yorum satırları ekleyerek imzalayabilirsiniz.
Evet ilk sınıfımız oluştu ve karşımıza bu ekran geldi.
Buradaki
package ni.w5.test;
satırı, paket ismimize referanstır.public class Test {}
ise sınıfımızın gövdesidir.Gelin yakından inceleyelim.- public sözcüğü, sınıfımızın herhangi bir sınıftan erişilebileceğini gösterir.
- class sözcüğü, dosyanın sınıf olduğunu gösterir.
- Test ise sınıfımızın adıdır.
Şimdi biraz kod yazalım ha! İlk önce bu projenin bir plugin olduğunu tanımlamamız lazım.Bunun için JavaPlugin sınıfını miras almalıyız.Miras almak için yazmamız gereken kodlar şunlar:
extends JavaPlugin
Bu kodları sınıf dosyasının isminden sonra yazmalısınız yani son hali şu şekilde olmalı.
(JavaPlugin'in altı kırmızı çizilecektir.Onu sınıfımıza eklemelisiniz.Fareyi üzerine getirin.)
- extends: Bu sözcük bizim herhangi bir sınıftan miras almamızı sağlar.Yani kelimeden sonra gelen sınıftan metotlar kullanabiliriz.
-- (Daha fazla bilgi için: Inheritance in Java - GeeksforGeeks)
- JavaPlugin: Bu kelime bizim miras aldığımız sınıf.Yani biz JavaPlugin sınıfında mevcut olan tüm özellikleri kullanabiliyoruz. (superclass)
(Kalıtım ile ilgili kısa bir açıklama: İnsan, Ali, Ayşe ilişkisine benzer.Burada İnsan superclass'tır.Bunun nedeni ise her insanın belirli özellikleri benzerdir.Gözleri olması, kulakları olması vs.Kod tekrarından kurtulmak için Ali ve Ayşe'yi, İnsan sınıfından miras aldırtıyoruz bu sayede daha az kod ile aynı işlemleri yapabiliyoruz.)
1.4. Gözle Görülebilir İlk Adımımız
Evet bundan önce yaptıklarımız arka planda kalıyordu yani bir kullanıcının fark edemeyeceği önemli detaylardı.Şimdi gelin biraz da görebileceğimiz işler yapalım.Mesela açılışta konsola yazı yazdıralım.Hatırlarsanız JavaPlugin denen zımbırtıdan bahsetmiştik.Bu zımbırtı sayesinde sunucunun açılış esnasında işlemler yapabiliyoruz.Hemen kodumuzu inceleyelim.
- @Override bu kelime JavaPlugin sınıfında tanımlanmış olan onEnable() metodunun yeniden tanımlandığını gösteriyor.Bu sayede yazmış olduğumuz mesaj konsola gidecektir.
- public bu kelimeyi üst başlıkta açıklamıştım.Buradaki kullanım amacı ise fonksiyonun her dosyadan erişilebilirliğini düzenlemek.
- void kelimesi, boşluk anlamına gelmekte ve gerçekten anlamına uygun bir iş yapmaktadır.Bazı metotlar değer döndürürken (örn. Bir oyuncunun ismini elde etmek için kullandığımız bir metot.) bazıları ise değer döndürmez.İşte değer döndürmeyen metotlar void kelimesini tanımlanırken içerir.
- onEnable() ise fonksiyonumuzun adıdır. (Farklı bir şekilde çağırılamaz.Çünkü bu metot JavaPlugin'de bu isimle tanımlanmış.)
Evet kodlarımızı açıkladık.Şimdi ise konsola mesaj gönderelim.Bunun için çok fazla yöntemimiz var.Ben size kendi kullandığımı göstereceğim.Detaylı bilgi için araştırma yapabilir veya bu konuyu inceleyebilirsiniz: Solved - Sending a Message to Console? | Bukkit Forums
Şimdi gelelim benim nasıl mesaj gönderdiğime.Hepimiz estetiği severiz değil mi? Bu yüzden renkli mesajlar göndermek benim için çok önemli.
Hadi gelin bu kodumuzu da inceleyelim.
- Bukkit bu kelime, bizim erişmek istediğimiz metodun bulunduğu dosyanın adı.
- getConsoleSender() ise bir metot.Bu metot bize Konsol objesini döndürüyor ve bu sayede etkileşime geçebiliyoruz.
- sendMessage("§aMERHABA"); ise bir önceki metot ile elde ettiğimiz konsol objesine mesaj gönderiyor.Tırnaklar arasındaki bölüm bizim mesajımızı içeriyor.§a ise renk kodumuz.Bukkit renk kodlarımızı bu şekilde okuyor.
2. plugin.yml Ayarları
Evet ilk eklentimizi kullanmadan önce yapılması gereken işlemler var.Yapmamız gereken şey plugin.yml dosyası oluşturmak.Hatırlarsanız size tüm dosyalarımız src bölümünde bulunacak demiştim.Bu yüzden dosyamızı yine src dizinine açıyoruz.
Ardından oluşan plugin.yml dosyamızı açıyoruz ve içine şunları yazıyoruz.
Kod:
name: TestPlugin
main: ni.w5.test.Test
version: 1.0
authors: [WON5, NiB]
description: Simple plugin tutorial
Hadi son kez bunu da inceleyelim.
- name: Eklenti adı
- main: Eklentinin onEnable() metodunun bulunduğu sınıfın yolu. (ni.w5.test benim paket adım.Sondaki Test ise sınıfın adı.Aralardaki noktalara dikkat.)
- version: Eklenti versiyonu
- author: Eklentinin yapımcısı. (Eğer authors: olur ise yapımcı listesi olur ve örnekteki gibi yazılır.)
-- Örnek:
author: WON5
- description: ise eklentinin açıklaması.Türkçe karakterden kaçınalım bazı zamanlar hata olabiliyor.
Detaylı Açıklama: Plugin.yml | SpigotMC - High Performance Minecraft
3. Eklentinin Kullanımı
Eklentiyi kullanmak için öncelikle Java Arşivi şeklinde dışarı aktarmamız lazım.Bunun için izlememiz gereken yol şöyle.Projemize(src değil, proje) sağ tıklıyoruz ve Export seçeneğine tıklıyoruz.
Ardından çıkan pencereden JAR File seçeneğini buluyoruz ve Next > diyoruz.
Ardından çıkış dizinini ayarlıyoruz ve Finish diyoruz.Artık eklenti test edilmek üzere sunucunuzun plugins klasörüne yolculuğa çıkabilir.İyi öğrenmeler.
(Bir önceki eklentinin ismi :C)
Desteğe ihtiyacınız var ise > WON5#6087
İletişime geçmekten çekinmeyin.