Minecraft datapack kurulumu, sunucunuzu mod veya plugin kurmadan özelleştirmenin en pratik yoludur: indirdiğiniz .zip dosyasını dünya klasörünüzün içindeki datapacks klasörüne atar, /reload komutunu çalıştırırsınız ve paket devreye girer. Vanilla Minecraft’ın kendi özelliği olduğu için ne istemciye bir şey kurulur ne de sunucu yazılımı değiştirilir.
Datapack (Türkçesiyle veri paketi) oyunun veri katmanını değiştirir: crafting tarifleri, ganimet tabloları, ilerlemeler (advancement), etiketler, fonksiyonlar, boyutlar ve dünya üretimi. Kod içermez, JSON ve .mcfunction dosyalarından oluşur. Bu sayede sürüm geçişlerinde modlar ve NMS kullanan eklentiler kadar kolay kırılmaz.
Bu rehberde datapack’in nereye kurulduğunu, /datapack komutlarını, paket yapısını, sıfırdan basit bir datapack yazmayı ve en sık karşılaşılan kurulum sorunlarını adım adım anlatıyoruz.
Datapack Nedir? Mod ve Plugin’den Farkı#
Üç kavram sık karıştırılıyor ve yanlış seçim yapılan sunucularda gereksiz yük veya uyumsuzluk doğuruyor. Aradaki fark şu:
| Özellik | Datapack | Plugin | Mod |
|---|---|---|---|
| Nereye kurulur | Dünya klasörü | plugins klasörü | Sunucu + istemci |
| Ek yazılım gerekir mi | Hayır, vanilla yeter | Paper / Spigot / Purpur | Forge / NeoForge / Fabric |
| Oyuncu bir şey kurar mı | Hayır | Hayır | Evet, birebir aynı paketi |
| Yeni blok / item ekleyebilir mi | Hayır (yalnız varyasyon) | Sınırlı | Evet |
| Sürüm geçişinde kırılma | Düşük (JSON şeması değişirse) | Orta | Yüksek |
| Tipik kullanım | Tarif, ganimet, dünya üretimi, QoL | Yetki, ekonomi, koruma | Yeni içerik, makineler |
Datapack’in en büyük avantajı, 26.1 ile gelen unobfuscation kırılmasından etkilenmemesidir. Mojang’ın obfuscated sunucu jar’ını bırakması modları ve NMS kullanan eklentileri yeniden derlemeye zorladı; datapack’ler ise derlenmiş kod içermediği için bu değişiklikten doğrudan etkilenmedi. Ayrıntı için yeni sürüm numaralandırması sayfasına bakabilirsiniz.
Datapack Nereye Kurulur?#
Datapack dünya bazlıdır, sunucu bazlı değil. Yani sunucu klasörünün köküne değil, etkin olmasını istediğiniz dünyanın klasörüne kurulur. Varsayılan dizin yapısı şöyledir:
minecraft-sunucu/
├── server.jar
├── server.properties
├── eula.txt
└── world/ <-- level-name değeri
├── level.dat
├── region/
├── playerdata/
└── datapacks/ <-- datapack buraya
├── benim-paketim.zip
└── acik-klasor-paketi/
├── pack.mcmeta
└── data/
Dünya klasörünün adı server.properties içindeki level-name değeriyle belirlenir. Varsayılan world’dür; değiştirdiyseniz yol da değişir. Bu ve benzeri anahtarların tam listesi için server.properties ayarları sayfasını inceleyin.
level-name=world
# Bu değer 'survival-dunya' olsaydı datapack yolu şu olurdu:
# survival-dunya/datapacks/
world/DIM-1, world/DIM1). Datapack’i yalnızca ana dünya klasörüne kurmanız yeterlidir, boyutlara ayrı ayrı kopyalamayın.Zip mi klasör mü?#
İkisi de çalışır. Zip kullanacaksanız pack.mcmeta ve data klasörü arşivin kökünde olmalıdır. En sık yapılan hata, paketi zipleyip içine bir üst klasör koymaktır; bu durumda Minecraft paketi görmez. Arşivi açtığınızda ilk gördüğünüz şey pack.mcmeta ise doğru yapıdadır.
Adım Adım Datapack Kurulumu#
-
Datapack’i doğru sürüme göre indirin#
Modrinth veya CurseForge sayfasındaki desteklenen Minecraft sürümü etiketini kontrol edin. Sunucunuz 26.2 çalıştırıyorsa 1.20 için yayınlanmış bir paket büyük olasılıkla uyarı verecek veya hiç yüklenmeyecektir.
-
Dosyayı sunucuya yükleyin#
Panelden dosya yöneticisiyle, FTP/SFTP istemcisiyle veya doğrudan sunucu üzerinden kopyalayın. Hedef yol her zaman
<level-name>/datapacks/klasörüdür. İşletim sistemine özgü dosya aktarım adımları için Windows veya Linux kurulum sayfalarına bakabilirsiniz. -
Datapack’leri yeniden yükleyin#
Sunucu konsolunda veya OP yetkisiyle oyun içinde:
/reloadKonsolda komutu
/olmadan da yazabilirsiniz. Komutun çalışması için oyun içinde en az 2. seviye yetki gerekir; yetki verme için OP ve yetki yönetimi sayfasına bakın. -
Yüklendiğini doğrulayın#
/datapack list /datapack list enabled /datapack list availablePaket
enabledlistesindefile/benim-paketim.zipbiçiminde görünmelidir.availablelistesindeyse yüklenmiş ama etkinleştirilmemiş demektir. -
Gerekirse elle etkinleştirin#
/datapack enable "file/benim-paketim.zip" /datapack disable "file/eski-paket.zip"Tırnak işaretleri, ad boşluk içeriyorsa zorunludur. Alışkanlık hâline getirmek en güvenlisidir.
-
Dünya üretimi değiştiren paketlerde sunucuyu yeniden başlatın#
Biyom, yapı veya boyut ekleyen datapack’lerde
/reloadyetmez. Sunucuyustopkomutuyla düzgün kapatın ve yeniden başlatın.
İndirmeniz Gereken Araçlar#
-
Modrinth — datapack arşiviÖnerilenAç
-
CurseForge — Data Packs bölümüAç
-
7-Zip — arşiv oluşturma ve açmaİndir
-
Notepad++ — JSON ve mcfunction düzenlemeİndir
Bağlantılar resmî kaynaklara gider. Datapack’leri tanımadığınız paylaşım sitelerinden indirmeyin; zip içine gizlenmiş bozuk JSON dosyaları dünyanızın yüklenmesini engelleyebilir.
/datapack Komutları ve Yükleme Sırası#
Birden fazla datapack aynı tarifi veya ganimet tablosunu değiştiriyorsa hangisinin kazanacağını yükleme sırası belirler. Sonra yüklenen, önce yükleneni ezer. Sırayı komutla kontrol edebilirsiniz:
/datapack enable "file/paket-a.zip" first
/datapack enable "file/paket-b.zip" last
/datapack enable "file/paket-c.zip" before "file/paket-a.zip"
/datapack enable "file/paket-d.zip" after "file/paket-b.zip"
- first
- Listenin en başına alır, diğer tüm paketler bunu ezebilir.
- last
- Listenin en sonuna alır; çakışmalarda bu paket kazanır.
- before / after
- Belirli bir paketin öncesine veya sonrasına yerleştirir.
Yeni dünya oluşturulurken hangi paketlerin baştan etkin olacağını server.properties üzerinden de belirleyebilirsiniz:
initial-enabled-packs=vanilla
initial-disabled-packs=
Bu iki anahtar yalnızca dünya ilk oluşturulurken okunur; var olan bir dünyada değişiklik yapmaz. Konsoldan çalıştırabileceğiniz diğer yönetim komutları için sunucu konsol komutları sayfasına göz atın.
Datapack Yapısı: pack.mcmeta ve Klasör Düzeni#
Her datapack’in kökünde pack.mcmeta adında bir JSON dosyası bulunur. Minecraft paketi bu dosyaya bakarak tanır:
{
"pack": {
"description": "Batihost örnek veri paketi",
"pack_format": 88,
"supported_formats": { "min_inclusive": 80, "max_inclusive": 95 }
}
}
pack_format değeri neredeyse her Minecraft sürümünde değişir. Yukarıdaki sayılar örnektir; kullandığınız sürümün doğru değerini paketin yayınlandığı sayfadan ya da minecraft.wiki’nin ilgili sürüm sayfasından doğrulayın. Yanlış değer, paketin “eski/yeni sürüm için” uyarısıyla yüklenmemesine yol açar.supported_formats alanı 1.20.2 ile geldi ve bir aralık tanımlamanıza izin verir. Tek bir pack_format yerine aralık kullanmak, paketinizin birden fazla sürümde uyarısız çalışmasını sağlar.
1.21 ile gelen tekil klasör adları#
1.21 sürümünde datapack klasör adları çoğuldan tekile çevrildi. Eski rehberlerdeki yollar bu yüzden artık çalışmaz. Güncel karşılıklar:
| Eski (1.20.6 ve öncesi) | Yeni (1.21 ve sonrası, 26.x dahil) |
|---|---|
| data/<ns>/functions/ | data/<ns>/function/ |
| data/<ns>/recipes/ | data/<ns>/recipe/ |
| data/<ns>/loot_tables/ | data/<ns>/loot_table/ |
| data/<ns>/advancements/ | data/<ns>/advancement/ |
| data/<ns>/predicates/ | data/<ns>/predicate/ |
| data/<ns>/tags/functions/ | data/<ns>/tags/function/ |
Sıfırdan Basit Bir Datapack Yazma#
Datapack yazmak için tek ihtiyacınız bir metin düzenleyici. Aşağıda sunucuya giren oyuncuya hoş geldin mesajı basan ve yeni bir crafting tarifi ekleyen minik bir paket kuruyoruz.
1. Klasör iskeletini oluşturun#
world/datapacks/batihost/
├── pack.mcmeta
└── data/
├── minecraft/
│ └── tags/
│ └── function/
│ └── load.json
└── batihost/
├── function/
│ └── hosgeldin.mcfunction
└── recipe/
└── at_zirhi.json
2. Yükleme fonksiyonunu bağlayın#
data/minecraft/tags/function/load.json dosyası, datapack yüklendiğinde çalışacak fonksiyonları listeler:
{
"values": [
"batihost:hosgeldin"
]
}
data/batihost/function/hosgeldin.mcfunction içeriği düz metindir, her satır bir komuttur:
# Batihost örnek datapack
say Batihost veri paketi yuklendi.
scoreboard objectives add oyuncuOlum deathCount
gamerule announceAdvancements true
3. Özel tarif ekleyin#
data/batihost/recipe/at_zirhi.json dosyası, oyunda üretilemeyen demir at zırhı için bir tarif tanımlar:
{
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
" I",
"III",
"I I"
],
"key": {
"I": "minecraft:iron_ingot"
},
"result": {
"id": "minecraft:iron_horse_armor",
"count": 1
}
}
id anahtarıyla yazılır. Daha eski sürümlerde malzemeler {"item": "minecraft:iron_ingot"} nesnesi, sonuç ise item anahtarı ile tanımlanıyordu. Eski bir rehberden kopyaladığınız tarif çalışmıyorsa ilk bakacağınız yer burasıdır.4. Test edin#
/reload
/datapack list enabled
/function batihost:hosgeldin
Her tick çalışan mantık kurmak isterseniz aynı yöntemle data/minecraft/tags/function/tick.json dosyası oluşturursunuz. Fonksiyon tabanlı mantık yerine daha okunaklı bir script diline geçmek isterseniz Skript rehberi iyi bir alternatiftir.
Sunucular İçin Önerilen Datapack’ler#
Aşağıdaki paketler Modrinth ve CurseForge üzerinde bulunabilir. Her birini kurmadan önce sunucu sürümünüzle uyumunu kontrol edin.
Dünya üretimi#
- Terralith — Vanilla tarzını bozmadan yüzlerce yeni biyom ekler. Survival sunucularında en çok tercih edilen dünya üretimi paketi.
- Incendium — Nether’i yeniden tasarlar, yeni yapılar ve boss karşılaşmaları getirir.
- Nullscape — End boyutunu genişletir, monoton ada yapısını kırar.
- Structory — Haritaya küçük, atmosferik ve ödülsüz yapılar serpiştirir; keşif odaklı sunucularda dengeyi bozmaz.
Oyun kalitesi (QoL)#
- Çoklu uyku — Gecenin geçmesi için tüm oyuncuların uyuması gerekmez; yüzde eşiği belirlersiniz. Kalabalık survival sunucularında neredeyse zorunludur.
- Mezar sistemi — Ölen oyuncunun eşyaları yerde dağılmak yerine bir sandıkta toplanır. Eşya kaybı şikâyetlerini büyük ölçüde bitirir.
- Daha fazla mob kafası — Öldürülen yaratıklardan kafa düşürür, dekorasyon ekonomisi yaratır.
- Koordinat göstergesi — Action bar üzerinde koordinat gösterir, yeni oyuncuların kaybolmasını engeller.
Sık Karşılaşılan Sorunlar ve Çözümleri#
Paket /datapack list çıktısında hiç görünmüyor#
Dosya yanlış klasörde. Sunucu kökündeki datapacks klasörü değil, dünya klasörünün içindeki klasör kullanılır. level-name değerini kontrol edin. Zip kullanıyorsanız pack.mcmeta dosyasının arşiv kökünde olduğundan emin olun.
“Pack is not compatible / made for a newer version of Minecraft”#
pack_format değeri sunucu sürümüyle uyuşmuyor. Paketin doğru sürümünü indirin. Kendi paketinizse supported_formats aralığını genişletin. Bu uyarı sunucuyu düşürmez ama paket etkinleşmez.
Datapack yüklendi ama tarif çalışmıyor#
JSON şeması değişmiş olabilir. Özellikle 1.20.5 ve 1.21.2 sürümleri tarif biçimini değiştirdi. Ayrıca aynı çıktıyı üreten başka bir datapack veya plugin tarifi geçersiz kılıyor olabilir; yükleme sırasını last ile değiştirip test edin.
Dünya yüklenmiyor, sunucu açılışta düşüyor#
Bozuk JSON’lu bir dünya üretimi datapack’i genellikle bu sonucu verir. Sunucuyu durdurun, ilgili zip’i datapacks klasöründen çıkarın ve yeniden başlatın. Bu senaryo, datapack denemeden önce yedek almanın en açık gerekçesidir; yedekleme akışı için sunucu yedekleme rehberine bakın.
/reload sonrası sunucu takılıyor#
Çok sayıda datapack ve büyük fonksiyon dosyası varsa /reload tüm veri kayıtlarını yeniden okur ve bu işlem ana thread’i kilitler. Kalabalık saatlerde /reload çalıştırmayın; planlı yeniden başlatma tercih edin.
Performans ve Bakım Notları#
Datapack’lerin çoğu sadece veri tanımladığı için sunucu yükü yaratmaz. Tek istisna, minecraft:tick etiketine bağlanan fonksiyonlardır: bunlar saniyede 20 kez çalışır. Şu üç kural tick tabanlı paketlerde işi kurtarır:
- Geniş seçicilerden kaçının.
@e[type=...]gibi daraltılmış seçiciler kullanın; çıplak@etüm varlıkları tarar. - Sayaç kullanın. Her tick yerine her 20 tick’te bir çalışması yeterli olan mantığı scoreboard sayacıyla seyreltin.
- Ölçün. spark profiler raporunda datapack fonksiyonları ayrı satırlarda görünür; şüphelendiğiniz paketi devre dışı bırakıp raporu karşılaştırın.
Genel tick ve TPS iyileştirmeleri için sunucu optimizasyonu rehberini kullanabilirsiniz. Datapack’leri rahatça deneyebileceğiniz, yüksek saat hızlı Ryzen işlemcili ve NVMe diskli bir altyapı arıyorsanız Minecraft sunucu paketlerini inceleyebilirsiniz.
Datapack mı, Plugin mi, Mod mu?#
Karar vermek için tek soru yeterli: oyuncunun istemcisinde yeni bir şey görünmesi gerekiyor mu?
- Yeni blok, yeni item, yeni makine gerekiyorsa mod şart. Hazır paketler için en iyi modpackler listesine bakın.
- Yetki sistemi, ekonomi, bölge koruma, anti-cheat gibi sunucu yönetimi işleri plugin işidir.
- Tarif değişikliği, ganimet dengesi, özel ilerlemeler, dünya üretimi ve küçük QoL dokunuşları datapack ile daha temiz çözülür.
Üçü aynı sunucuda birlikte de kullanılabilir. Paper üzerinde plugin ve datapack birlikte sorunsuz çalışır; mod eklemek istediğinizde ise Forge/Fabric tarafına geçmeniz ve plugin’lerden vazgeçmeniz gerekir.
Özetle#
Datapack kurulumu tek cümleye sığar: zip dosyasını world/datapacks/ klasörüne atın, /reload yazın, /datapack list enabled ile doğrulayın. İşin inceliği ayrıntılarda: dünya klasörünün adı level-name değerine bağlıdır, pack.mcmeta arşivin kökünde olmalıdır, pack_format sürümünüzle uyuşmalıdır ve 1.21 ile klasör adları tekile döndüğü için eski rehberlerdeki yollar artık çalışmaz.
Dünya üretimini değiştiren paketleri mutlaka dünya oluşturulmadan önce kurun, tick tabanlı fonksiyonları ölçmeden çoğaltmayın ve her datapack denemesinden önce yedek alın. Bu üç alışkanlıkla datapack’ler, sunucunuzu mod yükü getirmeden zenginleştirmenin en ucuz ve en dayanıklı yolu olarak kalır.