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. 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. 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.pluginManager();
Artık eklenti yöneticisiyle bir örneğiniz var, kullanalım.
3. 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.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.plugins();
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.plugin("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.
The PluginContainer will hold any generic information about the plugin set by its owning developer. You can use
information from here instead of hard-coding what you know about it in your supporting plugin. An example scenario would
be if the owning developer changes the name of the plugin, references to the latter in the supporting plugin would not
become wrong as a result of this change, provided you’ve used the method PluginContainer#metadata() to get
its metadata which contains the name of the plugin.
private PluginContainer myOtherPlugin = pluginManager.getPlugin("myOtherPluginId").orElse(null);
private MyOtherPlugin pluginInstance = (MyOtherPlugin) myOtherPlugin.instance().orElse(null);
Not
PluginContainer#instance() will return as an Object. You need to cast it as the target plugin
after obtaining it from the container.