From 2dc589830e380fc95f4caa6df56e6858a7a67db0 Mon Sep 17 00:00:00 2001 From: Purdze Date: Tue, 3 Feb 2026 13:16:02 +0000 Subject: [PATCH] implement event cancelling for java plugins propagate cancellation state from java bukkit events back to pumpkin events. when a java plugin calls event.setCancelled(true), the cancellation is now properly applied to the underlying pumpkin event. - add Cancellable trait bound to PatchBukkitEventHandler - call event.set_cancelled(true) when java event is cancelled --- rust/src/events/handler.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rust/src/events/handler.rs b/rust/src/events/handler.rs index e2886c0..040770e 100644 --- a/rust/src/events/handler.rs +++ b/rust/src/events/handler.rs @@ -2,7 +2,7 @@ use std::marker::PhantomData; use std::sync::Arc; use pumpkin::entity::player::Player; -use pumpkin::plugin::{BoxFuture, EventHandler, Payload}; +use pumpkin::plugin::{BoxFuture, Cancellable, EventHandler, Payload}; use pumpkin::server::Server; use pumpkin_api_macros::with_runtime; use tokio::sync::{mpsc, oneshot}; @@ -51,7 +51,7 @@ impl PatchBukkitEventHandler { #[with_runtime(global)] impl EventHandler for PatchBukkitEventHandler where - E: IntoEventData + Payload + 'static, + E: IntoEventData + Payload + Cancellable + 'static, { fn handle_blocking<'a>( &'a self, @@ -78,6 +78,7 @@ where Ok(cancelled) => { if cancelled { log::debug!("Event was cancelled by a Java plugin"); + event.set_cancelled(true); } } Err(_) => {