Eklenti yöneticisi

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. Dependency Injection

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. The Service Manager

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. The Game Instance

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. Using the Sponge Class

: 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.getPluginManager();

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.api.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.