Pengelola Pengaya

Pengelola Plugin anda adalah plugin yang dimuat setelah dikirim oleh server pada saat startup. Server memuat plugin anda dengan mencari ruang utamanya, dijelaskan oleh Plugin Pencatatan yang memegang informasi umum, dan mengirimkan sebuah contoh baru untuk pengelola. Pengelola kemudian membuat contoh yang di koleksinya sendiri sehingga anda dapat melihat ke dalam dan menarik untuk menggunakan metode yang disediakan dengan sendirinya, sehingga memungkinkan anda untuk dengan mudah berinteraksi dengan plugin lain yang dimuat jika anda menginginkannya.

Yang PluginManager Kelas

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.

Untuk mendapatkan Plugin Manager

Anda dapat memperoleh sebuah contoh dari server PluginManager menggunakan beberapa jalan yang berbeda.

Depndensi injeksi

Tip

Pergi ke injeksi petunjuk untuk bantuan tentang mempergunakan injeksi ketergantungan.

PluginManager adalah satu dari beberapa contoh API yang ada diinjeksikan ke dalam kelas utama di atas setelah dimuat. Untuk meminta sebuah referensi, membuat sebuah variabel baru untuk mempertahankan contoh PluginManager dan cukup anotasikan itu dengan @Inject.

import com.google.inject.Inject;
import org.spongepowered.api.plugin.PluginManager;

@Inject
private PluginManager pluginManager;

Tentang Manajer Layanan

Tip

Pergi ke service untuk sebuah petunjuk lengkap tentang Manajer Layanan.

Manajer Layanan juga mempertahankan sebuah contoh dari server PluginManager. Hanya menggunakan metode ServiceManager#provide(Class), melalui kelas PluginManager's class (PluginManager.class) sebagai sebuah parameter.

private PluginManager pluginManager = serviceManager.provideUnchecked(PluginManager.class);

3. Contoh Permainan

Tip

Melihat JavaDocs untuk :javadoc:`Permainan` untuk informasi lengkap tentang kelas, serta metode-metode dan penggunaan mereka.

Sebuah contoh permainan bisa menyediakan sebuah referensi untuk server ``PluginManager` demikian pula untuk kemudahannya.

private PluginManager pluginManager = game.getPluginManager();

Sekarang bahwa anda memiliki contoh untuk plugin manager, mari kita menggunakannya.

4. Menggunakan yang Spons Kelas

Sponge kelas bekerja bersama dengan Permainan, dengan eksepsi bahwa sejak itu Sponge mengandung metode statis. Itu dapat menjadi akses di manapun di semua plugin anda . Anda juga tidak butuh untuk menyimpan sebuah contoh untuk itu, seperti yang anda akan butuh untuk dilakukan dengan Permainan.

import org.spongepowered.api.Sponge;

private PluginManager pluginManager = Sponge.getPluginManager();

Menggunakan Plugin pengatur

Plugin pengatur menyediakan beberapa metode untuk bekerja dengan plugin.

Banyak metode kembali plugin wadah, yang akan dibahas pada bagian berikutnya. Plugin wadah yang cukup banyak self-explanatory "wadah" yang sebenarnya plugin misalnya.

Dengan plugin manager, adalah mungkin untuk mendapatkan semua plugin yang saat ini dimuat melalui plugin pengatur:

import org.spongepowered.api.plugin.PluginContainer;

import java.util.Collection;

private Collection<PluginContainer> plugins = pluginManager.getPlugins();

Atau, itu adalah layak untuk memperoleh sebuah contoh ke dalam sebuah wadah plugin secara langsung, dari contoh yang ditunjukkan di bawah ini:

private PluginContainer myOtherPlugin = pluginManager.getPlugin("myOtherPluginId").orElse(null);

Yang PluginContainer Kelas

Pada saat mengambil sebuah plugin dari PluginManager, anda akan memperhatikan dengan begitu cepat sehingga anda tidak diberi sebuah contoh langsung dari plugin yang diminta. Malahan sebaliknya, anda akan disapa oleh sebuah PluginContainer mengandung informasi tentang plugin yang dicapai dari anotasinya @Plugin yang pada kelas utamanya, seperti sebagai contoh langsung yang dimuat.

PluginContainer akan mempertahankan informasi umum apapun tentang plugin yang diatur oleh pengembangnya sendiri. Anda bisa menggunakan informasi dari sini sebagai gantinya dari kode-keras apa yang anda tahu tentang itu pada plugin pendukung anda. Sebuah contoh skenarionya adalah jika pengembangnya sendiri memiliki perubahan namanya dari plugin, referensi untuk yang terakhir dalam plugin pendukung tidak akan menjadi salah sebagai sebuah hasil dari perubahan ini, asalkan anda telah menggunakan metode PluginContainer#getName() untuk mendapatkan namanya.

private PluginContainer myOtherPlugin = pluginManager.getPlugin("myOtherPluginId").orElse(null);
private MyOtherPlugin pluginInstance = (MyOtherPlugin) myOtherPlugin.getInstance().orElse(null);

Catatan

PluginContainer#getInstance() akan kembali sebagai sebuah Objek. Anda harus melemparkan itu sebagai sasaran plugin setelah mendapatkan itu dari sebuah wadah.