Minecraft start.bat dosyası, Windows’ta sunucunuzu tek tıkla başlatan küçük bir toplu iş (batch) dosyasıdır ve içinde yalnızca üç şey bulunur: Java’nın nerede olduğu, sunucuya kaç GB RAM verileceği ve hangi jar dosyasının çalıştırılacağı. En sade hâli üç satırdır ve doğrudan çalışır:
@echo off
java -Xms6G -Xmx6G -jar paper.jar nogui
pause
Bu sayfa baştan sona Windows içindir. Aşağıda dosyayı Not Defteri ile doğru kaydetmeyi, RAM değerlerini paketinize göre seçmeyi, Aikar’s Flags ve ZGC bayraklarını, otomatik yeniden başlatma döngüsünü ve en sık yapılan hataları bulacaksınız. Sunucu klasörünü henüz hazırlamadıysanız önce Windows’ta Minecraft sunucu kurulumu rehberini tamamlayın.
start.bat Ne İşe Yarar, Neden Şart?#
Minecraft sunucusu bir .exe değil, bir Java uygulamasıdır. Jar dosyasına çift tıkladığınızda Windows onu ya hiç açmaz ya da RAM ayarı yapılmadan, varsayılan heap ile açar. Varsayılan heap makinenizin fiziksel RAM’inin dörtte biri kadardır ve bir Minecraft sunucusu için neredeyse her zaman yetersizdir.
start.bat aradaki boşluğu doldurur. Şunları tek dosyada sabitler:
- Hangi Java sürümünün kullanılacağı (makinede birden fazla Java varsa kritik)
- Sunucuya ayrılacak minimum ve maksimum heap (
-Xms/-Xmx) - Çöp toplayıcı ve performans bayrakları
- Çalışma klasörü ve jar dosyasının adı
- Sunucu kapanınca ne olacağı (bekle, yeniden başlat veya pencereyi açık tut)
İndirmeniz Gerekenler#
-
Eclipse Temurin JDK 2526.1+ için zorunluİndir
-
Paper 26.2 sunucu jarÖnerilenİndir
-
Notepad++Düzenleyiciİndir
-
NSSM7/24 çalıştırma içinİndir
Bağlantılar resmî kaynaklara gider. Sunucu jar’ını üçüncü taraf sitelerden indirmeyin. Java kurulumunu adım adım görmek için Windows’a Java 25 kurulumu sayfasına bakın.
start.bat Dosyasını Oluşturma#
-
Dosya adı uzantılarını görünür yapın#
Bu adımı atlamak, sonradan “dosya çalışmıyor” diye saatler kaybettirir. Dosya Gezgini’ni açın, üst şeritte Görünüm > Göster > Dosya adı uzantıları seçeneğini işaretleyin. Windows 10’da bu ayar Görünüm sekmesindeki Dosya adı uzantıları kutucuğudur.
-
Sunucu klasörüne gidin#
Sunucu jar’ının bulunduğu klasörü açın; örneğin
C:\minecraft\server. start.bat dosyası jar ile aynı klasörde olmalıdır. Klasör yolunda Türkçe karakter ve boşluk bulundurmayın;C:\Kullanıcılar\Ahmet\Masaüstü\sunucugibi yollar zaman zaman sorun çıkarır. -
Boş bir metin belgesi oluşturup düzenleyin#
Klasörde boş alana sağ tıklayın, Yeni > Metin Belgesi deyin. Dosyayı Not Defteri ile açıp başlatma satırlarını yazın.
@echo off title Minecraft Server - Paper 26.2 cd /d C:\minecraft\server java -Xms6G -Xmx6G -jar paper.jar nogui pause -
ANSI kodlamasıyla .bat olarak kaydedin#
Dosya > Farklı Kaydet deyin. Kayıt türü alanını Tüm Dosyalar (*.*) yapın, Kodlama alanını ANSI seçin ve dosya adına
start.batyazın. Kodlama UTF-8 kalırsa dosyanın başına görünmez bir BOM işareti eklenir ve cmd ilk satırı tanımaz. -
Çift tıklayıp ilk açılışı yapın#
Sunucu ilk açılışta
eula.txtdosyasını oluşturup kapanır. O dosyayı Not Defteri ile açıpeula=falsesatırınıeula=trueyapın ve start.bat’ı tekrar çalıştırın. Ayrıntı için EULA hatası sayfasına bakabilirsiniz.
start.bat olduğundan emin olun. Uzantılar gizliyken kaydettiyseniz dosyanın gerçek adı start.bat.txt olmuş olabilir; simgesi dişli değil de defter görünüyorsa durum budur. Dosyaya sağ tıklayıp Yeniden adlandır ile .txt kısmını silin.RAM Ayarı: Xms ve Xmx Değerlerini Seçme#
-Xms JVM’in başlangıçta ayıracağı heap, -Xmx ise çıkabileceği tavan değerdir. Minecraft sunucularında ikisi daima eşit verilir. Farklı verirseniz JVM heap’i çalışırken büyütüp küçültür, her boyutlandırma bir duraklama üretir ve oyuncular bunu ani takılma olarak hisseder.
İkinci kural: makinenin tüm RAM’ini Java’ya vermeyin. Windows’un kendisi, disk önbelleği ve varsa diğer servisler için pay bırakın. Pratikte 2 GB’lık bir pay yeterlidir.
| Sunucu paketi | start.bat değeri | Uygun senaryo | Disk |
|---|---|---|---|
| 8 GB | -Xms6G -Xmx6G | 2–10 oyuncu, vanilla veya hafif eklentili | 50 GB NVMe |
| 12 GB | -Xms10G -Xmx10G | 10–30 oyuncu, eklentili Paper sunucu | 50 GB NVMe |
| 16 GB | -Xms14G -Xmx14G | 30–60 oyuncu, minigame veya çok dünyalı; Forge/Fabric modpack | 100 GB NVMe |
| 32 GB | -Xms28G -Xmx28G | 60+ oyuncu, büyük modpack veya proxy’li sunucu ağı | 100 GB+ NVMe |
G harfi gigabayt, M megabayt anlamına gelir. -Xms6G ile -Xmx6144M aynı şeydir. Oyuncu sayısına göre daha ayrıntılı bir planlama isterseniz Minecraft sunucusu kaç GB RAM ister sayfasındaki tabloya bakın.
-Xmx8G vermek Windows’u sayfa dosyasına iter; sunucu takılır, sonunda OutOfMemoryError ile çöker. Aynı hatayı zaten alıyorsanız Out of Memory hatası çözümüne bakın.JVM Bayrakları: Aikar’s Flags ile Tam start.bat#
Sade bir java -Xms6G -Xmx6G -jar satırı çalışır ama optimum değildir. Aikar’s Flags, G1 çöp toplayıcısını Minecraft’ın bellek davranışına göre ayarlayan ve yıllardır standart kabul edilen bir bayrak setidir. PaperMC’nin resmî dokümanında yer alır ve 26.x sunucularında hâlâ geçerlidir.
Batch dosyasında okunabilirliği korumak için bayrakları bir değişkene atamak en temiz yöntemdir:
@echo off
title Minecraft Server - Paper 26.2
cd /d C:\minecraft\server
set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe"
set MEM=-Xms6G -Xmx6G
set FLAGS=--add-modules=jdk.incubator.vector -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
%JAVA% %MEM% %FLAGS% -jar paper.jar nogui
pause
set JAVA= satırında Java’nın tam yolunu vermek, makinede birden fazla Java sürümü varsa yanlış sürümle açılma riskini tamamen ortadan kaldırır. Kurulu Java’nızın gerçek klasör adını where java komutuyla teyit edebilirsiniz.
12 GB üzeri heap için değişen değerler#
Aikar’s Flags 12 GB’ın üzerindeki heap’lerde birkaç değerin büyütülmesini ister. 16 GB ve 32 GB paketlerde şu beş bayrağı değiştirin:
-XX:G1NewSizePercent=40
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20
ZGC ne zaman mantıklı?#
ZGC, duraklama sürelerini milisaniyenin altına indiren düşük gecikmeli bir çöp toplayıcıdır. Ancak G1’den daha fazla RAM ve CPU tüketir, bu yüzden her sunucuda kazanç sağlamaz. Pratik kural şudur:
- 8–12 GB heap
- G1GC + Aikar’s Flags. Değiştirmeyin, en iyi sonucu bu verir.
- 16 GB ve üzeri heap
- ZGC denemeye değer. Özellikle büyük modpack ve çok dünyalı sunucularda GC duraklamalarını gözle görülür azaltır.
- Ölçüm
- Kararı tahminle değil ölçümle verin. Spark profiler ile GC duraklamalarını iki bayrak setinde de kaydedip karşılaştırın.
ZGC kullanacaksanız Aikar’s Flags setinin tamamını kaldırın; G1 bayrakları ZGC ile birlikte kullanılamaz. Doğru yazım şudur:
@echo off
cd /d C:\minecraft\server
set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe"
set MEM=-Xms14G -Xmx14G
set FLAGS=-XX:+UseZGC -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem
%JAVA% %MEM% %FLAGS% -jar paper.jar nogui
pause
-XX:+ZGenerational bayrağını yazmayın. Java 25’te ZGC’nin nesil ayrımı yapmayan modu tamamen kaldırıldığı için bu bayrak artık geçersizdir ve JVM her açılışta uyarı basar. Doğru kullanım yalnızca -XX:+UseZGC şeklindedir. Ayrıca 26.1 sürüm notlarındaki ZGC değişikliğinin sunucuyla ilgisi yoktur; o satır oyun istemcisinin JVM varsayılanını anlatır. Bayraksız açılan bir 26.2 sunucusu G1GC ile çalışır.Bayrakların tek tek ne yaptığını ve ölçüm yöntemlerini RAM ayarları, ZGC ve JVM flag’leri sayfasında bulabilirsiniz.
Otomatik Yeniden Başlatma Döngüsü#
Sunucu bir şekilde kapandığında elle müdahale etmek zorunda kalmamak için start.bat’a bir döngü ekleyebilirsiniz. Batch tarafında bu iş etiket ve goto ile yapılır:
@echo off
title Minecraft Server - Otomatik Yeniden Baslatma
cd /d C:\minecraft\server
set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe"
set MEM=-Xms6G -Xmx6G
:start
echo [%date% %time%] Sunucu baslatiliyor...
%JAVA% %MEM% -jar paper.jar nogui
echo.
echo Sunucu kapandi. 10 saniye icinde yeniden baslatilacak.
echo Iptal etmek icin bu pencereyi kapatin.
timeout /t 10
goto start
Döngülü sürümde pause satırı bulunmaz, onun yerini timeout /t 10 alır. 10 saniyelik bekleme, gerçekten durdurmak istediğinizde pencereyi kapatmanız için zaman tanır.
logs\latest.log dosyasını ve yedekleme rutininizi düzenli kontrol edin.Sunucuyu Doğru Kapatma#
start.bat penceresini sağ üstteki çarpıya basarak kapatmayın. Bu, süreci aniden sonlandırır; kaydedilmemiş chunk verileri ve oyuncu envanterleri kaybolur, en kötü senaryoda dünya dosyası bozulur.
Doğru yöntem, konsol penceresine tıklayıp şu komutu yazmaktır:
stop
Bu komut dünyayı diske yazar, eklentileri düzgün kapatır ve JVM’i temiz sonlandırır. Konsoldan çalıştırabileceğiniz diğer komutlar için konsol komutları sayfasına bakabilirsiniz.
Sık Kullanılan Ek Parametreler#
Java bayrakları -jar ifadesinden önce, sunucu parametreleri ise jar adından sonra yazılır. Bu sıralamayı bozmak “Unrecognized option” hatasının en yaygın sebebidir.
nogui- Sunucunun kendi grafik penceresini açmasını engeller. Konsol yeter, pencere boşuna RAM ve CPU harcar.
-Dfile.encoding=UTF-8- Türkçe karakterli MOTD, tabela ve eklenti mesajlarının konsolda ve oyunda bozuk görünmesini önler. Java bayrağıdır, jar’dan önce yazılır.
--port 25566- Aynı makinede ikinci bir sunucu açarken portu komut satırından belirlemenizi sağlar;
server.propertiesdosyasındaki değeri geçersiz kılar. --world-dir worlds- Paper’da dünya klasörlerinin nerede tutulacağını değiştirir. Yedekleme senaryolarını sadeleştirir.
--forceUpgrade- Sürüm yükseltmesinden sonra tüm chunk’ları tek seferde dönüştürür. Uzun sürer, yalnızca yedek aldıktan sonra ve bir kez çalıştırılır.
Hepsini bir arada kullanan bir örnek:
@echo off
cd /d C:\minecraft\server2
set JAVA="C:\Program Files\Eclipse Adoptium\jdk-25.0.4.7-hotspot\bin\java.exe"
%JAVA% -Xms10G -Xmx10G -Dfile.encoding=UTF-8 -jar paper.jar nogui --port 25566
pause
Aynı makinede birden fazla sunucu#
Her sunucu kendi klasöründe, kendi start.bat dosyasıyla ve kendi portuyla çalışır. Klasörleri ve portları baştan ayırmak sonradan çıkacak çakışmaları önler.
| Sunucu | Klasör | Port | Heap |
|---|---|---|---|
| Survival | C:\minecraft\survival | 25565/TCP | -Xms10G -Xmx10G |
| Skyblock | C:\minecraft\skyblock | 25566/TCP | -Xms6G -Xmx6G |
| Test | C:\minecraft\test | 25567/TCP | -Xms6G -Xmx6G |
Toplam heap değerlerinin makinenin fiziksel RAM’ini aşmadığından emin olun: yukarıdaki üç sunucu 22 GB heap ister, yani en az 32 GB’lık bir makine gerekir. Açtığınız her ek portu Windows Güvenlik Duvarında ayrıca izin listesine eklemeyi de unutmayın.
Sık Yapılan start.bat Hataları#
| Belirti | Sebep | Çözüm |
|---|---|---|
| Pencere bir anda açılıp kapanıyor | pause satırı yok, hata okunamıyor |
Dosyanın sonuna pause ekleyip hatayı okuyun |
Unable to access jarfile paper.jar |
Jar adı farklı ya da çalışma klasörü yanlış | Jar’ın gerçek adını yazın, başa cd /d C:\minecraft\server ekleyin; ayrıntılı çözüm |
'java' is not recognized |
Java kurulu değil veya PATH’te yok | Java 25’i kurun ya da java.exe tam yolunu yazın |
'@echo' is not recognized |
Dosya UTF-8 BOM ile kaydedilmiş | Not Defteri’nde Farklı Kaydet ile kodlamayı ANSI yapın |
Invalid maximum heap size |
-Xmx6 GB gibi boşluklu veya hatalı yazım |
-Xmx6G biçiminde, boşluksuz ve büyük harf birimle yazın |
| Dosya Not Defteri’nde açılıyor | Gerçek ad start.bat.txt |
Uzantıları görünür yapıp .txt kısmını silin |
| Sunucu açılıyor ama kimse bağlanamıyor | 25565/TCP portu kapalı | Windows Güvenlik Duvarında portu açın |
start.bat’tan Windows Servisine Geçmek#
start.bat, açık bir konsol penceresine ve dolayısıyla açık bir oturuma bağlıdır. Uzak Masaüstü oturumunuzu kapattığınızda ya da makine yeniden başladığında sunucu ayakta kalmaz. Ciddi bir sunucu işletiyorsanız er ya da geç bu sınıra çarparsınız.
Kalıcı çözüm, start.bat’ı NSSM (Non-Sucking Service Manager) ile bir Windows hizmetine dönüştürmektir. Hizmet oturumdan bağımsız çalışır, makine açıldığında kendiliğinden başlar ve services.msc üzerinden yönetilir. Adım adım kurulumu Minecraft sunucusunu Windows servisi olarak 7/24 çalıştırma sayfasında anlattık.
Bir başka nokta da donanımdır: start.bat’ta hangi bayrağı yazarsanız yazın, Minecraft’ın ana tick döngüsü tek çekirdekte koştuğu için performansı işlemcinin saat hızı belirler. Bu yüzden Batihost tarafında Minecraft sunucuları AMD Ryzen 9 7900X / 7950X sınıfı yüksek frekanslı işlemciler ve NVMe SSD üzerinde çalışır. Hazır yapılandırılmış paketler için Minecraft sunucu paketlerine, kendi kurulumunuzu yapmak isterseniz yüksek frekanslı VDS seçeneklerine bakabilirsiniz. Sunucu yazılımını kurma adımları için ise Windows’ta Paper kurulumu rehberi hazır.
Özetle#
Çalışan bir start.bat üç bileşenden oluşur: cd /d ile doğru klasöre geçmek, Java’yı tam yoluyla çağırmak ve -Xms ile -Xmx değerlerini eşit vermek. Dosyayı Not Defteri’nde ANSI kodlamasıyla ve gerçekten .bat uzantısıyla kaydettiğinizden emin olun; “açılıp kapanıyor” şikâyetlerinin çoğu bu iki ayrıntıdan çıkar.
RAM tarafında kural sabittir: 8 GB pakette -Xms6G -Xmx6G, 12 GB’da 10G, 16 GB’da 14G, 32 GB’da 28G. Bayrak tarafında 26.2 sunucuları için Aikar’s Flags hâlâ doğru başlangıç noktasıdır; ZGC’yi ancak 16 GB üzeri heap’te ve ölçerek devreye alın. Sunucuyu kapatırken pencereyi çarpıdan değil, konsola stop yazarak kapatın.
Takıldığınız bir nokta olursa Batihost destek ekibine destek talebi açabilirsiniz.