pub trait Plugin:
EventHandler
+ EventSubscriptions
+ CommandRegistry {
// Required methods
fn get_info(&self) -> PluginInfo<'_>;
fn get_id(&self) -> &str;
fn get_name(&self) -> &str;
fn get_version(&self) -> &str;
fn get_api_version(&self) -> &str;
}Expand description
The final trait required for our plugin to be runnable.
These functions get impled automatically by
#[derive(Plugin) like so:
use dragonfly_plugin::{
PluginRunner, // Our runtime, clearly named
Plugin, // The derive macro
event::{EventContext, EventHandler},
event_handler,
types,
Server,
};
#[derive(Plugin, Default)]
#[plugin(
id = "example-rust",
name = "Example Rust Plugin",
version = "1.0.0",
api = "1.0.0"
)]
struct MyPlugin {}
#[event_handler]
impl EventHandler for MyPlugin {
async fn on_player_join(
&self,
server: &Server,
event: &mut EventContext<'_, types::PlayerJoinEvent>,
) { }
}Required Methods§
fn get_info(&self) -> PluginInfo<'_>
fn get_id(&self) -> &str
fn get_name(&self) -> &str
fn get_version(&self) -> &str
fn get_api_version(&self) -> &str
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.