Skip to content

Bukkit / Spigot / Paper'dan Pumpkin'a Geçiş ​

Bu kılavuz, bir sunucuyu Bukkit, Spigot veya Paper'dan Pumpkin'a taşırken dikkate alınması gereken mimari ve yapılandırma farklılıklarını kapsar.


1. Mimari Farklılıklar ​

BoyutBukkit / Spigot / PaperPumpkin
Çalışma Zamanı OrtamıJava Sanal Makinesi (Java 17/21+ gerektirir)Yerel yürütülebilir dosya (derlenmiş Rust, Java gerektirmez)
Başlatma Komutujava [flags] -jar server.jar./pumpkin
Tick DöngüsüAsenkron iş parçacığı aktarımıyla tek iş parçacıklı tick döngüsüCPU çekirdekleri arasında çok iş parçacıklı tick yürütümü
Eklenti BiçimiBukkit API hedefli Java bayt kodu (.jar)WebAssembly (.wasm) veya PatchBukkit ile .jar
Eklenti DilleriJava, Kotlin, ScalaRust, Python, Kotlin, C#, Go, C
Yapılandırmaserver.properties, paper.yml, spigot.ymlpumpkin.toml (TOML biçimi)
Bellek YönetimiJVM Çöp Toplama (Garbage Collection)Yerel işletim sistemi bellek tahsisi

2. Eklentiler ve Uzantılar ​

WebAssembly Eklentileri ​

Pumpkin'ın birincil eklenti biçimi WebAssembly (.wasm)'dir:

  • Yalıtım: Eklentiler yalıtılmış bir WebAssembly çalışma zamanında çalışır.
  • Dil Desteği: Eklentiler Rust, Python, Go, C#, C veya Kotlin dillerinden WASM'a derlenebilir.
  • Özel Eklentiler: Özel Bukkit eklentilerinizi uyarlamak için Geliştirici Geçiş Kılavuzu belgesine bakın.

Bukkit Eklenti Uyumluluğu: PatchBukkit ​

Mevcut Bukkit/Spigot .jar eklentilerine ihtiyaç duyan sunucular için PatchBukkit projesi bir uyumluluk katmanı sağlar:

  • Mimari: PatchBukkit, Pumpkin içine bir JVM gömer, Bukkit API'sinin parçalarını yeniden uygular ve çağrıları JNI ve FFI aracılığıyla Pumpkin'a iletir.
  • Eklenti Konumu: Uyumlu .jar eklentileri patchbukkit/patchbukkit-plugins/ dizinine yerleştirilir.
  • Durum ve Kısıtlamalar: PatchBukkit aktif geliştirme aşamasındadır. Standart Bukkit API çağrıları desteklenir; dahili NMS (net.minecraft.server) sınıflarına, CraftBukkit dahili bileşenlerine veya bayt kodu manipülasyonuna dayanan eklentiler düzgün çalışmayabilir.
  • Java Gereksinimi: PatchBukkit çalıştırmak, gömülü JVM'yi yürütmek için ana sistemde bir Java çalışma zamanı (JRE/JDK) bulunmasını gerektirir.

3. Yapılandırma ve Özellikler ​

Pumpkin, server.properties ve YAML dosyaları yerine TOML yapılandırma dosyalarını kullanır:

Paper / Spigot (server.properties)Pumpkin (pumpkin.toml)
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. Dünya ve Veri Depolama ​

  • Biçim Uyumluluğu: Pumpkin, standart Anvil chunk biçimini (.mca dosyaları) okur.
  • Dizin Düzeni: Mevcut Paper/Spigot kurulumlarından dünyaları kopyalarken boyut dizinlerinin (world, world_nether, world_the_end) Pumpkin'ın beklediği düzenle eşleştiğinden emin olun.
  • En Son Dünya ve Datapack Biçimi Zorunluluğu: En azından şimdilik Pumpkin, yalnızca desteklenen Minecraft sürümünün en son dünya ve datapack biçimini destekler. Eski dünya biçimleri veya eski datapack sürümleri çalışma zamanında otomatik olarak dönüştürülmez.
    • Dünyaları İstemcide Güncelleme: Eski bir dünyayı taşıyorsanız Pumpkin'a yüklemeden önce güncelleyin. Mevcut bir dünyayı doğrudan resmi Minecraft istemcisinde güncelleyebilirsiniz: İstemciyi eşleşen en son sürümde açın, Tek Oyunculu menüsüne gidin, dünyayı seçin, Düzenle'ye tıklayın ve Dünyayı İyileştir (Optimize World) seçeneğini seçin. Alternatif olarak dünyayı en son sürümdeki bir vanilla sunucusunda bir kez açıp kaydedebilirsiniz.
    • Datapack'ler: world/datapacks içinde bulunan tüm datapack'lerin hedef sürümün beklediği biçime güncellendiğinden emin olun.

5. Başlatma ve JVM Bayrakları ​

Java Kurulumu Gerekmez ​

Saf Pumpkin bağımsız bir yerel ikili dosyadır. Sunucuyu çalıştırmak için işletim sisteminizde veya konteynerinizde Java çalışma zamanına (JRE/JDK) ihtiyacınız yoktur.

Başlatma Komutları ​

Paper ve Spigot sunucuları genellikle bellek tahsisi ve çöp toplama ayarlarına yönelik başlatma komut dosyaları (Aikar's Flags gibi) kullanır:

bash
# Aikar's Flags içeren tipik Paper başlatma komutu:
java -Xms10G -Xmx10G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -Daikars.new.flags=true \
  -jar paper.jar --nogui
bash
# Linux / macOS:
./pumpkin

# Windows:
./pumpkin.exe

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

Bellek Farklılıkları ​

  • Çöp Toplayıcı Yoktur: Pumpkin Rust dilinde yazılmıştır ve derleme zamanında deterministik bellek yönetimi (RAII) kullanır. Çalışma zamanı çöp toplayıcısı veya GC duraklama optimizasyonu bulunmaz.
  • Sabit Yığın Tahsisi Yoktur: -Xms ve -Xmx gibi bayraklar yerel ikili dosyalarda bulunmaz. Bellek, chunk'lar ve varlıklar yüklendikçe işletim sisteminden dinamik olarak ayrılır ve kaldırıldıklarında iade edilir.
  • JVM Bayrakları Geçerli Değildir: Çöp toplama stratejilerini, nesil boyutlandırmalarını veya JVM iç mekanizmalarını ayarlayan bayraklara gerek yoktur ve bunlar programa iletilemez.

Yönetici Kontrol Listesi ​

MIT Lisansı altında yayınlandı.