1.6 KiB
1.6 KiB
Migrating Overview & Architecture
Moving from Bukkit / Spigot / Paper plugin development to Pumpkin involves shifting from a Java-centric object-oriented model to a compiled, multi-language WebAssembly (WASM) component model.
The table below contrasts the legacy Bukkit/Paper paradigm with Pumpkin's modern WebAssembly architecture:
| Concept | Bukkit / Spigot / Paper | Pumpkin |
|---|---|---|
| Language Support | Java / Kotlin / Scala (JVM) | Rust, Python, Kotlin, C#, Go, C |
| Binary Output | .jar Java Archive |
.wasm WebAssembly Component |
| Plugin Descriptor | plugin.yml file |
Programmatic PluginMetadata struct |
| Lifecycle Hooks | onEnable() / onDisable() |
on_load(context) / on_unload(context) |
| Security & Isolation | Unrestricted JVM Reflection | Sandboxed WASM capability model |
| Concurrency | Single-threaded tick loop (BukkitScheduler) |
Multithreaded native execution with Async runtime |
Detailed Migration Topics
Explore dedicated guides on migrating each major plugin subsystem:
- Migrating Commands — Transitioning from
getCommand().setExecutor()andplugin.ymlto Brigadier command trees. - Migrating Events — Replacing
@EventHandlerandListenerinterfaces with Pumpkin's blocking vs. non-blocking event system. - Migrating Inventories & GUIs — Moving from
Bukkit.createInventory()to Pumpkin container and window handlers. - Migrating Configuration & Data — Replaces
getConfig()/config.ymlwith native TOML, JSON, or custom storage.