Visão Geral e Arquitetura de Migração
Migrar do desenvolvimento de plugins para Bukkit / Spigot / Paper para o Pumpkin envolve uma mudança de um modelo orientado a objetos centrado em Java para um modelo de componentes compilado e multilíngue em WebAssembly (WASM).
A tabela abaixo compara o paradigma legado do Bukkit/Paper com a arquitetura moderna em WebAssembly do Pumpkin:
| Conceito | Bukkit / Spigot / Paper | Pumpkin |
|---|---|---|
| Suporte a Linguagens | Java / Kotlin / Scala (JVM) | Rust, Python, Kotlin, C#, Go, C |
| Saída Binária | Arquivo Java .jar | Componente WebAssembly .wasm |
| Descritor do Plugin | Arquivo plugin.yml | Struct programática PluginMetadata |
| Ganchos de Ciclo de Vida (Hooks) | onEnable() / onDisable() | on_load(context) / on_unload(context) |
| Segurança e Isolamento | Reflexão (Reflection) irrestrita da JVM | Modelo de recursos (capabilities) WASM em sandbox |
| Concorrência | Loop de tick single-threaded (BukkitScheduler) | Execução nativa multithread com runtime assíncrono (Async) |
Tópicos Detalhados de Migração
Explore guias dedicados sobre a migração de cada subsistema principal de plugins:
- Migrando Comandos — Fazendo a transição de
getCommand().setExecutor()eplugin.ymlpara árvores de comandos Brigadier. - Migrando Eventos — Substituindo as interfaces
@EventHandlereListenerpelo sistema de eventos bloqueantes vs. não bloqueantes do Pumpkin. - Migrando Inventários e GUIs — Mudando de
Bukkit.createInventory()para manipuladores de contêineres e janelas do Pumpkin. - Migrando Configuração e Dados — Substituindo
getConfig()/config.ymlpor armazenamento nativo em TOML, JSON ou personalizado.