Hoş Geldin!

MinecraftTR.COM - Türkiye'nin en büyük minecraft platformu.

MinecraftTR.COM minecraftla alakalı araçları kullanıma sunuyor. Her şey burada; skript, plugin, doku paketleri, shaderlar, modlar, mcpe, minecraft sunucu kurulumu ve sunucularınızla alakalı yaşadığınız sorunları çözmenize yardımcı olabilecek rehberler ve tüm minecraft haberleri.

Sitemize kayıt olarak topluluğumuzun diğer üyeleriyle tartışabilir, paylaşabilir ve özel mesaj gönderebilirsiniz.

Giriş Yap veya Kayıt Ol!
batihost minecraft server kirala
Minecraft Sunucu Kiralama
MinecraftTR Reklam Alanı
MinecraftTR Reklam Alanı
MinecraftTR Reklam Alanı
MinecraftTR Reklam Alanı
Reklam satın al!
Yeni bir Steve doğdu!
Katılım
28 Ocak 2020
Mesajlar
3
Tepki puanı
6
Puanları
0
Discord
Ön Söz
Nasıl başlayacağımı bilemedim, nasıl başlanır ki? Direk konuya dalıyorum. Merhaba ben @kingOf0 up uzun bir aradan sonra bir minecraft forumunda konu açıyorum. Eskisi gibi konular açabilir miyim emin değilim. He bu arada, konu ilgi görmezse devamı gelmeyecek.

Bir Söz Verin Bana
Bu konunun sonunda sizden bir şey yapmanızı isteyeceğim, eğer bunu yapmayacaksanız hiç okuyup vaktinizi boşa harcamayın derim.

Başlangıç
Bu seride Intellij IDEA kullanacağım, kolayca indirebilirsiniz. Community Edition ücretsizdir, size hayli hayli yetecektir.

5897
Programı ilk açtığınızda böyle bir ekranla karşılaşacaksınız.
İlk Projemizi Oluşturuyoruz
Create New Project
butonuna basarak ilk projemizi oluşturuyoruz. Aşağıdaki ekrandan Software Development Kit seçmemizi istiyor.
Biz burada, kullanacağız.

5900


5899
Project SDK, yani bilgisayarımıza kurduğumuz JDK yı seçip Next'e basıyoruz.


Hazır java kodlarını kullanmak isteyip istemediğimizi soruyor.
Bizim bu kodlara ihtiyacımız olmadığından Next'e basarak ilerliyoruz.

5903
Bu ekranda projemize isim verip, konumunu seçiyoruz. İstediğiniz herhangi bir isim olabilir.
Sonrasında Finish'e basıp bitiriyoruz.

5904
Böyle bir klasör bulunmadığından bizi uyarıyor, OK'a basarak devam ediyoruz.

5905
Evet, tam olarak burası. İnsanların saatlerini harcayarak klavyeye abandıkları bölüm.

5907
Sol üst taraftaki ok'a basarak proje dizinini genişletiyoruz.

5908
Source'un kısaltması olan Src yani kaynak dizinine sağ tıklayarak yeni bir package oluşturuyoruz.

Kaynak (Source)
Projemize ait tüm içeriğin bulunduğu dizindir. Yazacağımız tüm kodlar bunun içerisinde bulunan package'lerde barınacak.

Paket (Package)
Projemizin daha derli toplu olmasını sağlayayan dizinlerdir. Kodlarımızı bu dizinlerin içine oluşturacağımız class'lara yazacağız.

Sınıf (Class)
Bunu anlatmak için biyolojiden yararlanacağım. Memeliler sınıfı, tek başına soyut bir kavram. Lakin tüm memelilerin somut ortak özelliklerini belirtiyor. Bu sınıfıda buna benzetebiliriz.

Not
Bu konudaki cümleler, bir kaç dakika içerisinde kendi kafamda oluşturduğum kelimelerden ibaret. Kesinlikle doğrudur demiyorum.

İsimlendirme
Paket isimleri tamamen küçük harfle olmalıdır. İlk harfinin bir rakam olamayacağı gibi, bazı özel class isimlerinde de olamazlar. Noktalama işareti ile bitemezler.
Sınıf isimleri büyük harfle başlamalıdır.
Değişken isimleri küçük harfle başlamalıdır. Eğer iki kelimeden oluşuyorsa, ikincisi büyük harfle başlamalıdır.

5921
Paket iismleri genellikle, tersten okunduğunda ders.minecrafttr.com gibi bir anlam içerirler.
OK'a basarak devam ediyoruz.

5922
Bukkit'e tanıtacağımız eklentimizin Main Class'ını (Ana Sınıf) oluşturuyoruz.

5925
Genellikle Main olarak adlandırılan bu class, projenizin adı da olabilir.

5926
Kullanacağımız minecraft sunucu kütüphanesini projemize eklememiz gerek, bunun için projemize sağ tıklayıp Oepn Module Settings'e basıyoruz.

5928
Resimdeki adımları takip ediyoruz.

5929
Buradan eklentimizi yazarken kullanacağımız hazır kodları içeren minecraft sunucu kütüphanesini seçiyoruz.
Bukkit spigot veya herhangi bir türevi olabilir. Bu kütüphaneleri internetten kolayca indirebilirsiniz. Songoda adlı ekibe ait olan S adlı site bunlardan birisi.
OK'a basarak devam ediyoruz.

5930
Sol taraftaki proje dizinimizden main class'ımıza tıklıyoruz.

Kod:
package com.minecrafttr.ders;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {


}
Extend
classımızı tanımlayan satıra extends JavaPlugin kodunu yazıyoruz. Extend'in ne olduğunu kısaca tanımlayacağım.
Şuanda main class'ımız JavaPlugin classını extendlemiş durumda. Biyoloji örneğinden devam edeceğim. Bu durumda, JavaPlugin class'ını şube olarak düşünebilirsiniz main class'ımız JavaPlugin classının belirttiği somut özellikleri taşımakta. Yani bana bir JavaPlugin göster sorusu yöneldiğinde, main class'ımızı gösterebiliriz. Bu durum, JavaPlugin classındaki tüm kodların aynı zamanda main classımızda da bulunmasıyla açıklanabilir.

Kod:
package com.minecrafttr.ders;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
      
    }
  
  
    @Override
    public void onDisable() {
  
    }
  
}

Metod (Method)
İçerisinde yazdığımız kodları barındıran, çağırılabilen, çağırıldığında geri dönüş sağlayabilen bir şeydir. ("şeydir" Evet benden bu kadar :D)

Hiçbir şey (Void)
Metodun çağırılabileceğini, çağırıldığında da geri dönüş sağlayabileceğinden bahsetmiştim. Metodu tanımlarken, isminden önce metodun yapacağı geri dönüşün sınıfını belirtmelisiniz. Eğer ki hiç bir geri dönüşte bulunmayacaksa void, yani hiçlik yazıyoruz.

Override
Dediğim gibi, main classımız JavaPlugin classındaki kodları içermekte, bu kodların arasında onEnable ve onDisable da var. Sunucumuz eklentimizi çalıştıracağı zaman main classımızdaki onEnable metodunu çalıştıracaktır. Lakin, sunucu onEnable daki kodları çalıştırırken JavaPlugin classındaki kodları çalıştıracaktır. Peki bu JavaPlugin classının içindeki onEnable methodunda ne var?

Kod:
public abstract class JavaPlugin extends PluginBase {
    public void onEnable() {
    }
}

Hiçbir şey yok. Peki bizim main classımızın içindeki kodları çalıştırmasını sağlayamaz mıyız? Tabi ki sağlayabiliriz. Bunun için metodu tanımlarken @Override yazmamız yeterli. Bu durumda, sunucu onEnable'ı çalıştırdığı zaman JavaPlugin'deki

Super
Peki, diyelim ki bu JavaPlugin classında onEnable methodunda birkaç kod olsaydı ve ben bu kodları çalıştırmak isteseydim, nasıl çalıştıracaktım?
main classımdaki onEnable'e @Override yazdığımdan dolayı onEnable() yazarak çalıştıramam, çalıştırdığımda main classımdaki kodu çalıştıracaktır. Bunun gibi durumlarda, super.onEnable() kullanabilirim. Yani bir class'ın extend ettiği classtaki kodu çalıştırmak için super ibaresini kullanıyoruz. Bu ekstra bir bilgi, yeni başlayan sizlerin kolay kolay kullanmayacağı bir şey.


Alan (Field)
Classımızın içindeki alan, methodları ve değişkenleri tanımladığımız alandır.

5932
Bu iki parantez arası buna örnektir. onEnable ve onDisable methodları main class'ımızın field'ında bulunmaktadırlar.​

Kod:
package com.minecrafttr.ders;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {

        getServer().getLogger().info("Eklenti Aktif!");
      
    }


    @Override
    public void onDisable() {

        getServer().getLogger().info("Eklenti Kapatılıyor!");

    }

}

Logger
Sunucumuzun konsoluna mesaj göndermek istediğimizde, JavaPlugin classının içinde bulunan getServer() methodunu çağırıyoruz. Bu method bize sunucumuzu belirten sınıfa ait bir nesne veriyor. Bu sınıfa ait olan getLogger() methodunu çalıştırdığımızda ise Java kütüphanelerinde bulunan Logger sınıfından bir nesne döndürüyor. Bu sınıfın info adında bir methodu var. Bu methodun içerisine String classından bir parametre girebiliyorsunuz. Biz bu parametreyi "Eklenti Aktif!" Olarak belirledik. ve kodun sonuna ; ekleyerek çalıştır nokta dedik.


Detay Neden Azaldı?
Detayın neden azaldığını soracak olursanız, "konunun sonuna yaklaştığımız ve ikinci ders de daha ayrıntılı anlatmayı düşündüğüm için" derim.


Plugin.yml
Sunucumuz bizim main class'ımızın içinde bulunan onEnable methodunu çalıştıracak dediğimi hatırlıyorsunuzdur, peki sunucumuz nereden bilecek bu main classın nerede olduğunu? Plugin.yml adında bir dosya oluşturmamız gerek. Bunun içerisine main class'ımızın nerede olduğunu yazacağız.

5934
Src dizinine sağ tıklayarak yeni bir File oluşturuyoruz ismini plugin.yml koyuyoruz

5935
Görüdğünüz gibi, Intellij hemen bizi uyarıyor. main name ve version girdilerinin eksik olduğundan bahsediyor. Bu girdilerin hepsi birer String olmalılar. Yani hepsini " içine yazmalıyız.
Kod:
main: "com.minecrafttr.ders.Main"
name: "MinecraftTrDers"
version: "1.0"

Plugin.yml Hakkında Daha Fazla Bilgi İçin



Main
Main class'ımızın bulunduğu konumdur. Paket Adı . Sınıf Adı şeklinde yazılmak zorundadır.

Name
Eklentimizin adıdır.

Version
Eklentimizin sürümüdür.


Eklentimizi Jar Olarak Çıkartmak (Export)
Projemize sağ tıklayıp tekrardan Open Module Settings'e tıklıyoruz.

5936

5937
Resimdeki adımları uyguluyoruz.

5938
OK'a basarak devam ediyoruz

5939
Eğer ki minecraft sunucu kütüphaneniz burada gözüküyorsa, seçip silmeniz gerek. Üzerine tıklayıp delete tuşuna basmanız yeterli.
Output Directory'den nereye çıkartmak istediğinizi ayarlayabilirsiniz.
Apply, sonrasında OK'a basıp çıkıyoruz.

5940
Alt + B ye basarak Build penceresini açıyoruz ve Build Artifacts...'a tıklıyoruz.

5943
Eğer ki bir hata yoksa, Build'e tıkladığımızda eklentimizi Output Directory'e çıkartacaktır.

Söz
Şimdi sırada, konunun başında sizden istediğim sözü tutma vaktiniz. Bu konuda okuduğunuz her şeyi uygulayacak, ilk eklentinizi yazacak bir sunucuya yükleyecek ve konsola gönderdiğiniz mesajı yorumlara yazacaksınız. Aşağıdaki resim gibi. Hadi kolay gelsin!
5945


Hiçbir şekilde kopyalanması alıntı yapılması, paylaşılması ödün (ç)alınması yasaktır.
 
Ne Mutlu Türküm Diyene!
Yasaklandı
Katılım
1 Ocak 2020
Mesajlar
914
En iyi cevaplar
1
Tepki puanı
449
Puanları
825
Discord
Eline Sağlık
 
Yeni bir Steve doğdu!
Katılım
28 Ocak 2020
Mesajlar
3
Tepki puanı
6
Puanları
0
Discord
Son düzenleme:
Seçkin madenci.
Katılım
26 Eylül 2018
Mesajlar
56
Tepki puanı
27
Puanları
1,025
Discord
Akif B. | 19#5635
5946
inteljinin hazır plugini var onu kullanmak daha fazla kolaylık sağlıyacaktır.
Main class'ı plugin yml otamatik oluşturyor (1.12 ve üstünü otamatik jar indiriyor)
Konuya gerçekten emek vermişsin ama kimsenin umrunda olmuyor hazıra konmayı çok seviyorlar.
başarılar dilerim.
 

Üst