Pumpkin-Docs/docs/en/plugin-dev/migrating-from-bukkit/index.md
Alexander Medvedev 102bd0329c update: docs
2026-09-14 21:29:00 +02:00

28 lines
1.6 KiB
Markdown

# 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](./commands) — Transitioning from `getCommand().setExecutor()` and `plugin.yml` to Brigadier command trees.
- [Migrating Events](./events) — Replacing `@EventHandler` and `Listener` interfaces with Pumpkin's blocking vs. non-blocking event system.
- [Migrating Inventories & GUIs](./inventories) — Moving from `Bukkit.createInventory()` to Pumpkin container and window handlers.
- [Migrating Configuration & Data](./configuration) — Replaces `getConfig()` / `config.yml` with native TOML, JSON, or custom storage.