Modlama:Mod Rehberi/API'ler/Manifest

Stardew Valley Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

SMAPI Modları Oluşturma SMAPI mascot.png


Modlama:İndeks

Her SMAPI modunun veya içerik paketinin klasöründe bir manifest.json dosyası bulunmalıdır. SMAPI, bu dosya ile modu tanımlar ve yükler, güncelleme kontrolleri yapar. Ayrıca manifest bilgilerine koddaki her mod erişebilir (modun manifest'i için this.ModManifest veya diğer modların manifest'leri için mod kaydı kullanarak).

Temel Örnekler

Temel format şu şekildedir (her alanın detayları için aşağıya göz atın):

SMAPI modları için İçerik paketleri için
{
    "Name": "Projenizin İsmi",
    "Author": "İsminiz",
    "Version": "1.0.0",
    "Description": "Mod hakkında bir iki cümle.",
    "UniqueID": "İsminiz.Projenizinİsmi",
    "EntryDll": "DllDosyaAdı.dll",
    "UpdateKeys": []
}
{
    "Name": "Projenizin İsmi",
    "Author": "İsminiz",
    "Version": "1.0.0",
    "Description": "Mod hakkında bir iki cümle.",
    "UniqueID": "İsminiz.Projenizinİsmi",
    "UpdateKeys": [],
    "ContentPackFor": {
        "UniqueID": "Pathoschild.ContentPatcher"
    }
}

Alanlar

Temel Alanlar

Tüm modlarda bu alanlar bulunmalıdır.

Alan Açıklama
Name Modun ismidir. SMAPI, bu alanı oyuncu mesajları, konsol mesajları ve hatalar için kullanır. Örnek:
"Name": "Ananas Şapkası"
Author Modu oluşturan kişinin ismidir. Genelde modları yayınlarken kullanılan kullanıcı adı kullanılır. Örnek:
"Author": "Peaw"
Version Modun semantik sürümüdür. Her güncellemenin ardından bunu güncellemeyi unutmayın! SMAPI, bu alanı güncelleme kontrollerini, mod bağımlılıklarını ve uyumsuzluk listelerini kontrol etmek için kullanılır. Örnek:
"Version": "1.0.0"
"Version": "1.0.1-beta.2"
Description Bir iki cümlede modunuzun kısa bir açıklamasıdır, SMAPI konsolunda gözükür. Örnek:
"Description": "Kafanıza ananas koyabilmenizi sağlar."
UniqueID Modunuz için özel bir tanımlayıcıdır. Önerilen format boşluk veya özel karakter barındırmayacak şekilde <isminiz>.<mod ismi> şeklindedir. SMAPI, bu alanı güncelleme kontrollerini, mod bağımlılıklarını ve uyumsuzluk listelerini kontrol etmek için kullanılır. Başka bir modun bu moda referans sağlaması gerektiğinde özel bir ID kullanır. Bu sebeple modunuzu yayınladıktan sonra modun sonraki sürümlerinde bu ID'yi değiştirmemeniz gerekir. Örnek:
"UniqueID": "Peaw.AnanasSapkasi"
EntryDll veya ContentPackFor

Her modda EntryDll (SMAPI modları için) veya ContentPackFor (içerik paketleri için) dosyası bulunamlıdır. Bunlar türüne özeldir ve ikisini de giremezsiniz.

SMAPI modları için EntryDll, modun klasöründeki modun derlenmiş DLL dosya adıdır. Örnek:
"EntryDll": "AnanasSapkasi.dll"

İçerik paketleri için ContentPackFor, hangi modların bu modu okuyabileceğini belirler. MinimumVersion ise isteğe bağlıdır. Örnek:

"ContentPackFor": {
   "UniqueID": "Pathoschild.ContentPatcher",
   "MinimumVersion": "1.0.0"
}

Minimum SMAPI veya Oyun Sürümü

MinimumApiVersion ve MinimumGameVersion alanlarında bu modun kullanabilmesi için gereken minimum SMAPI veya Stardew Valley sürümü belirlenir. Bir oyuncu modu eski bir sürümle kullanmaya çalışırsa güncellemeleri gerektiği hakkında bir mesaj gönderilir.

Örnek:

"MinimumApiVersion": "4.0.0"

Bağlılıklar

Dependencies alanı ile bu modun çalışması için bağlı olduğu diğer mod gereksinimleri belirlenir. Bir oyuncu modu, bağlı olduğu modları indirmeden kullanmaya çalışırsa mod çalışmayacak ve bu modları indirmeleri gerektiği hakkında bir mesaj alırlar. Örnek:

"Dependencies": [
   {
      "UniqueID": "SMAPI.ConsoleCommands",
      "MinimumVersion": "3.8.0" // isteğe bağlıdır, belirtilirse eski sürümler gereksinimi karşılamaz.
   }
]

İsteğe bağlı bir gerekli mod da koyabilirsiniz. Yüklenmişse bununla çalışacak ama yüklenmemişse de sadece yok sayılacak.

"Dependencies": [
   {
      "UniqueID": "SMAPI.ConsoleCommands",
      "IsRequired": false
   }
]

Güncelleme Kontrolleri

SMAPI, modunuzun yeni güncellemelerini tespit edip oyuncuyu uyarabilir. Bunu manifest.json dosyasındaki UpdateKeys alanını ayarlayarak SMAPI'nin nereyi kontrol etmesi gerektiğini ayarlayabilirsiniz.

Daha fazla bilgi için Güncelleme Kontrolleri'ni inceleyin.

Özelleştirilmiş Alanlar

⚠️ Çoğu modda bu alanlar kullanılmamalıdır.

Private assemblies

Bu kısımdakiler, SMAPI'in gelecek 4.1.0 sürümü için belirtilmiştir ve bilgiler değişebilir.
Özel kurulum (private assembly), yalnızca bir modun referans gösterebildiği bir DLL'dir. Modun tasarlandığı sürüme sahip olduğundan emin olur ve diğer modların aynı kurulumda diğer sürümleri kullanabilmesini sağlar. SMAPI veya başka bir mod tarafından başka bir kurulum yüklenmişse bile kullanılabilir.

Uyarılar:

  • Bir DLL'nin her özel kopyasında ayrı statik değerler bulunur. Global durum paylaşması gereken kurulumlar (örn. Harmony) için bunu kullanmayın.
  • DLL, mod klasörünüzde olmalıdır.

Kurulum ismini (sürüm, culture ve özel key olmadan) belirtin. Örnek:

"PrivateAssemblies": [
   {
      "Name": "Newtonsoft.Json"
   }
]

Genelde bir hata olacak şekilde; SMAPI, DLL'e gösterilen bir referans tespit etmezse bir uyarı girişi yapar. Kasıtlıysa (örn. Reflection ile erişiliyorsa) bu uyarı kapatılabilir:

"PrivateAssemblies": [
   {
      "Name": "Newtonsoft.Json",
      "UsedDynamically": true // önerilmez -- yalnızca DLL'e özel bir yol ile erişilmişse belirlenir
   }
]

Diğer Şeyler

Diğer bütün alanlar ise mod kaydı ile mümkün olan IManifest.ExtraFields aracında depolanır. Ekstra alanlar, SMAPI tarafından görmezden gelinir ancak diğer modlar için var olan gelişmiş metaveri için kullanışlı olabilir.