mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Moved plugin API to Uid instead of usize for entity IDs, hello plugin to an example
This commit is contained in:
@ -9,3 +9,10 @@ plugin-api = { package = "veloren-plugin-api", path = "../api" }
|
||||
plugin-derive = { package = "veloren-plugin-derive", path = "../derive"}
|
||||
serde = {version = "1.0.118", features = ["derive"]}
|
||||
bincode = "1.3.1"
|
||||
|
||||
[[example]]
|
||||
name = "hello"
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dev-dependencies]
|
||||
plugin-derive = { package = "veloren-plugin-derive", path = "../derive"}
|
||||
|
34
plugin/rt/examples/hello.rs
Normal file
34
plugin/rt/examples/hello.rs
Normal file
@ -0,0 +1,34 @@
|
||||
use veloren_plugin_rt::{
|
||||
api::{event::*, Action, GameMode},
|
||||
*,
|
||||
};
|
||||
|
||||
#[veloren_plugin_rt::event_handler]
|
||||
pub fn on_load(load: PluginLoadEvent) {
|
||||
match load.game_mode {
|
||||
GameMode::Server => emit_action(Action::Print("Hello, server!".to_owned())),
|
||||
GameMode::Client => emit_action(Action::Print("Hello, client!".to_owned())),
|
||||
GameMode::Singleplayer => emit_action(Action::Print("Hello, singleplayer!".to_owned())),
|
||||
}
|
||||
}
|
||||
|
||||
#[event_handler]
|
||||
pub fn on_command_testplugin(command: ChatCommandEvent) -> Result<Vec<String>, String> {
|
||||
Ok(vec![format!(
|
||||
"Player of id {:?} sended command with args {:?}",
|
||||
command.player, command.command_args
|
||||
)])
|
||||
}
|
||||
|
||||
#[event_handler]
|
||||
pub fn on_player_join(input: PlayerJoinEvent) -> PlayerJoinResult {
|
||||
emit_action(Action::PlayerSendMessage(
|
||||
input.player_id,
|
||||
format!("Welcome {} on our server", input.player_name),
|
||||
));
|
||||
if input.player_name == "Cheater123" {
|
||||
PlayerJoinResult::CloseConnection
|
||||
} else {
|
||||
PlayerJoinResult::None
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user