Skip to content

Yapılandırma ve Veri Depolamayı Taşıma ​

Bukkit eklentileri büyük ölçüde config.yml, YamlConfiguration ve Bukkit yapılandırma serileştirme sistemine dayanır.

Pumpkin'da ise WebAssembly eklentileri; yapılandırma dosyalarının TOML, JSON veya YAML gibi standart formatlar kullanılarak yerel olarak işlenebildiği güvenli bir yalıtılmış ortamda (sandbox) çalışır.


Temel Farklar ​

ÖzellikBukkit / SpigotPumpkin
Yapılandırma Dosyası Formatıconfig.yml (YAML formatı)Esnek: TOML, JSON veya özel dosyalar
Varsayılan Yapılandırma OluşturmasaveDefaultConfig()Eklenti dizininden veya gömülü WASM varlığından yapılandırmayı okuma
Veri Ayrıştırma (Parsing)getConfig().getString(...)Yerel serde / JSON / TOML seri durumdan çıkarma (deserialization)
Dosya G/Ç Yalıtımı (Sandboxing)Herhangi bir konuma doğrudan dosya sistemi erişimiWASM eklentisine tanınan yalıtılmış dizin erişimi

Kod Karşılaştırması: Yapılandırma Yükleme ​

1. Bukkit Uygulaması (Java) ​

java
public class ConfigExample extends JavaPlugin {
    @Override
    public void onEnable() {
        saveDefaultConfig(); // Saves config.yml from jar resources
        FileConfiguration config = getConfig();

        String welcomeMsg = config.getString("welcome-message", "Default welcome!");
        int maxItems = config.getInt("max-items", 10);
        getLogger().info("Loaded message: " + welcomeMsg);
    }
}

2. Pumpkin Uygulaması (Rust) ​

Pumpkin'da, temiz TOML yapılandırma dosyalarını ayrıştırmak için serde::Deserialize türetmesi yapabilirsiniz:

rust
use serde::Deserialize;
use std::fs;

#[derive(Deserialize, Debug)]
pub struct PluginConfig {
    pub welcome_message: String,
    pub max_items: i32,
}

impl Default for PluginConfig {
    fn default() -> Self {
        Self {
            welcome_message: "Default welcome!".to_string(),
            max_items: 10,
        }
    }
}

pub fn load_config() -> PluginConfig {
    let config_path = "plugins/my_plugin/config.toml";
    if let Ok(content) = fs::read_to_string(config_path) {
        toml::from_str(&content).unwrap_or_default()
    } else {
        PluginConfig::default()
    }
}

MIT Lisansı altında yayınlandı.