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

70 lines
2.3 KiB
Markdown

# 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)
```java [ConfigExample.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:
```rust [config.rs]
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()
}
}
```