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

Metode umum pada bagian dalam PluginManager dipergunakan untuk menangkap informasi tentang koleksi dari plugin yang sekarang ini dimuat, di sepanjang pada contoh mereka. Plugin tersimpan pada bagian dalam sebuah PluginContainer (dibicarakan pada sesi selanjutnya) untuk mengizinkan sebuah pusat yang gampang untuk informasi tentang plugin yang spesifik. Sebagai sebuah contoh, anda bisa menggunakan PluginManager untuk berkomunikasi dengan plugin lainnya, mengambil contohnya dan menggunakan metode yang dianjurkan itu untuk memberikan kecocokan atau fitur yang diperluas dengan menggunakan plugin dari pemanggilan anda.

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.provide(PluginManager.class);

3. The Game Instance

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

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

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

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

Catatan

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