Plugin yazım rehberi

CleverMC

Altın Madencisi
Mesajlar
383
En iyi cevaplar
0
Beğeniler
113
Puanları
0
Öncelikle merhaba arkadaşlar. Bu konuda size plugin yazma konusunda küçük dersler vereceğim. Herhangi bir sorunuz olursa yorum atarak sorabilirsiniz.
Başlayalım.
[----- Ders 1 -----]
1. ( Eklentimiz açıldığında konsola mesaj gönderelim. )
PHP:
public void onEnable() {
PHP:
  Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" + ChatColor.GREEN + " Plugin acildi!");
Bu kodu yazdıktan sonra sunucuyu başlatalım. Konsola Plugin acildi! diye mesaj gittiğini göreceksiniz.

2. ( Eklendimiz kapatıldığında konsola mesaj gönderelim. )
PHP:
public void onDisable() {
PHP:
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" + ChatColor.GREEN + " Plugin kapatildi!");
Bu kodu yazdıktan sonra sunucuyu başlatıp stop çekelim. Konsola Plugin kapatildi! diye mesaj gittiğini göreceksiniz.

3. ( Bir komut oluşturalım. )

PHP:
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
  {

Komut oluşturmak için bu kodu kullanacaksınız. Ardından;

PHP:
    if (label.equalsIgnoreCase("coin"))
    {

Şimdi bu kodu yazarak /coin diye bir komut oluşturduk.

Şimdi sadece oyuncuların bu komudu kullanabilmesini sağlayalım.

PHP:
        if (sender instanceof Player) {

Bu kodu da ekleyerek sadece oyuncuların komudu kullanabilmesini sağladık.

Peki komudu konsol kullanırsa ne yapacağız ? ;

PHP:
else {
sender.sendMessage(ChatColor.RED + "Bu komudu sadece oyuncular kullanabilir.");

Bunu da ekleyerek biraz süs katmış olduk :)

Şimdi devam edelim. Oyuncu /coin komudunu kullandığında ne olsun ? Örnek olarak oyuncuya bir mesaj gitsin.

PHP:
Player oyuncu = (Player) sender;
PHP:
oyuncu.sendMessage(ChatColor.GREEN + "Komut çalışıyor.");

Şimdi oyuncuya mesaj gitmesini de sağladık. En son olarak derlenmiş hali:

PHP:
public class classinizinadi extends JavaPlugin{
   
    public void onEnable() {
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin acildi!");
    }
    public void onDisable() {
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin kapatildi!");
    }
   
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (label.equalsIgnoreCase("coin")) {
            if (sender instanceof Player) {
                Player oyuncu = (Player) sender;
                oyuncu.sendMessage(ChatColor.GREEN + "Komut çalışıyor.");
            }
            else {
                sender.sendMessage(ChatColor.RED + "Bu komudu sadece oyuncular kullanabilir.");
            }
        }
        return false;
    }

}
[----------...----------]
Devam edecektir.

@Krumb069
 


Son düzenleme:

FZYY

Zombi Katili
Mesajlar
194
En iyi cevaplar
0
Beğeniler
97
Puanları
0
İlk önce İngilizce'yi öğret , sonra Java'yı sonra da plugin yazmasını yoksa tutmaz bu.
 

Life Hunter

Lapis Toplayıcısı
Mesajlar
930
En iyi cevaplar
0
Beğeniler
480
Puanları
980
Şu programlama için "ÖNCE İNGİLİZCE ÖĞREN" diyenleri anlamıyorum. İngilizce tabii ki çok gerekli bir şey bilişim dünyasında ama ingilizce bilmeyen programlama yapamaz diye bir mantık oluşmuş. Adam ingilizceyi sevmiyordur ama programlama yapmayı problem çözmeyi seviyordur. Bunun ingilizce ile pek alakası yokki. Yani kaynak felan açısından ingilizce gerekli bir süreden sonra öğrenilmesi gerekir tabii ki ama önce ingilizce öğren tavsiyesini çok saçma buluyorum.
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Evet hiç bilmeyen anlamaz.Ama en ufak bilgisi olan kolayca yapabilir.
Anlamaya çalışırsa anlar :) Ben gibi
Kodları açıklamamışsın, sadece toplamda ne işine yaradığını açıklamışsın.
PHP:
public class classinizinadi extends JavaPlugin{
  
    public void onEnable() { //Eklenti aktif edildiğinde algılanması 
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin acildi!"); // Eklentinin kurulduğu sunucunun konsoluna mesaj göndermek için
    }
    public void onDisable() { //Eklenti deaktif edildiğinde algılanması
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin kapatildi!"); // Eklentinin kurulduğu sunucunun konsoluna mesaj göndermek için
    }
  
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { //Oyuncunun komut girdiğini anlamak için. CommandSender komutu gönderen, Command komut, String label da aynı şekilde komut (tam olarak bilmiyorum ya ben aralarındaki farkı*) String[] Array'ı ise komut yazıldığında boşluk ile ayrılan kelimeler topluluğu /coin abc abc'de abc'ler arg coin ise komuttur.
        if (label.equalsIgnoreCase("coin")) { //Eğer girilen komut coin yazısına eşit ise
            if (sender instanceof Player) { //Eğer komutu gönderen oyuncu ise (konsol da olabilir)
                Player oyuncu = (Player) sender; //Yeni bir Player nesnesi yarat, ve gönderen'i Oyuncu olarak tanıt
                oyuncu.sendMessage(ChatColor.GREEN + "Komut çalışıyor."); //Yarattığınız oyuncu'ya mesaj gönder.
            }
            else {
                sender.sendMessage(ChatColor.RED + "Bu komudu sadece oyuncular kullanabilir.");
            }
        }
        return false; // Method çağırıldığında false ifadesini döndür.
    }

}
Gibi*
 

CleverMC

Altın Madencisi
Mesajlar
383
En iyi cevaplar
0
Beğeniler
113
Puanları
0
Kodları açıklamamışsın, sadece toplamda ne işine yaradığını açıklamışsın.
PHP:
public class classinizinadi extends JavaPlugin{
 
    public void onEnable() { //Eklenti aktif edildiğinde algılanması
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin acildi!"); // Eklentinin kurulduğu sunucunun konsoluna mesaj göndermek için
    }
    public void onDisable() { //Eklenti deaktif edildiğinde algılanması
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Test" +ChatColor.GREEN + " Plugin kapatildi!"); // Eklentinin kurulduğu sunucunun konsoluna mesaj göndermek için
    }
 
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { //Oyuncunun komut girdiğini anlamak için. CommandSender komutu gönderen, Command komut, String label da aynı şekilde komut (tam olarak bilmiyorum ya ben aralarındaki farkı*) String[] Array'ı ise komut yazıldığında boşluk ile ayrılan kelimeler topluluğu /coin abc abc'de abc'ler arg coin ise komuttur.
        if (label.equalsIgnoreCase("coin")) { //Eğer girilen komut coin yazısına eşit ise
            if (sender instanceof Player) { //Eğer komutu gönderen oyuncu ise (konsol da olabilir)
                Player oyuncu = (Player) sender; //Yeni bir Player nesnesi yarat, ve gönderen'i Oyuncu olarak tanıt
                oyuncu.sendMessage(ChatColor.GREEN + "Komut çalışıyor."); //Yarattığınız oyuncu'ya mesaj gönder.
            }
            else {
                sender.sendMessage(ChatColor.RED + "Bu komudu sadece oyuncular kullanabilir.");
            }
        }
        return false; // Method çağırıldığında false ifadesini döndür.
    }

}
Gibi*
Konuyu tamamen okursan yazdığımı görürsün :)
 

KaanGunlu

Işık Taşı Madencisi
Mesajlar
3,239
En iyi cevaplar
0
Beğeniler
4,843
Puanları
6,840
Şu programlama için "ÖNCE İNGİLİZCE ÖĞREN" diyenleri anlamıyorum. İngilizce tabii ki çok gerekli bir şey bilişim dünyasında ama ingilizce bilmeyen programlama yapamaz diye bir mantık oluşmuş. Adam ingilizceyi sevmiyordur ama programlama yapmayı problem çözmeyi seviyordur. Bunun ingilizce ile pek alakası yokki. Yani kaynak felan açısından ingilizce gerekli bir süreden sonra öğrenilmesi gerekir tabii ki ama önce ingilizce öğren tavsiyesini çok saçma buluyorum.
ingilizce bilmezsen anca yukardaki konu kadar gelişebilirsin.
gelişmek için bukkit forumundaki örnekleri şey etmen gerek.
yoksa 1-2 hafta sonra bıkar devam etmezsin.
 

Life Hunter

Lapis Toplayıcısı
Mesajlar
930
En iyi cevaplar
0
Beğeniler
480
Puanları
980
ingilizce bilmezsen anca yukardaki konu kadar gelişebilirsin.
gelişmek için bukkit forumundaki örnekleri şey etmen gerek.
yoksa 1-2 hafta sonra bıkar devam etmezsin.
"Dışarıdan devamlı olarak girilen sayıları toplayan bir C++ programı yazınız. Dışarıdan girilen sayı tek olduğunda toplama
işlemi bitmeli ve sonuç ekrana yazılmalıdır."
Şu algoritmayı kurmak için herhangi bir ingilizce bilgisine gerek yok. İngilizce bilmeyen biri değişkenler,döngüler,koşullar,diziler gibi konuları öğrenerek rahatlıkla bu tarz algoritmaları kurabilir.
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Konuyu tamamen okursan yazdığımı görürsün :)
Bu iyi bir öğretme şekli değil, sen adama kodu veriyorsun direk. Tamamıyla ezber, adama deseler getServer().getConsoleSender() ne işe yarıyor, adam sadece mesaj göndermeye falan der. Doğru düzgün ders olacaksa her nesnenin ve değişkenin ne işe yarayacağını anlatmalısın, şimdilik öğrenmesi gerekeni ezber değil mantık olarak öğrenmeli ki ileride bu mantıkla toplayabilsin.
 

CleverMC

Altın Madencisi
Mesajlar
383
En iyi cevaplar
0
Beğeniler
113
Puanları
0
Bu iyi bir öğretme şekli değil, sen adama kodu veriyorsun direk. Tamamıyla ezber, adama deseler getServer().getConsoleSender() ne işe yarıyor, adam sadece mesaj göndermeye falan der. Doğru düzgün ders olacaksa her nesnenin ve değişkenin ne işe yarayacağını anlatmalısın, şimdilik öğrenmesi gerekeni ezber değil mantık olarak öğrenmeli ki ileride bu mantıkla toplayabilsin.
Birdahaki derste dediklerinizi uygularım teşekkürler :)
 

KaanGunlu

Işık Taşı Madencisi
Mesajlar
3,239
En iyi cevaplar
0
Beğeniler
4,843
Puanları
6,840
"Dışarıdan devamlı olarak girilen sayıları toplayan bir C++ programı yazınız. Dışarıdan girilen sayı tek olduğunda toplama
işlemi bitmeli ve sonuç ekrana yazılmalıdır."
Şu algoritmayı kurmak için herhangi bir ingilizce bilgisine gerek yok. İngilizce bilmeyen biri değişkenler,döngüler,koşullar,diziler gibi konuları öğrenerek rahatlıkla bu tarz algoritmaları kurabilir.
Anlamıyorsun galiba. 1 tane bile doğru düzgün türkçe bukkit kaynağı yok. Forumda 1-2 tane açık kaynak kodlu plugin var o kadar.
misal "http://bukkit.org/threads/creating-easier-custom-items.372579/" bunu 0 ingilizce bilen birisi ne işe yaradığını anlayamaz.
 

Life Hunter

Lapis Toplayıcısı
Mesajlar
930
En iyi cevaplar
0
Beğeniler
480
Puanları
980
Bu iyi bir öğretme şekli değil, sen adama kodu veriyorsun direk. Tamamıyla ezber, adama deseler getServer().getConsoleSender() ne işe yarıyor, adam sadece mesaj göndermeye falan der. Doğru düzgün ders olacaksa her nesnenin ve değişkenin ne işe yarayacağını anlatmalısın, şimdilik öğrenmesi gerekeni ezber değil mantık olarak öğrenmeli ki ileride bu mantıkla toplayabilsin.
Katılıyorum herhangi bir dil konusunda eğitim verilirken programdaki kodların ne işe yaradığının tek tek açıklanması gerekir.[DOUBLEPOST=1439643942,1439643817][/DOUBLEPOST]
Anlamıyorsun galiba. 1 tane bile doğru düzgün türkçe bukkit kaynağı yok. Forumda 1-2 tane açık kaynak kodlu plugin var o kadar.
misal "http://bukkit.org/threads/creating-easier-custom-items.372579/" bunu 0 ingilizce bilen birisi ne işe yaradığını anlayamaz.
Sende algoritma kurmak için ingilizce bilgisinin gerekmediğini anlamıyorsun sanırım. Programlamanın temeli algoritmadır zaten problem çözmektir bunun ingilizce ile ne alakası var.

"Dışarıdan girilen bir sayıya kadar olan tek sayıları ekrana çıkartan C++ kodunu yazınız."
Bu sorunu çözmek için ingilizce gerekmiyor.
 

KaanGunlu

Işık Taşı Madencisi
Mesajlar
3,239
En iyi cevaplar
0
Beğeniler
4,843
Puanları
6,840
Katılıyorum herhangi bir dil konusunda eğitim verilirken programdaki kodların ne işe yaradığının tek tek açıklanması gerekir.[DOUBLEPOST=1439643942,1439643817][/DOUBLEPOST]
Sende algoritma kurmak için ingilizce bilgisinin gerekmediğini anlamıyorsun sanırım. Programlamanın temeli algoritmadır zaten problem çözmektir bunun ingilizce ile ne alakası var.

"Dışarıdan girilen bir sayıya kadar olan tek sayıları ekrana çıkartan C++ kodunu yazınız."
Bu sorunu çözmek için ingilizce gerekmiyor.
Krdş anlamıyorsan nası anlatam sana.
kaynak yok diyorum. adam anca komut yazınca mesaj çıkmasını yapar daha fazla ilerleyemez.
Sonuçta plugin kodlamak isteyen insanlar C++ veya Java bilen kaliteli insanlar değil. Belki kodlama ne onu bile bilmiyor.
Öğrenmesi için kaynak gerek, kaynak da türkçe yok.
 

Üst