Veri paketi yüklenmiyor mu? Klasör yapısı ve eşleşmesi gereken üç isim
/datapack list komutunda görünmeyen bir veri paketinin sorunu kodda değil, yoldadır. İşte tam ağaç yapısı, ad alanı kuralı ve yeniden adlandırılan klasörler.
/datapack list hiçbir şey göstermiyor ya da paketi devre dışı olarak gösteriyor. Neredeyse her zaman JSON dosyası sorunsuzdur, klasörler yanlıştır.
Ağaç yapısı
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
Üç ismin hizalanması gerekir ve bunlardan biri pek açık değildir:
- Paket kökündeki
pack.mcmeta—data/yanında, içinde değil. data/<namespace>/— ad alanınız, küçük harfle, boşluksuz.my_namespace:my_functioniçindeki önek bu olur.- Kategori klasörü adları — bunlar değişti ve asıl suçlu genellikle bunlardır.
Klasörler tekil hâle getirildi
Bu, birçok paketi ve birçok eğitimi bozdu:
| Eski | Güncel |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
Çoğul adları kullanan bir paket yüklenir — /datapack list içinde görünür — ve hiçbir şey yapmaz; bu, grubun en kafa karıştırıcı hata biçimidir. tags/ çoğul kaldı, ancak içindeki klasörler diğer her şeyle birlikte tekile döndü — tags/functions/ artık tags/function/. Evet, bu tutarsız.
Bir şeyi otomatik çalıştırma
İki özel etiket:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
Dikkat: data/minecraft/, kendi ad alanınız değil — etiket Minecraft'a aittir, işaret ettiği fonksiyonlar size aittir:
{ "values": ["my_namespace:setup"] }
Sırayla teşhis
/datapack list— paket hiç listede yoksapack.mcmetaeksik, bozuk ya da bir seviye fazla derindedir.- Listede ama devre dışı —
/datapack enable "file/my_pack".file/önekine ve tırnak işaretlerine dikkat edin. - Listede ve etkin ama etkisiz — çoğul klasör adları ya da
minecraftyerine kendi ad alanınızda bir yükleme etiketi. /reloadve günlüğü okuyun (logs/latest.logya da başlatıcı çıktısı). Söz dizimi hatası olan bir fonksiyon orada "Failed to load function …" ile düşürülür; sohbet yalnızca yeniden yüklemenin bittiğini söyler.
Sıkıştırılmış mı, değil mi
İkisi de çalışır. Sıkıştırılmış, pack.mcmeta zip kökünde olması demektir; tıpkı kaynak paketlerdeki gibi. Klasör biçimi geliştirme sırasında daha kolaydır çünkü /reload düzenlemeleri yeniden zip'lemeden alır.
Sunucuya yerleştirme
Bir sunucuda yol <world>/datapacks/ olur; burada <world>, server.properties içindeki level-name değeridir — sunucu kökü değil. Paketi sunucu klasörüne bırakmak, sunucu tarafındaki en yaygın hatadır.
Güncel klasör adlarıyla ve geçerli bir pack.mcmeta ile bir paket oluşturun, ardından Datapack Studio ile doğrudan bırakmaya hazır hâlde indirin — ve yükleme etiketinizi yukarıdaki gibi data/minecraft/tags/function/ içine koyun.