28 lines
1.6 KiB
Markdown
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.
|