Add basic join handler

This commit is contained in:
Bjorn Beishline 2026-01-21 22:23:25 -07:00
parent f1df8cad23
commit 9bd777d216
3 changed files with 48 additions and 1 deletions

25
rust/src/events/join.rs Normal file
View File

@ -0,0 +1,25 @@
use std::sync::Arc;
use pumpkin::{
plugin::{BoxFuture, EventHandler, player::player_join::PlayerJoinEvent},
server::Server,
};
use pumpkin_api_macros::with_runtime;
use pumpkin_util::text::{TextComponent, color::NamedColor};
pub struct PatchBukkitJoinHandler;
#[with_runtime(global)]
impl EventHandler<PlayerJoinEvent> for PatchBukkitJoinHandler {
fn handle_blocking<'a>(
&self,
_server: &Arc<Server>,
event: &'a mut PlayerJoinEvent,
) -> BoxFuture<'a, ()> {
Box::pin(async {
event.join_message =
TextComponent::text(format!("Welcome, {}!", event.player.gameprofile.name))
.color_named(NamedColor::Green);
})
}
}

17
rust/src/events/mod.rs Normal file
View File

@ -0,0 +1,17 @@
use std::sync::Arc;
use pumpkin::plugin::{Context, EventPriority};
use crate::events::join::PatchBukkitJoinHandler;
pub mod join;
pub async fn register_handlers(server: &Arc<Context>) {
server
.register_event(
Arc::new(PatchBukkitJoinHandler),
EventPriority::Highest,
true,
)
.await;
}

View File

@ -6,6 +6,7 @@ use pumpkin_api_macros::{plugin_impl, plugin_method};
pub mod config; pub mod config;
pub mod directories; pub mod directories;
pub mod events;
pub mod java; pub mod java;
pub mod plugin; pub mod plugin;
@ -16,12 +17,16 @@ use java::{
resources::{cleanup_stale_files, sync_embedded_resources}, resources::{cleanup_stale_files, sync_embedded_resources},
}; };
use crate::{java::jar::read_configs_from_jar, plugin::manager::PluginManager}; use crate::{
events::register_handlers, java::jar::read_configs_from_jar, plugin::manager::PluginManager,
};
async fn on_load_inner(plugin: &mut PatchBukkitPlugin, server: Arc<Context>) -> Result<(), String> { async fn on_load_inner(plugin: &mut PatchBukkitPlugin, server: Arc<Context>) -> Result<(), String> {
server.init_log(); server.init_log();
log::info!("Starting PatchBukkit"); log::info!("Starting PatchBukkit");
register_handlers(&server).await;
// Setup directories // Setup directories
let dirs = setup_directories(&server)?; let dirs = setup_directories(&server)?;