Bağımlılık Enjeksiyonu

Sponge bağımlılık enjeksiyonunu eklentilere API örnekleri sağlamak için kullanır. Bağımsızlık enjeksiyonu eklentilerin yapımdan sonra enjekte edilecek olan birkaç API türünü belirlemesine izin verir.

Eklenen Modellerin Geçici Listesi

ConfigDir (Yoldaki veya dosyadaki dipnot)
ConfigDir#sharedRoot()’e bağlı olarak, eklentinin konfigürasyon dizinini ./mods/ YA DA ./mods/<Plugin#id>/ üzerine eklemek için kullanılır
ConfigurationLoader<CommentedConfigurationNode>
@DefaultConfig ile açıklanmalıdır. Aynı açıklamanın File``ı için önceden oluşturulmuş bir ``ConfigurationLoader eklemek için kullanılır.
DefaultConfig (Yol, YapılandırmaYükleyicisi veya Dosyadaki dipnot)
Eklentilerin özel yapılandırma dosyasını eklemek için kullanılır: <Plugin#id>.conf
EventManager
Etkinlik sahiplerinin kayıtlarını ve etkinliklerin halledilmesini yönetir.
Dosya
Ya @DefaultConfig``ya da ``@ConfigDir ile açıklanmalıdır. Verilen açıklamaya bağlı olarak eklentinin varsayılan yapılandırma dosyasına ya da yapılandırma dosyalarını depolamak için kullanılan dizine bir dosya referansı içerecektir. Yol (aşağıda görebilirsiniz) tercih edilmelidir.
Game
``Game``nesnesi SpongeAPI’nin temel erişimcisidir.
GameRegistry
Bir ``Game``den modelleri geri almak için kolay bir yol sağlar.
GuiceObjectMapperFactory
Nesneleri yapılandırma düğümlerine eşleştirmenin daha kolay olması için Configurate tarafından sağlanan bir araç. Kullanılışı için :doc:`configuration/serialization`a göz atın.
Enjektör
com.google.inject.Injector Guice’ten kullanılabilir, eklentinizin bağımlılıklarını enjekte etmek için kullanılan bir enjektör. Onu bu sayfada listelenen Sponge’ın da sağladığı bağımlılıklarla birlikte kendi modülünüzle kendi sınıflarınıza enjekte etmek için bir çocuk enjektörü oluşturmakta ya da kendi sınıflarınızı yapılandırmada kullanabilirsiniz
Kaydedici
Kaydedilen mesajların gönderildiği eklentiyi belirlemek için kullanılır.
Yol
Ya @DefaultConfig``ya da ``@ConfigDir ile açıklanmalıdır. Verilen açıklamaya bağlı olarak eklentinin varsayılan yapılandırma dosyasına ya da yapılandırma dosyalarını depolamak için kullanılan dizine bir yol referansı içerecektir.
PluginContainer
Bir :javadoc:`Plugin`sınıfı wrapper’ı, daha kolay kullanım için açıklamadan bilgi almada kullanılır.
PluginManager
Uygulama tarafından yüklenen eklentileri yönetir. Diğer eklentinin ``PluginContainer``ını geri alabilir.

Enjeksiyon Örnekleri

Enjeksiyon olmadan alınması zor - veya, bazı durumlarda, imkansız - olan referanslar vardır. Her eklenti için kesinlikle aşırı derecede önemli olmayabilirken, çokta sık kullanılırlar.

Not

Eklenti yüklendiğinde Guice enjektörüyle örneklendiği gibi, nesnelerinizi ana sınıfla birlikte enjekte etmek için neredeyse her zaman onun en iyi uygulama olduğunu unutmayın.

Kaydedici

Tüyo

Eksiksiz bir rehber için :doc:`logging`i inceleyin, özellikle Logger için.

Oyun

Game nesnesi, ``EventManager``dan :javadoc:`Server`a ve hatta Sync/Async :javadoc:`Scheduler`a kadar, SpongeAPI’nin birçok dahili fonksiyonunun açılımıdır.

Game nesnesini birçok olayın içerisinden elte etmek tamamen mümkündür - ancak söz konusu nesne, genellikle injection yoluyla elde edilir.

Örnek - Alan

import com.google.inject.Inject;
import org.spongepowered.api.Game;

@Inject
private Game game;

Örnek - Yöntem

private Game game;

@Inject
private void setGame(Game game) {
    this.game = game;
}

Örnek - Oluşturucu

Bu rehberin amacı için, “Elma” sınıf adıdır.
private Game game;

@Inject
public Apple(Game game) {
    this.game = game;
}

Yapılandırma Dizini

Yapılandırma dosyanızı elde etmek için önerilen yöntem, ConfigDir açıklamasıyla birlikte Guice’tir.

Tüyo

Eğer sharedRoot’u true olarak ayarlarsanız, ConfigDir’ınız -potansiyel olarak- diğer eklentilerin yapılandırmasını barındıran aynı dizin olacaktır. Çoğu durumda ConfigDir’i tutmak gerekli olduğunda, bu false olmalıdır.

Örnek - Alan

import org.spongepowered.api.config.ConfigDir;

import java.nio.file.Path;

@Inject
@ConfigDir(sharedRoot = false)
private Path configDir;

Örnek - Yöntem

private Path configDir;

@Inject
@ConfigDir(sharedRoot = false)
private void setConfigDir(Path configDir) {
    this.configDir = configDir;
}

Örnek - Oluşturucu

Bu rehberin amaçları için, “Portakal” sınıf adıdır.
private Path configDir;

@Inject
public Orange(@ConfigDir(sharedRoot = false) Path configDir) {
    this.configDir = configDir;
}

VarsayılanYapılandırma

@DefaultConfig’inçalışma şekli @ConfigDir’in çalışma şekline çok benzer. En büyük fark, @DefaultConfig belirli bir dosyaya atıfta bulunurken, @ConfigDir biz dizine atıfta bulunur.

Tüyo

Eksiksiz bir rehber için Eklentileri yapılandırma’i inceleyin, özellikle @DefaultConfig için.