En iyi pratikler

Bir eklenti yaratmanın birçok yolu vardır ve dikkatsiz bir geliştirici için birçok tuzaklar vardır. Burada, Sponge API’sinden en iyi şekilde yararlanacak ve uyumluluk açısından makul sınırlar belirleyecek olan eklenti geliştirme uygulamalarını açıklıyoruz. Bu bilgiler, Sponge projesi olgunlaştıkça değişebilir ve genişleyebilir.

Eklenti geliştirme rehberi

Aşağıdaki talimatlar Sponge eklentisi geliştiricilere yardımcı olmak için hazırlanmıştır. Bu, kesin veya kapsamlı bir liste değil, yalnızca eklenti geliştirme sırasında ortaya çıkabilecek bazı sorunları ayrıntılı bir şekilde ortaya koyma girişiminde bulunmak ve en iyi çözümleri önermektir.

Not

Resmi SpongePowered eserleri için Sponge kullanımın haklarını rezerve ederiz. (1) eklentiniz öncelikli olarak Sponge minecraft bloğuyla ilgili değilse veya (2) eklentinizin diğer API’ler için de sürümleri olmadığı sürece, Sponge ‘u eklentinizin bir parçası olarak kullanmayın. (Bu durumda “for Sponge” başlıklı yazıyı okuyun).

Economy API

The Economy API’si ekonomi eklentilerini ekonomiyi kullanan diğer eklentilerle (diğer bir deyişle mağazalar) bağlantılandırmak için kullanılır. Economy API’yı hakkında bilmeniz gereken her şeyi ayrıntılarıyla buradan okuyabilirsiniz here.

Paketler

Paketleri yakalamak veya özel öğeleri / blokları / varlıkları / vs tanıtmakla yapmak için yapılacak herhangi bir şey, Sponge API’sinin bir parçası olmak için planlanmamıştır *. Var olan Sponge API’siyle elde edilebilecek bir çözüm olabileceğinden, paketleri kullanmanın problemi yanlış anlamış olabileceğini unutmayın. Bazı durumlarda Sünger API’sine ihtiyaç duyulan her şeyi eklemek mümkündür; Aksi takdirde, alternatif Forge API’sını kullanmak ve onun yerine bir Mod oluşturmaktır.

Forge veya NMS sınıflarının kullanımı

Sponge API’si için bir mod ile uyumluluk sağlamadıkça, Forge veya Minecraft taban sınıflarıyla çalışmayı kesinlikle tavsiye etmiyoruz. Eklentilerdeki NMS (net.minecraft.server) kodunun çoğu kullanımı sorunsuz bir şekilde başarısız olmaz ve sorun gidermeyi çok zorlaştırır. NMS değişikliklerini yapmak Sponge API’sini kullanmaktan daha zordur. Kod içlerini kullanarak Sponge API’sine eklenen modların, Sponge eklentileri tarafından kullanılabilmesi için, temel Minecraft koduna güvenmeyen bir API özel olarak yazılması gerekecektir. Bununla birlikte, altta yatan uygulama (SpongeForge veya SpongeVanilla) ile etkileşim kurmak için ayrı “uyumluluk” modülleri yükleyen eklentiler oluşturulabilir.

Uygulamaya özel kodu kullanan eklentiler sürümler arasında kırılma ihtimalinin çok yüksektir ve barındırıldıkları her yerde açıkça etiketlenmelidir. Bunlar “Mods” olarak daha uygun etiketlenebilir.

Mixins

Mixins, diğer modların/eklentilerin başlamasından önce özel olarak sınıfları dönüştürmek içindir. ForgeModLoader bu modları “Coremods” olarak adlandırıyor. SpongeForge bir Coremod’dur ve başlangıçta mixins dağıtmaktadır. Mixins eklentiler tarafından kullanılabilir ancak, ek karmaşıklıkların olabileceğini bilin.

Hybrid Mods

Mixins’i kullanan Sponge eklentileri içeriğe dayalı olarak temel bir mod olarak düşünülebilir.

  • Mixins’i FML’de kullanmak bir coremod olmalıdır. Kavanoz ayrıca bir Sponge eklentisi içerebilir, bu yüzden en uygun konteyner “hybrid mod” dur.
  • Mixinsleri SpongeVanilla’da kullanmak için, manifestoda niyetler bildirilmelidir. SpongeVanilla, daha sonra mixinleri enjekte eder.
  • Her iki türünde de tek bir kavanozda olması tamamen mümkündür. (Gerçektende, tek bir kavanoz kolayca bir tweaker, FML modu, coremod, bukkit eklentisi, sponge eklentisi ve/veya litemod içeriyor olabilir.)

Bu noktada bazı tanımlar faydalı olabilir.

Tweak mod(Tweaker diye de biliniyor)
genellikle ModSystems (örn. LiteLoader, FML) ve bağımsız modlar (örn. Optifine) için kullanılan LaunchWrapper’ı kullanarak oyunu doğrudan kanca eden alt sistem düzeyinde bir mod. Oyun ortamının herhangi bir yönüyle doğrudan etkileşim kurabilir. Genellikle her sürümde kırılır.
Çekirdek mod
bir Tweak Mod’u neredeyse eşdeğer bir güce sahip olmakla birlikte bir ModSystem tarafından önyüklenmelidir. Oyun ortamının herhangi bir yönüyle doğrudan etkileşim kurabilir. Genellikle her yeni oyun sürümünde kırılır.
Eklenti
oyun ile sadece bir ModSystem vasıtasıyla etkileşime girer, mod oyun nesnelerine doğrudan maruz kalır, amma velakin, genellikle yalnızca ModSystem tarafından sağlanan kanca vasıtasıyla oyuna dahil edilir. Genel olarak Oyunun her büyük sürümünü kırar (kullanılan özelliklere bağlı olarak). Mod terimi, oyunu değiştiren herhangi bir şey için bir şemsiye terim olarak da kullanılır, ancak anlaşılırlık uğruna bu tanımı kullanacağız.
Eklenti
yalnızca bir API vasıtasıyla oyunla etkileşim kurar, oyun nesneleri ile doğrudan hiçbir şekilde etkileşim kurmaz; yalnızca API tarafından sunulan nesneleri kullanır. Genellikle, API revize edildiğinde kırılır (bazen bu bile olmaz).

Konteyneri içeriğinden ayırt etmek de önemlidir. Term içeren terimler ortaya çıkma eğilimindedir çünkü mod içeren bir kavanoz “mod” olarak adlandırılmaya eğilimlidir. API vasıtasıyla tamamen ayrıştırılmamış olan herhangi bir eklenti kendini Mod kategorisine sokar. Bu tür bir “eklenti” API’de eksikliklerin olduğu durumlarda yaygın olabilir.

Hybrid mod’ların avantajları

Bir hybrid mod, hem API ile etkileşime giren bir eklenti bileşenini hem de aynı paketten bir mod (hatta modül) kullanır. Bu bir modun dezavantajlarına sahiptir(her sürümü kırar). aynı zamanda bir modun gücü (oyunla doğrudan etkileşime girebilir) ve bir eklentinin faydaları birbiriyle birleşebilir. (oyuna üst düzey soyut erişim ve aynı zamanda diğer eklentilerle bir eş olarak etkileşimde bulunabilir).

Bu sistemin birincil yararı, modu güncellediğinizde bakım yükünün azalmasıdır, çünkü API aracılığıyla erişilen tüm özelliklerin daha kararlı olması muhtemeldir.

Bu tür mod, ihtiyaçları API’nin kapasitesini aşan eklentileri uygulamak için kullanılabilir (belirli bir özellik için mixins’den yararlanılması gereken bir eklenti olması durumunda); ancak API tarafından sağlanan hizmetleri (Örneğin. izinler veya sohbet kanalları için doğrudan destek sağlamak isteyen bir mod) kullanmak isteyen modlar için de kullanılabilir.

NMS’den yararlanan “eklentiler“‘in aksine, bir hyrbid mod doğasını açıkça ortaya koymaktadır.

Eklenti ile birlikte çalışabilirliği

Diğer eklentilerle nasıl iletişim kuracağınıza ilişkin bir açıklama, TBA.