Minecraft sunucusuna resource pack ekleme işlemi üç adımdan oluşur: paketin .zip dosyasını doğrudan indirilebilir bir adrese yüklemek, dosyanın SHA-1 özetini üretmek ve bu iki değeri server.properties dosyasındaki resource-pack ile resource-pack-sha1 satırlarına yazmak. Sunucu yeniden başlatıldıktan sonra bağlanan her oyuncuya paket otomatik olarak önerilir; isterseniz require-resource-pack=true ile zorunlu hâle getirebilirsiniz.
Bu rehberde doku paketini sıfırdan paketlemeyi, barındırma seçeneklerini, hash üretmeyi, zorunlu paket davranışını, güncelleme sırasında herkesin takıldığı önbellek sorununu ve “Failed to download resource pack” hatasının gerçek sebeplerini adım adım anlatıyoruz. Anlatılanlar Minecraft 26.2 “Chaos Cubed” dâhil tüm modern sürümler için geçerlidir; sunucu yazılımınızın Paper, Purpur, Spigot ya da vanilla olması bu ayarları değiştirmez.
Resource Pack Dosyasını Doğru Biçimde Hazırlama#
Sunucuya göndereceğiniz paket, kök dizininde pack.mcmeta dosyası bulunan bir ZIP arşivi olmalıdır. En sık yapılan hata paketin bulunduğu klasörü sıkıştırmaktır: bu durumda ZIP’in kökünde pack.mcmeta değil bir klasör adı görünür ve istemci paketi geçersiz sayar.
Doğru arşiv yapısı şöyledir:
pack.zip
├── pack.mcmeta
├── pack.png (isteğe bağlı, 128x128 önizleme görseli)
└── assets/
└── minecraft/
├── textures/
├── models/
├── sounds/
└── font/
pack.mcmeta dosyası, paketin hangi oyun sürümüyle uyumlu olduğunu bildiren küçük bir JSON dosyasıdır. pack_format değeri her Minecraft sürümüyle değişir; hedeflediğiniz sürümün karşılığını mutlaka doğrulayın. 1.20.2’den itibaren tek bir sayı yerine aralık belirtebilirsiniz:
{
"pack": {
"description": "Batihost Sunucu Doku Paketi",
"pack_format": 55,
"supported_formats": { "min_inclusive": 46, "max_inclusive": 80 }
}
}
pack_format yazarsanız oyuncu “Incompatible pack” uyarısı görür ve paket yine de yüklenir ama uyarı can sıkıcıdır. supported_formats aralığı kullanmak, sunucunuzu bir sonraki sürüme yükselttiğinizde paketi yeniden düzenleme ihtiyacını azaltır.Arşivi oluştururken dikkat edilecekler#
- Dosya ve klasör adlarında Türkçe karakter, boşluk veya büyük harf kullanmayın; oyun kaynak yollarını küçük harfle çözer.
- Arşivi
.zipolarak üretin..rarve.7zdesteklenmez. - Kullanmadığınız dokuları paketten silin. Vanilla dokularla birebir aynı dosyaları paketin içinde tutmanın hiçbir faydası yok, sadece boyutu şişirir.
- Paket içinde
__MACOSXveyaThumbs.dbgibi artık dosyalar kalmasın.
Bağlantılar resmî kaynaklara gider. Doku paketlerini üçüncü taraf aynalardan değil, hazırlayan kişinin resmî sayfasından indirin.
Paketi Barındırma: Doğrudan İndirme Bağlantısı Şart#
Minecraft istemcisi bir tarayıcı değildir. Verdiğiniz adrese GET isteği atar ve gelen yanıtın doğrudan ZIP içeriği olmasını bekler. Ara sayfa, reklam, “indirme birazdan başlayacak” ekranı ya da oturum çerezi isteyen bir servis kullanırsanız paket asla inmez.
| Barındırma yöntemi | Çalışır mı? | Not |
|---|---|---|
| Kendi web hosting hesabınız (public_html altında) | Evet | En kararlı seçenek; adres kalıcı, hız kontrolü sizde |
| Sunucunuz üzerinde Nginx/Apache ile yayınlanan dizin | Evet | Ek maliyet yok, ancak oyun sunucusuyla bant genişliğini paylaşır |
| GitHub Releases dosya bağlantısı | Evet | Doğrudan dosya adresi verir, ücretsizdir |
| Google Drive, Yandex Disk, MediaFire | Hayır | Önce bir indirme sayfası açar, istemci HTML alır |
| Discord CDN bağlantısı | Hayır | Bağlantılar süreli imza taşır ve bir süre sonra ölür |
Kendi alan adınız üzerinden yayınlamak istiyorsanız web hosting hesabınızın public_html dizinine bir pack klasörü açıp dosyayı oraya yüklemeniz yeterli. cPanel dosya yöneticisiyle veya WinSCP/FileZilla ile yükleyebilirsiniz. Adresin HTTPS olması için SSL sertifikasını kurmayı ihmal etmeyin; sertifikası geçersiz olan adresten paket inmez.
Sunucu tarafında doğru MIME türü#
Bazı web sunucuları .zip dosyasını yanlış içerik türüyle sunar. Nginx kullanıyorsanız aşağıdaki gibi bir konum bloğu hem türü hem de önbelleği doğru ayarlar:
location /pack/ {
root /var/www/html;
types { application/zip zip; }
add_header Cache-Control "public, max-age=604800";
autoindex off;
}
SHA-1 Hash Oluşturma ve Neden Zorunlu Sayılmalı#
resource-pack-sha1 alanı teknik olarak boş bırakılabilir, ama boş bırakmayın. Hash iki işi birden yapar: indirilen dosyanın bozulmadan geldiğini doğrular ve istemcinin paketi önbellekten mi yoksa yeniden mi indireceğine karar vermesini sağlar. Hash olmadan istemci paketi her girişte yeniden indirebilir; bu hem oyuncuyu bekletir hem bant genişliğinizi tüketir.
Hash’i paketi yükledikten sonra, sunucuya konan dosyanın son hâli üzerinden üretin.
-
Windows tarafında hash üretme#
Komut istemini açıp dosyanın bulunduğu dizinde şu komutu çalıştırın:
certutil -hashfile pack.zip SHA1PowerShell kullanıyorsanız
Get-FileHash pack.zip -Algorithm SHA1komutu da aynı sonucu verir. Çıktıdaki boşlukları temizleyip 40 karakteri tek parça hâlinde alın. -
Linux tarafında hash üretme#
sha1sum /var/www/html/pack/pack.zipÇıktının ilk sütunu 40 karakterlik SHA-1 özetidir. Dosya adını kopyalamayın, yalnızca hash değerini alın.
-
Uzaktaki dosyanın hash’ini doğrulama#
Yüklediğiniz dosyanın gerçekten aynı dosya olduğundan emin olmak için sunucudan indirip tekrar hesaplayın:
curl -sL https://ornek.com/pack/pack.zip | sha1sumİki değer aynı çıkmıyorsa yükleme sırasında dosya bozulmuş ya da web sunucusu farklı bir içerik döndürüyor demektir.
certutil çıktısı ikişer karakter arasında boşluk bırakır; bu boşluklar kalırsa istemci paketi reddeder ve require-resource-pack=true açıksa oyuncular sunucuya hiç giremez.server.properties Ayarları#
Sunucuyu durdurun, kök dizindeki server.properties dosyasını açın ve aşağıdaki satırları düzenleyin. Sunucu çalışırken yapılan düzenlemeler kapanışta üzerine yazılır.
resource-pack=https://ornek.com/pack/pack-v3.zip
resource-pack-sha1=9c1f7a4be2d0c58a6e3b90f21d47ac8351b6e0d2
resource-pack-prompt={"text":"Sunucumuzun özel doku paketi. Kabul etmeden oynayamazsınız.","color":"gold"}
require-resource-pack=true
resource-pack-id=
| Anahtar | Değer | Açıklama |
|---|---|---|
resource-pack | URL | Paketin doğrudan indirme adresi. Boşsa paket gönderilmez. |
resource-pack-sha1 | 40 karakter hex | Dosyanın SHA-1 özeti. Doğrulama ve önbellek için kullanılır. |
resource-pack-prompt | JSON metin bileşeni | Kabul ekranında oyuncuya gösterilecek mesaj. |
require-resource-pack | true / false | true ise paketi reddeden oyuncu sunucudan atılır. |
resource-pack-id | UUID | 1.20.3 ile geldi; pakete sabit kimlik verir. Tek paket kullanıyorsanız boş bırakabilirsiniz. |
Bu dosyadaki diğer tüm anahtarların ne işe yaradığını server.properties tam ayar listesi sayfasında bulabilirsiniz. Değişiklikten sonra sunucuyu yeniden başlatın; konsol komutlarıyla yapılan reload bu ayarları tazelemez.
Zorunlu Paket Kullanmak Mantıklı mı?#
require-resource-pack=true ayarı, özel item modelleri, kendi GUI’si ya da özel font kullanan sunucular için gereklidir. Paketi olmayan oyuncu, custom model data ile üretilmiş bir eşyayı sadece “boyalı kitap” olarak görür ve sunucu deneyimi bozulur.
Buna karşılık zorunlu paket, ilk giriş sırasında ek bir engel oluşturur. Pratikte işe yarayan yaklaşım şudur:
Zorunlu tutun#
- Özel eşya modelleri, custom GUI, özel menü kullanıyorsanız
- Roleplay ya da mini oyun sunucusu işletiyorsanız
- Paket 20 MB’ın altındaysa
İsteğe bağlı bırakın#
- Paket yalnızca estetik doku değişikliği yapıyorsa
- Survival sunucusu işletiyor ve yeni oyuncu akışına öncelik veriyorsanız
- Paket boyutu büyükse ve düşük bağlantılı oyuncularınız varsa
resource-pack-prompt alanına yazdığınız JSON metin bileşeni, kabul ekranındaki açıklamayı değiştirir. Bu alan geçerli bir JSON olmalıdır; tırnak işaretlerini kaçırırsanız sunucu açılışta uyarı basar ve varsayılan metni gösterir. Türkçe karakter kullanabilirsiniz, dosyanın UTF-8 kaydedildiğinden emin olun.
Paketi Güncelleme ve Önbellek Sorunu#
Doku paketini güncelleyip aynı adrese aynı adla yüklerseniz, oyuncuların bir kısmı yeni paketi görmez. İstemci, indirdiği paketleri hash değerine göre saklar; adres ve hash aynı kaldığı sürece yeniden indirme yapmaz.
Doğru güncelleme akışı şu şekildedir:
-
Yeni sürüme farklı bir dosya adı verin#
pack-v3.zipyerinepack-v4.zipgibi. Eski dosyayı bir süre daha sunucuda bırakın; bağlantı kopan oyuncular eski adresi yeniden deneyebilir. -
Yeni SHA-1 değerini üretin#
sha1sum pack-v4.zip -
İki satırı birlikte güncelleyip yeniden başlatın#
resource-packveresource-pack-sha1satırlarını aynı anda değiştirin. Sadece birini değiştirmek, en sık görülen “paket indirilemedi” hatasının kaynağıdır.
pack.sunucunuz.com) paketin adresi IP değişikliklerinden etkilenmez. Alan adı yönlendirmeleri için Minecraft sunucusuna domain bağlama ve DNS kayıtları sayfalarına göz atın.Eklentilerle Gelişmiş Kullanım#
server.properties tek bir global paket tanımlar. Dünyaya, gruba ya da oyuncuya göre farklı paket göndermek istiyorsanız eklenti tarafına geçmeniz gerekir. Paper API’si Player nesnesi üzerinden paket gönderme metotları sunar; bu sayede bir eklenti, oyuncu belirli bir dünyaya girdiğinde farklı bir paket yollayabilir.
Tipik kullanım senaryoları:
- Mini oyun başına paket: Oyuncu lobiden arena dünyasına geçtiğinde arenaya özel paket gönderilir.
- Yetki grubuna göre paket: LuckPerms grubuna bağlı olarak VIP oyunculara ek kozmetik doku paketi verilir.
- Menü ve arayüz paketleri: Özel GUI dokuları yalnızca ilgili menüyü açan oyunculara yüklenir.
Kendi paket yönetim eklentinizi yazmak isterseniz Java ile Minecraft eklentisi geliştirme rehberi başlangıç için yeterli temeli veriyor. Hazır çözümler için 2026 eklenti listesine bakabilirsiniz.
Bedrock ve Geyser tarafı#
Geyser ile Bedrock oyuncularını kabul eden bir sunucu işletiyorsanız, Java biçimindeki resource pack Bedrock istemcilerine hiçbir şey ifade etmez. Bedrock için ayrı bir paket hazırlanır ve Geyser’ın packs klasörüne konur. İki platformda görsel bütünlük istiyorsanız paketi iki formatta üretmeyi baştan planlayın. Bedrock tarafındaki kurulum ayrıntıları için Minecraft PE / Bedrock sunucu kurulumu sayfasına bakın.
Sık Karşılaşılan Hatalar ve Çözümleri#
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Failed to download resource pack | Adres doğrudan dosyaya gitmiyor | Gizli sekmede test edin; sayfa açılıyorsa adres yanlış |
| Paket indi ama uygulanmadı | ZIP kökünde pack.mcmeta yok | Klasörü değil, klasörün içindekileri sıkıştırın |
| Hash mismatch / geçersiz paket | SHA-1 değeri dosyayla uyuşmuyor | Yüklenmiş dosya üzerinden hash’i yeniden üretin |
| Oyuncular sunucuya hiç giremiyor | require-resource-pack=true + bozuk adres | Geçici olarak false yapıp adresi düzeltin |
| Bazı oyuncularda eski doku görünüyor | İstemci önbelleği | Dosya adını ve hash’i birlikte değiştirin |
| Incompatible pack uyarısı | Yanlış pack_format | Sürüme uygun değeri yazın veya supported_formats aralığı verin |
| SSL/sertifika hatası | HTTPS sertifikası geçersiz veya süresi dolmuş | Sertifikayı yenileyin; zincir eksikse tamamlayın |
Sunucu konsolunda görünen istisnaları okumakta zorlanıyorsanız Minecraft sunucu hataları ve çözümleri sayfası genel bir teşhis akışı sunuyor.
Bant Genişliği ve Donanım Tarafı#
Resource pack, oyun sunucusunun değil web sunucusunun yükünü artırır. 30 MB’lık bir paketi günde 500 kez indirmek yaklaşık 15 GB trafik demektir. Paketi oyun sunucunuzla aynı makinede yayınlıyorsanız bu trafik oyun portuyla aynı hattı paylaşır ve yoğun saatlerde ping’i etkileyebilir.
Pratik öneri: paketi ayrı bir web hosting hesabından ya da sunucunun ayrı bir sanal ana bilgisayarından servis edin, 1 Gbit port kullanın. Oyun sunucusu tarafında ise doku paketi RAM tüketimini artırmaz; asıl belirleyici oyuncu sayısı ve eklenti yüküdür.
| Oyuncu sayısı | RAM | İşlemci | Disk |
|---|---|---|---|
| 2-10 oyuncu, hafif eklentili | 8 GB | AMD Ryzen 9 7900X | 50 GB NVMe SSD |
| 10-30 oyuncu, özel paketli Paper | 10-12 GB | AMD Ryzen 9 7900X | 50 GB NVMe SSD |
| 30-60 oyuncu, mini oyun / çok dünyalı | 16 GB | AMD Ryzen 9 7950X | 100 GB NVMe SSD |
| 60+ oyuncu veya proxy’li sunucu ağı | 32 GB ve üzeri | AMD Ryzen 9 7950X | 100 GB+ NVMe SSD |
Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için çekirdek sayısı değil saat hızı belirleyicidir; bu yüzden yüksek frekanslı Ryzen işlemciler tercih edilir. Ayrıntılı seçim kriterleri için Minecraft sunucusu için doğru donanım seçimi sayfasına bakabilir, hazır paketleri Minecraft sunucu paketleri sayfasından karşılaştırabilirsiniz.
Özetle#
Resource pack eklemek teknik olarak iki satırlık bir iştir, ama işi bozan ayrıntılar bellidir: paketin ZIP kökünde pack.mcmeta bulunmalı, adres doğrudan dosyaya gitmeli, SHA-1 değeri boşluksuz ve dosyanın son hâline ait olmalı, güncelleme yaparken dosya adı ile hash birlikte değişmelidir. Zorunlu paket kullanacaksanız boyutu düşük tutun; 50 MB üzerindeki paketler yeni oyuncu kaybettirir.
Kurulumu tamamladıktan sonra farklı bir hesapla sunucuya girip paketin gerçekten indiğini ve uygulandığını test edin. Sorun yaşarsanız önce adresi gizli sekmede, sonra hash’i curl … | sha1sum ile doğrulayın; vakaların büyük çoğunluğu bu iki kontrolde çözülür.