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ı

: Javadoc: PluginManager içindeki genel yöntemler, yüklü pluginlerin mevcut koleksiyonu ve örnekleri ile ilgili bilgileri yakalamak için kullanılır. Eklentiler, belirli eklenti hakkında kolay bilgi merkezi olmasını sağlamak için bir: javadoc: PluginContainer (bir sonraki bölümde tartışılacaktır) içerisinde saklanır. Örnek olarak, başka bir eklenti ile iletişim kurmak, örneğini yakalamak ve çağıran eklenti vasıtasıyla uyumluluk veya genişletilmiş özellikler sağlamak için sunduğu yöntemleri kullanmak için “PluginManager” işlevini kullanabilirsiniz.

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.provide(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.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.List;

private List<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").orNull();

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").orNull();
private MyOtherPlugin pluginInstance = (MyOtherPlugin) myOtherPlugin.getInstance();

Not

: javadoc: PluginContainer # getInstance () `` Nesne ‘’ olarak dönecektir. Konteynerden alındıktan sonra onu hedef eklenti olarak yayınlamanız gerekir.