S
Silinen üye 116132
Ziyaretçi
Merhaba, önceki konuları (ilk konu, ikinci konu) okumadıysanız okumanızı öneririm. Geçen konuda kodlamaya başlamıştık, bu konuda ise config ve database (ayarlar ve veritabanı) dosyalarını "<server>/plugin/pluginismi/dosya.yml" dizininde oluşturmayı; bu dosyadaki verileri okumayı, bu dosyaya veri eklemeyi ve var olan bir veriyi düzenlemeyi nasıl yapacağınızı anlatacağım.
Tabii, ilk önce IDE'yi (Ne demek olduğunu bilmiyorsanız önceki konuları okuyun!) açıp projemize giriyoruz ve AnaDosya.class'ımızın kodlarına bir göz atıyoruz. Geçen konuda plugin açıldığında/kapandığında konsola mesaj attırmıştık,
onEnable() ve onDisable()'nin içine yazdığımız log ifadeleri sayesinde bunu yapıyorduk. Bugün ise konsola loglamanın yanı sıra config ve database dosyasını yüklemesini de sağlayacak kodlar yazacağız. Öncelikle şunu belirteyim, config de database de aynı dosyada olacak.Evet, şimdi kodları vereyim; sonra birlikte inceleyelim.
Java:
package tr.mustafatarak.testplugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
public final class TestPlugin extends JavaPlugin {
//PATH descriptions
String ayarPath = "Settings.";//Dosyadaki ayarlar dizini
String databasePath = "DataBase.";//Dosyadaki veritabanı dizini
//
FileConfiguration config;
File configFile; //<server>/plugins/<pluginismi>/config.yml
public void configYukle() {
config = getConfig();
config.addDefault(ayarPath+"Prefix", "[Pluginİsmi]:");
config.addDefault(databasePath+"Para.ÖrnekOyuncu", 5);
config.options().copyDefaults(true);
//
configFile = new File(getDataFolder(), "config.yml");
saveConfig();
}
//
public void onEnable() {
configYukle();
getLogger().info("Plugin aktif! Config Yüklendi!");
}
public void onDisable() {
getLogger().info("Plugin deaktif!");
}
}
Ehh, evet; önceki kodlara göre daha dolular :)
Şimdi tek tek açıklayarak gidelim; ilk satırda package ile dosyamızı belirttik, ondan sonra 7. satıra kadar olan import ile gerekli kütüphaneleri bildirdik ve Java bizim için onları hazırda tutuyor. 9. satırda ise geçen konumuzda bahsettiğimiz JavaPlugin'i kullanan TestPlugin ögesini oluşturduk. Hemen "String" ifadesi gözünüze çarpmış olabilir, geçen konuda bahsettiğimiz değişken tanımlamalarını kullandım sizin için =). ayarPath ve databasePath olmak üzere iki tane string değişkeni tanımladım. Bunları ileriki satırlarda kullanacağımız için hazırda durması iyi olabilir.
Şimdi bizim asıl konumuza geldik; FileConfiguration ile config değişkenini tanımladık, altta ise File ile configFile değişkenini tanımladık. Onlardan hemen sonra ise, bir fonksiyon tanımladık; configYukle(). Biz şuan bir yere, methoda, evente;
Not: Eğer dosyayolu kısmına . ile bir şey koyarsanız "değer: noktadansonra" şeklinde olur. Birazdan örnek vereceğiz. Bilgi kısmına ise isterseniz integer (sayı yani " olmadan), isterseniz boolean (true ya da false " olmadan), ya da string (" vs. kullanarak) yazabilirsiniz. Bu sizin ihtiyacınıza göre değişir. Eğer sayı kaydetmeniz gerekiyorsa (önreğin banka plugini) integer (int) şeklinde kaydetmelisiniz.
Evet; şimdi ise configFile değişkenini yeni bir File()'a atıyoruz, yukarıda "File configFile" da yapmıştık hatırlarsanız. "new File()" yaparken File() içine şu biçimde yazmalısınız:
Şimdi tek tek açıklayarak gidelim; ilk satırda package ile dosyamızı belirttik, ondan sonra 7. satıra kadar olan import ile gerekli kütüphaneleri bildirdik ve Java bizim için onları hazırda tutuyor. 9. satırda ise geçen konumuzda bahsettiğimiz JavaPlugin'i kullanan TestPlugin ögesini oluşturduk. Hemen "String" ifadesi gözünüze çarpmış olabilir, geçen konuda bahsettiğimiz değişken tanımlamalarını kullandım sizin için =). ayarPath ve databasePath olmak üzere iki tane string değişkeni tanımladım. Bunları ileriki satırlarda kullanacağımız için hazırda durması iyi olabilir.
Şimdi bizim asıl konumuza geldik; FileConfiguration ile config değişkenini tanımladık, altta ise File ile configFile değişkenini tanımladık. Onlardan hemen sonra ise, bir fonksiyon tanımladık; configYukle(). Biz şuan bir yere, methoda, evente;
configYukle(); yazarsak bu tanımladığımız fonksiyonu belirten {} arasındaki işlemleri yürütecektir. Biz şimdi bu fonksiyonun neler yapması gerektiğini konuşalım; config değişkenini getConfig() olarak tanımlıyoruz ki her yere getConfig yazmayalım. addDefault() ile gerekli değerleri ayarlıyoruz. Yani plugin dosyaya bunları yazacak, bunları olması zorunlu olacak şeyler olarak ayarlıyoruz. Bunu yaparken şu şekilde yaptığınızdan emin olun: getConfig().addDefault("dosyayolu", "bilgi").Not: Eğer dosyayolu kısmına . ile bir şey koyarsanız "değer: noktadansonra" şeklinde olur. Birazdan örnek vereceğiz. Bilgi kısmına ise isterseniz integer (sayı yani " olmadan), isterseniz boolean (true ya da false " olmadan), ya da string (" vs. kullanarak) yazabilirsiniz. Bu sizin ihtiyacınıza göre değişir. Eğer sayı kaydetmeniz gerekiyorsa (önreğin banka plugini) integer (int) şeklinde kaydetmelisiniz.
getConfig().options().copyDefaults(true) ile de addDefault() ları yürütmesi gerektiğini bildiriyoruz. Bunu bir if/else şartı ile yükle ya da yükleme şeklinde yapmak isteyenler için true yerine false yazarsanız yüklemez. Haa, bu arada diğer birçok dilde olduğu gibi Java'da da // işaretinden sonra yazılanlar kod olarak algılanmaz ve çalıştırılmaz.Evet; şimdi ise configFile değişkenini yeni bir File()'a atıyoruz, yukarıda "File configFile" da yapmıştık hatırlarsanız. "new File()" yaparken File() içine şu biçimde yazmalısınız:
File("dosya (biz getDataFolder() kullandık.)", "dosya ismi.yml"). Biz bu satırda config.yml dosyasını configFile yazarak kullanabilmemiz için bir şey yapmış olduk ve config.yml dosyasına prefix ile para bilgisini kaydettik. Hemen plugini çalıştırdığımızda oluşan /plugins/pluginismi/config.yml dosyasının içeriğini atalım.
YAML:
Settings:
Prefix: "[Pluginİsmi]:"
Database:
Para:
ÖrnekOyuncu: 5
Evet, görmüş olduğunuz gibi verileri kaydetmiş. Peki biz bu verileri nasıl kodlarda kullanacağız ya da nasıl düzenleyeceğiz?
- Öncelikle size
ile ilgili bir link veriyorum. Burada verileri nasıl çekeceğinizi göstermiş. Ben bu kodlarda bir para plugini altyapısı yaptığım için veriyi integer (int) yani bir sayı olarak kaydettim string olarak değil. Eğer string olsaydı
Evet; nasıl başlangıç verisi kaydettireceğimizi, nasıl kayıtlı veriyi alacağımızı ve nasıl kayıtlı veriyi değiştireceğimizi öğrendik. Şimdi size bir link daha vermek istiyorum ve kaydedebileceğiniz türleri (boolean,string,int,list...) içeren siteye
tıklayarak gidebilirsiniz. Burada daha fazla örnek yer almaktadır.
Evet, bu konunun da sonuna geldik. Diğer konuları okumadıysanız konunun girişinde linkleri var. Okumanızı tavsiye ederim. Bir soru, sorun varsa ya da destek isterseniz discord üzerinden bana ulaşabilirsiniz, aşağıya bilgilerimi bırakıyorum.
- Öncelikle size
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
.getString("Database.Para.ÖrnekOyuncu") olarak bir string değerini çekebilirdik ama bizimki integer olduğu için .getInteger("Database.Para.ÖrnekOyuncu") kullanıyoruz. Ve bu kod bize kaydettirdiğimiz 5 değerini verecektir. Peki biz buna nasıl sayı ekleriz? Mesela 3 para değeri daha ekleyelim; Int yeni = getInteger("yol")+3 ile yeni değerine kaydedilen değerden 3 fazla bir sayı atamış olduk. Bunu ise .set("yol", IntDegiskeni) olarak kaydettirebiliriz. Buradaki yol'umuz "Database.Para.ÖrnekOyuncu" olacak, IntDegiskeni'miz de yeni olarak ayarladığımız değişken olacak. Tabii ki; .set, .getInt gibi kodlardan önce getConfig() yazmamız gerektiğini unutmayalım, ama biz getConfig()'i config olarak ayarlamıştık; yani direk config.set() olarak da kullanılabilir. Evet; nasıl başlangıç verisi kaydettireceğimizi, nasıl kayıtlı veriyi alacağımızı ve nasıl kayıtlı veriyi değiştireceğimizi öğrendik. Şimdi size bir link daha vermek istiyorum ve kaydedebileceğiniz türleri (boolean,string,int,list...) içeren siteye
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Evet, bu konunun da sonuna geldik. Diğer konuları okumadıysanız konunun girişinde linkleri var. Okumanızı tavsiye ederim. Bir soru, sorun varsa ya da destek isterseniz discord üzerinden bana ulaşabilirsiniz, aşağıya bilgilerimi bırakıyorum.
Discord Sunucum: Maalesef atamıyorum :[
Discord Bilgilerim: Mustafa.TRK#9404 (ID: 670610274948218901)
Kişisel sitem:
Discord Bilgilerim: Mustafa.TRK#9404 (ID: 670610274948218901)
Kişisel sitem:
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Moderatör tarafından düzenlendi:
