Bukkit Eklentisi Yazmak (Plugin Yazmak) - Sırasıyla Aşamaları - Test Plugin

Lucifer˜

YASAKLANDI
Mesajlar
263
En iyi cevaplar
0
Beğeniler
247
Puanları
340
Merhaba arkadaşlar, bugün sizlerle birlikte basit bir bukkit eklentisi yazmayı
Sırasıyla aşamalarını öğreneceğiz. Ve bunu yaparken bir test plugini oluşturacağız.
Plugin yazımı herkesin sandığı kadar zor değildir fakat asıl zor kısımı fikir bulmaktır.

Plugin Nedir, Bukkit Nedir:
Plugin, herkesin karşılaşmış olduğu ekonomi, koruma, sohbet, anti hile, mekanikler, npc gibi milyonlarca özelliği sunan bir bukkit projesidir.
Bu projelerin en büyük kaynağı ise www.plugins.bukkit.org dur.
Eklentiler dünya çapındaki tüm kodlayıcılar tarafından bu siteye yüklenmektedir. Bu kodlayıcılar o kadar seçkin kişiler değil
Az sonra yazıcağımız basit test eklentisini dahi paylaşabilirsiniz.
Bukkit, yazdığımız eklentilerin Minecraft'a aktarmamızı sağlayan mükemmel bir projedir.
Bu proje kısaca Java'dan Minecraft'a doğru açılan bir kapıdır.

Kodlama İçin Gerekli Programlar:
Eclipse - Java düzenleme, kodlama platformu
Bu programın kullanımı için,
https://forum.gamer.com.tr/konu/buk...ipse-kullanımı-plugin-yapım-Örnekleri.176357/

Eclipse Nedir:
Eclipse, açık kaynak kodlu bir tümleşik geliştirme ortamıdır. (IDE). Ana odak noktası Java ve Java ile ilişkili teknolojiler olsa da esnek yapısı sayesinde C ve Python gibi farklı diller için de kullanılmaktadır.

2001 yılında IBM tarafından başlatılan proje Java'nın ana grafik sistemi olan Swing yerine bulunduğu platformda bulunan özellikleri doğrudan kullanan STW'yi kullanarak Java dünyasında tartışmalara yol açmıştır. Hızlı arayüzü, şık görünümü ve çok kuvvetli özellikleriyle kısa zamanda Java geliştiricileri arasında en popüler geliştirme ortamı olmuştur.

Android SDK ile bütünleşik çalışan Eclipse'in içinde yazılan programları denemek için öykünücü kurulabilmektedir.
Ayrıca sunulan eklentiler ile işlevleri geliştirilerek birçok alanda kullanılabilmektedir.

Sırasıyla Bukkit Eklentisi (Plugin) Yazım Aşamaları - Test Plugin
Şimdi tüm gerekli programlarımızı yükledik, hazırız!
Bu bölümde bir test plugini yazıcağız. Bu test plugini herkesin yazabileceği düzeyde olmalı
Hadi Başlayalım!

İndirdiğiniz "Eclipse" adlı programı açın.

Açtığınızda üstte gördüğünüz bu şeridin en başında olan ikonun yanındaki aşağıya doğru olan ok işaretine tıklayın.

"Project Name" kısımı eklentimizin isminin ne olacağıdır.
Biz bir test plugini oluşturucağımızı söylemiştik ve test plugini ile devam ediyoruz.
Proje ismimizi yazdıktan sonra "Next" butonuna tıklayın.

Yukarıdaki fotoğrafta görünen üst kısımdaki "Libraries" sekmesine tıklayın.

"Add Externel JARs" butonuna tıklayıp bilgisayarınızda yüklü olan bir CraftBukkit sürümü seçin.
Eğer bir CraftBukkit'iniz yok ise,
http://dl.bukkit.org/downloads/craftbukkit/
Adresinden yükleyebilirsiniz.
CraftBukkit sürümümüzü seçtikten sonra "Finish" butonuna basın.

Projemiz başarıyla oluştu!
Yukarıdaki resimde görünen "src" dosyasına sağ tıklayın
New>Package uzantısını izleyin.

Bu format genellikle "me.<yazar>.<eklenti-ismi> olarak geçer.
Ve bizde geleneği bozmayıp sürdürüyoruz.
Devam edelim,
Package dosyamızı oluşturduktan sonra
Oluşan package dosyasına sağ tıklayın
New>Class
Uzantısını izleyin.

Ana class dosyamızı oluşturduktan sonra,
kodlamaya geçebiliriz!
Elimizde,
Kod:
package me.lucifer.test;

public class Test {

}
Kodları bulunmakta.
Şimdi biz bunlara açılış ve kapanış logları ekleyeceğiz.
Kod:
package me.lucifer.test;

public class Test extends JavaPlugin {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
}
Şimdi yazdığınız kodların bazılarının altı çizili olduğunu göreceksiniz.
Bunlar hatadır. O kodların hatalı olduğunu gösterir. Fakat bizimki biraz farklı
CTRL + SHIFT + O tuşlarına birlikte basalım ve önümüze çıkan pencerenin en üstteki seçeneğine çift tıklayalım.
Veya kırmızı kodların üzerine gelip yeniden en üstteki seçeneği seçin.
Seçtikten sonra yukarıda oluşucak "import" kodları göreceksiniz.
Bu kodlar yüklediğimiz CraftBukkit ile bağlantılı kodlar kullandığımızda oluşur.
Ve bizde CraftBukkit'e yol göstererek o kırmızı çizgili kodları ortadan kaldırırız.
Loglarımız Oluştu!
Şimdi bir komut oluşturalım,
Kod:
package me.lucifer.test;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bukkit.ChatColor;

import org.bukkit.plugin.java.JavaPlugin;

public class Test extends JavaPlugin {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    }
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
    public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args) {
        if (komut.getName().equalsIgnoreCase("test")) {
            gonderen.sendMessage(ChatColor.GREEN + "Test Komutu Calisiyor!");
        }
        return false;
    }

}
Az önce dediğim gibi CTRL + SHIFT + O tuşları ile kodlarımızı yükleyelim
Ve şöyle bir hal alacaktır.
Kod:
package me.lucifer.test;

import java.util.logging.Level;
import java.util.logging.Logger;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Test extends JavaPlugin {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    }
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
    public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args) {
        if (komut.getName().equalsIgnoreCase("test")) {
            gonderen.sendMessage(ChatColor.GREEN + "Test Komutu Calisiyor!");
        }
        return false;
    }

}
Kodlarımız, kod içerisi mesajlarımız ve açılış-kapanış loglarımız hazır!
Kodlama tamam
Şimdi tek bir adım kaldı. "plugin.yml" dosyası oluşturmak.
Yeniden "src>New>File" uzantısını takip edin.
Ve o klasöre "plugin.yml" ismini verin.
"plugin.yml" dosyası olmadığı sürece bir plugini, plugin olarak sayamayız.
Bu kısımda eklentimizin ismini(name), yazarını(author), versiyonunu(version), komutlarını(commands), tanıtımı(description) ve ana class dosyasını(main) belirtmeliyiz.
Yani;
Kod:
name: Test
author: Lucifer
version: 1.0
main: me.lucifer.test.Test
description: Test Eklentisi!
commands:
    test:
        description: Test Komutu!
Eklentimiz artık hazır.
Şimdi test edelim.
Açılış logumuz;

Komut;

Kapanış logumuz;
 


K

Klood07

Ziyaretçi
+10000000000000000000000000000000000000(0 sonsuza kadar devam ediyor)
 

>>TheLegend<<

Легенды никогда не умирают
Mesajlar
991
En iyi cevaplar
3
Beğeniler
1,903
Puanları
2,530
Mükemmel

Avea inTouch 2 cihazımdan Tapatalk kullanılarak gönderildi
 

DellBoyM

Altın Madencisi
Mesajlar
402
En iyi cevaplar
0
Beğeniler
87
Puanları
0
Helall

GT-S5830i cihazımdan Tapatalk 2 ile gönderildi
 

SFKY

Kızıltaş Madencisi
Mesajlar
667
En iyi cevaplar
0
Beğeniler
296
Puanları
0
Güzel anlatım beğendim ayrıca
Log şu şekildede olabiliyor;
getLogger().info("< Yandaki Ön ek bak!");
(Ben bunu kullanıyorum )
 

Lucifer˜

YASAKLANDI
Mesajlar
263
En iyi cevaplar
0
Beğeniler
247
Puanları
340
Güzel anlatım beğendim ayrıca
Log şu şekildede olabiliyor;
getLogger().info("< Yandaki Ön ek bak!");
(Ben bunu kullanıyorum )
Kod:
public static final Logger log = Logger.getLogger("Minecraft");
Kodu genelleme kodudur.
Yani sen bu kodu ana class dosyanda belirtirsen, diğer tüm class dosyalarında eğer ana class dosyasına yol belirtmiş isen
Kod:
log.log(Level.INFO, "Deneme!");
Gibi kodları kullanabilirsin.
Fakat seninki daha pratik.
 

Salturbone

Portal Uzmanı
Mesajlar
5,189
En iyi cevaplar
0
Beğeniler
3,716
Puanları
6,890
Ruh hali
Biz bunları yaparak bişeyleri test eden plugin mi yaptık ?
 

mrbobaking

Kızıltaş Madencisi
Mesajlar
660
En iyi cevaplar
0
Beğeniler
283
Puanları
1,080
Kod:
package com.anan;

import java.util.logging.Level;
import java.util.logging.Logger;

public class main {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    }
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
}

log bende hata verdi. böyle düzelttim. +1
 

BraveHero

Dobloyu n'aptın
Mesajlar
2,109
En iyi cevaplar
1
Beğeniler
2,886
Puanları
6,850
Ruh hali
Kod:
package com.anan;

import java.util.logging.Level;
import java.util.logging.Logger;

public class main {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    }
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
}

log bende hata verdi. böyle düzelttim. +1
Hort.
 

Salturbone

Portal Uzmanı
Mesajlar
5,189
En iyi cevaplar
0
Beğeniler
3,716
Puanları
6,890
Ruh hali
Kod:
package com.anan;

import java.util.logging.Level;
import java.util.logging.Logger;

public class main {
    public static final Logger log = Logger.getLogger("Minecraft");
    public void onEnable() {
        log.log(Level.INFO, "Test Plugini Calisiyor!");
    }
    public void onDisable() {
        log.log(Level.INFO, "Test Plugini Devre Disi Birakiliyor!");
    }
}

log bende hata verdi. böyle düzelttim. +1
log.log yerine Minecraft.info yazın :)
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
Loglar için illa ki logger kullanmak zorunda değilsiniz.
System.out.println("Normal log mesajı");
System.err.println("Hata log mesajı");

şeklinde konsolda log gösterebilirsiniz.
 

BraveStrike

Yeni Doğmuş
Mesajlar
1
En iyi cevaplar
0
Beğeniler
0
Puanları
0
Ben AntiKüfür plugini kodladım fakat "plugin.yml" de "commands:" bölümüne ne koyacağımı bulamadım.Çünkü her hangi bir komut oluşturmadım.
 

mrbobaking

Kızıltaş Madencisi
Mesajlar
660
En iyi cevaplar
0
Beğeniler
283
Puanları
1,080
konu iki kere hortlatıldı. biri benim tarafımdan.

Sent from my GT-I8190 using Tapatalk
 

Üst