Skip to content

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.


High-Level Architectural Differences

mermaid
flowchart LR
    subgraph Bukkit / Paper
        A[Java Source] --> B[Java Bytecode .jar]
        B --> C[JVM / Main Server Thread]
    end
    subgraph Pumpkin
        D[Rust / Python / C# / Go / C] --> E[WASM Component .wasm]
        E --> F[WASM Sandbox / Multithreaded Engine]
    end
ConceptBukkit / Spigot / PaperPumpkin
Language SupportJava / Kotlin / Scala (JVM)Rust, Python, Kotlin, C#, Go, C
Binary Output.jar Java Archive.wasm WebAssembly Component
Plugin Descriptorplugin.yml fileProgrammatic PluginMetadata struct
Lifecycle HooksonEnable() / onDisable()on_load(context) / on_unload(context)
Security & IsolationUnrestricted JVM ReflectionSandboxed WASM capability model
ConcurrencySingle-threaded tick loop (BukkitScheduler)Multithreaded native execution with Async runtime

Detailed Migration Topics

Explore dedicated guides on migrating each major plugin subsystem:

Released under the MIT License.