Ketergantungan Injeksi
Sponge menggunakan dependency injection untuk memberikan contoh dari API untuk plugin. Dependency injection memungkinkan plugin untuk menunjuk beberapa jenis API yang akan disuntikkan setelah konstruksi.
Daftar sementara Disuntikkan Jenis
- ConfigDir (annotation on Path or File)
Digunakan untuk menyuntikkan konfigurasi plugin direktori:
./config/
Atau./config/<Plugin#id>/
depending on ConfigDir#sharedRoot()- DefaultConfig (annotation on Path, ConfigurationLoader or File)
Digunakan untuk menyuntikkan plugin tertentu file konfigurasi:
<Plugin#id>.conf
- AssetId (annotation on Asset)
Used to inject a
Asset
from the asset folder of the plugin- AsynchronousExecutor (annotation on SpongeExecutorService)
Used to inject the plugin's specific AsynchronousExecutor
- SynchronousExecutor (annotation on SpongeExecutorService)
Used to inject the plugin's specific SynchronousExecutor
- ChannelId (annotation on ChannelBinding.IndexedMessageChannel or ChannelBinding.RawDataChannel)
Used to inject a
ChannelBinding
with the given channel id- Asset
Must be annotated with
@AssetId
.- SpongeExecutorService
Must be annotated with either
@AsynchronousExecutor
or@SynchronousExecutor
. Depending on the annotation given this will contain a reference to the plugin's specific Asynchronous or Synchronous Executor.- ConfigurationLoader<CommentedConfigurationNode>
Harus dijelaskan dengan
@DefaultConfig
. Digunakan untuk menyuntik sebelum-dihasilkan ``ConfigurationLoader``untuk ``File``dari penjelasan yang sama.- EventManager
Mengelola pendaftaran event handler dan pengiriman dari peristiwa.
- Berkas
Harus dijelaskan dengan baik
@DefaultConfig
atau``@ConfigDir``. Tergantung pada penjelasan yang diberikan ini akan berisi file referensi untuk plugin default config file atau direktori yang digunakan untuk menyimpan file-file konfigurasi. Namun, Path (lihat di bawah) harus diutamakan.- Game
The
Game
object is the core accessor of SpongeAPI.- GameRegistry
Menyediakan cara yang mudah untuk mengambil jenis dari sebuah
Permainan
.- GuiceObjectMapperFactory
Alat yang disediakan oleh Membentuk untuk memungkinkan lebih mudah pemetaan benda-benda untuk konfigurasi node.Lihat :doc: konfigurasi/serialisasi untuk penggunaan.
- Injektor
``com.google.inject.Injector``tersedia dari Perintah, itu adalah injektor yang digunakan untuk menyuntikkan plugin anda ketergantungan. Anda dapat menggunakannya untuk membuat anak injector dengan modul anda sendiri dalam rangka untuk menyuntikkan sendiri kelas dengan baik Spons yang disediakan dependensi yang tercantum di halaman ini, atau mengkonfigurasi kelas sendiri
- Logger
Digunakan untuk mengidentifikasi plugin yang dicatat pesan yang dikirim.
- Jalan
Harus dijelaskan dengan baik
@DefaultConfig
atau@ConfigDir
. Tergantung pada penjelasan yang diberikan ini akan berisi referensi jalan ke plugin default config file atau direktori yang digunakan untuk menyimpan file-file konfigurasi.- PluginContainer
A :javadoc: Plugin pembungkus kelas, digunakan untuk mengambil informasi dari anotasi untuk digunakan lebih mudah.
- PluginManager
Mengelola plugin yang dimuat oleh implementasi. Dapat mengambil plugin lain
PluginContainer
.
Injeksi Contoh
Ada beberapa referensi yang sulit untuk mendapatkan - atau, dalam beberapa kasus, mungkin - tanpa injeksi. Sementara ini mungkin tidak benar-benar penting untuk setiap plugin, mereka cukup sering digunakan.
Catatan
Ingat bahwa itu almost always praktik terbaik untuk inject anda benda-benda di dalam kelas utama, karena itu diturunkan dengan Guice injector ketika plugin ini dimuat.
Logger
Tip
Lihat :doc: `logging`untuk panduan lengkap, khusus untuk Logger.
Permainan
The Game
object is the opening for many of the internal functions of SpongeAPI, from the EventManager
to the
Server and even the Sync/Async Scheduler.
Sementara itu mungkin untuk mengambil Game
objek melalui Sponge.getGame()
, hal ini umumnya diperoleh melalui suntikan.
Example - Field
import com.google.inject.Inject;
import org.spongepowered.api.Game;
@Inject
private Game game;
Example - Method
private Game game;
@Inject
private void setGame(Game game) {
this.game = game;
}
Example - Constructor
For the purpose of this tutorial, "Apple" is the class name.
private Game game;
@Inject
public Apple(Game game) {
this.game = game;
}
Direktori Config
Cara yang disarankan untuk mendapatkan config melalui Guice, bersama dengan :javadoc: ConfigDir anotasi.
Tip
Jika anda mengatur sharedRoot
untuk true
,anda ConfigDir
akan menjadi direktori yang sama yang - berpotensi - rumah konfigurasi untuk plugin lainnya. Dalam kebanyakan kasus di mana meraih``ConfigDir`` is required, this should be false
.
Example - Field
import org.spongepowered.api.config.ConfigDir;
import java.nio.file.Path;
@Inject
@ConfigDir(sharedRoot = false)
private Path configDir;
Example - Method
private Path configDir;
@Inject
private void setConfigDir(@ConfigDir(sharedRoot = false) Path configDir) {
this.configDir = configDir;
}
Example - Constructor
Untuk tujuan dari tutorial ini, "jeruk" adalah nama kelas.
private Path configDir;
@Inject
public Orange(@ConfigDir(sharedRoot = false) Path configDir) {
this.configDir = configDir;
}
DefaultConfig
Cara @DefaultConfig
karya ini mirip dengan @ConfigDir
. Perbedaan terbesar adalah bahwa @DefaultConfig``mengacu pada file tertentu, sedangkan ``@ConfigDir
mengacu pada satu buah direktori.
Tip
Lihat :doc: configuration/index untuk panduan lengkap, spesial untuk @DefaultConfig
.