Pumpkin-Docs/docs/pt/plugin-dev/migrating-from-bukkit/configuration.md
Alexander Medvedev 5c23b676ed feat: d binding
2026-09-17 09:23:24 +02:00

2.3 KiB

Migrando Configuração e Armazenamento de Dados

Plugins Bukkit dependem fortemente de config.yml, YamlConfiguration e do sistema de serialização de configuração do Bukkit.

No Pumpkin, plugins WebAssembly rodam em um ambiente de sandbox seguro onde arquivos de configuração podem ser manipulados nativamente usando formatos padrão como TOML, JSON ou YAML.


Principais Diferenças

Recurso Bukkit / Spigot Pumpkin
Formato do Arquivo de Configuração config.yml (formato YAML) Flexível: TOML, JSON ou arquivos personalizados
Geração de Configuração Padrão saveDefaultConfig() Leitura de configuração a partir do diretório do plugin ou recurso WASM integrado
Análise (Parsing) de Dados getConfig().getString(...) Desserialização nativa com serde / JSON / TOML
Sandbox de E/S de Arquivos (File I/O) Acesso direto ao sistema de arquivos em qualquer lugar Acesso restrito em sandbox a diretórios concedido ao plugin WASM

Comparação de Código: Carregando Configuração

1. Implementação no Bukkit (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. Implementação no Pumpkin (Rust)

No Pumpkin, você pode derivar serde::Deserialize para analisar arquivos de configuração TOML limpos:

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()
    }
}