Eklenti yöneticisi
Uyarı
These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!
Eklenti Yöneticisi, eklentinin başlangıçta sunucu tarafından yüklenmesinden sonra gönderileceği adrestir. Sunucu, genel bilgilerine sahip olan:javadoc: Plugin ek açıklamasına sahip ana sınıfını bularak eklentinizi yükler ve yeni bir örneğini yöneticiye gönderir. Yönetici, daha sonra, kendi koleksiyonunda bu örneğe bakar ve kendisi tarafından sağlanan yöntemleri kullanmaktan çekinmesini sağlar; dolayısıyla, eğer arzu ederseniz başka bir yüklü eklentiyle kolayca etkileşime girmenize izin verir.
Eklenti yöneticisi sınıfı
Public methods inside the PluginManager are used to grab information about the current collection of loaded
plugins, alongside their instances. The plugins are stored inside a PluginContainer (discussed in next
section) to allow for an easy center of information about the specific plugin. As an example, you can use the
PluginManager
to communicate with another plugin, grabbing its instance and using the methods it offers to provide
compatibility or extended features by means of your calling plugin.
Eklenti Yöneticisinin Alınması
Sunucunun “PluginManager” örneğini birkaç farklı yolla alabilirsiniz.
1. Bağımlılık Enjeksiyonu
Tüyo
Bağımlılık enjeksiyonunun kullanımı hakkında yardım için: doc: injection kılavuzuna bakın.
`` PluginManager``, yüklendiğinde ana sınıfa enjekte edilen birkaç API örneğinden biridir. Referans istemek için, `` PluginManager`` örneğini tutacak yeni bir değişken oluşturun ve basitçe `` @ Inject`` ile açıklama yapın.
import com.google.inject.Inject;
import org.spongepowered.api.plugin.PluginManager;
@Inject
private PluginManager pluginManager;
2. Servis yöneticisi
Tüyo
Buraya bak:doc: Servisler hakkında detaylı rehber için ‘servisler’.
Servis yöneticisi ayrıca sunucunun “PluginManager” ‘un bir örneğini de tutar. Sadece aşağıdaki yöntemi kullanın: javadoc: ServiceManager # provide (Class) , PluginManager` sınıfını (` PluginManager.class`) bir parametre olarak geçirin.
private PluginManager pluginManager = serviceManager.provideUnchecked(PluginManager.class);
3. Oyun Örneği
Tüyo
Sınıf hakkında tam bilgi ve yöntemleri ve kullanımları için JavaDocs için: javadoc: `Oyun ‘konusuna bakın.
Bir oyun örneği sunucunun “PluginManager” ‘a kolaylık sağlamak için bir referans sağlayabilir.
private PluginManager pluginManager = game.getPluginManager();
Artık eklenti yöneticisiyle bir örneğiniz var, kullanalım.
4. Sponge sınıflarının kullanımı
: Javadoc: Sponge’ sınıfı, Oyun’ ‘işlevine benzer şekilde çalışır, ancak Sponge`, statik yöntemler içerdiğinden farklıdır. Eklentiniz boyunca her yere erişilebilir. Ayrıca, bir örneğini de saklamak zorunda değilsiniz, çünkü “Oyun” ile birlikte yapmanız gerekecektir.
import org.spongepowered.api.Sponge;
private PluginManager pluginManager = Sponge.pluginManager();
Eklenti yöneticisinin kullanımı
Eklenti yöneticisi, eklentilerle çalışmak için çeşitli yöntemler sunar.
Bir çok yöntem, bir sonraki bölümde açıklanacak olan eklenti kapsayıcılarını döndürür. Eklenti kapsayıcıları, gerçek eklenti örneğinin kendilerini açıklayan “kapsayıcıları”ndan çok fazla.
Eklenti yöneticisi ile şu an eklenti yöneticisi aracılığıyla yüklenen tüm eklentileri edinmek mümkündür:
import org.spongepowered.plugin.PluginContainer;
import java.util.Collection;
private Collection<PluginContainer> plugins = pluginManager.getPlugins();
Veya aşağıda gösterilen örnekle bir eklenti kabına doğrudan bir örnek elde etmek mümkündür:
private PluginContainer myOtherPlugin = pluginManager.getPlugin("myOtherPluginId").orElse(null);
Eklenti konteyner Sınıfı
Bir eklentiyi “PluginManager” dan yakaladığınızda, çok hızlı bir şekilde istenen eklentinin derhal bir örneğini vermediğinizi fark edeceksiniz. Bunun yerine, yüklenen örneğin yanı sıra, ana sınıfındaki “@ Plugin`” açıklamalarından elde edilen eklenti hakkında bilgi içeren bir “PluginContainer” ile karşılaşacaksınız.
`` PluginContainer``, sahip olduğu geliştirici tarafından belirlenen eklenti hakkında ki genel bilgileri tutacaktır. Destek eklentinizde bunun hakkında bildiklerinizi sabit kodlama yerine burada kullanabilirsiniz. Örnek bir senaryo, sahibi olduğunuz geliştiricinin eklentinin adını değiştirmesi, yöntemi desteklemiş olmanız koşuluyla destekleyici eklentide ki diğerlerine yapılan başvuruların bu değişikliğin bir sonucu olarak yanlış gelmemesi durumunda olacaktır: javadoc: `PluginContainer # getName ( ) `adını almak için.
private PluginContainer myOtherPlugin = pluginManager.getPlugin("myOtherPluginId").orElse(null);
private MyOtherPlugin pluginInstance = (MyOtherPlugin) myOtherPlugin.getInstance().orElse(null);
Not
: javadoc: PluginContainer # getInstance () `` Nesne ‘’ olarak dönecektir. Konteynerden alındıktan sonra onu hedef eklenti olarak yayınlamanız gerekir.