Skip to content

Migrating a Server from Bukkit / Spigot / Paper to Pumpkin

Switching your server environment from Paper/Spigot to Pumpkin brings massive performance gains, multithreaded tick execution, and reduced RAM usage. However, because Pumpkin is built in Rust rather than running on the Java Virtual Machine, there are fundamental architectural differences that server administrators need to know.


1. Major Server Differences At-a-Glance

Feature / AspectBukkit / Spigot / PaperPumpkin
Runtime EnvironmentJava Virtual Machine (JVM)Native Binary (Rust)
Main Thread ArchitectureSingle-threaded tick loop with asynchronous offloadingMultithreaded tick execution across CPU cores
Plugin Engine.jar files compiled for Java / Bukkit API.wasm WebAssembly components running in sandboxed WASM runtime
Plugin LanguagesJava / Kotlin / ScalaRust, Python, Kotlin, C#, Go, C
Configuration Formatserver.properties & paper.yml / spigot.ymlpumpkin.toml & structured TOML configuration files
Memory FootprintHigh baseline (JVM garbage collection overhead)Micro baseline (Native memory management)

2. Plugins & Extensions

  • Java .jar Plugins Cannot Run Directly: Standard Bukkit/Spigot .jar plugins are bytecode compiled for the Java JVM and Bukkit API. They cannot be dropped into Pumpkin's plugins/ directory.
  • WebAssembly Plugins: Pumpkin uses WebAssembly (.wasm) for plugins. This sandboxes plugins for memory safety and security while allowing developers to write plugins in virtually any language.
  • Porting Plugins: If you maintain custom internal plugins, consult our Developer Migration Guide to convert Java logic to Pumpkin plugin bindings.

3. Configuration & Properties

Instead of server.properties and YAML files, Pumpkin consolidates server configuration into clean TOML files:

Paper / Spigot SettingPumpkin pumpkin.toml Equivalent
server-port=25565server_address = "0.0.0.0:25565"
motd=...motd = "A Pumpkin Server"
max-players=20max_players = 20
online-mode=trueonline_mode = true
view-distance=10view_distance = 10
simulation-distance=8simulation_distance = 8

4. World & Data Storage

  • Anvil Format Compatibility: Pumpkin reads standard Minecraft chunk data format.
  • Dimension Directories: Make sure world, world_nether, and world_the_end directory structures are mapped appropriately when copying existing worlds from Paper/Spigot server installations.

5. Performance Tuning & Startup

Unlike Paper servers which require complex JVM flags (-XX:+UseG1GC, -Xms, -Xmx), Pumpkin runs as a direct native binary:

bash
# Starting Pumpkin Server on Linux/macOS
./pumpkin

# Or running via Docker
docker run -p 25565:25565 -v ./data:/data pumpkinmc/pumpkin:latest

No garbage collection tuning or JVM heap allocation tuning is needed.


Admin Checklist for Migration

Released under the MIT License.