Pumpkin-MC/Pumpkin · error
unexpected event
Error message
unexpected event
What it means
This panic fires inside `data_from_event` for EntityEnterLoveModeEvent when the incoming `Event` is not `Event::EntityEnterLoveModeEvent`. It is the downcast from the generic `Event` enum to `EntityEnterLoveModeEventData`; the catch-all panics because the dispatcher should only deliver the matching variant. Encountering it indicates a routing/matching invariant was broken.
Solutions
- Wrap payloads as `Event::EntityEnterLoveModeEvent(data)` before dispatch
- Check `event_type()` equals `EventType::EntityEnterLoveModeEvent` first
- Align plugin-api versions across the build
- Make the catch-all return a `Result` or log instead of panicking
Example fix
// before <EntityEnterLoveModeEvent as Event>::data_from_event(Event::EntityBreedEvent(d)); // after <EntityEnterLoveModeEvent as Event>::data_from_event(Event::EntityEnterLoveModeEvent(d));
Defensive patterns
Strategy: type-guard
Validate before calling
if !matches!(event, Event::EntityEnterLoveModeEvent(_)) { return; }
<crate::events::entity::entity_enter_love_mode::EntityEnterLoveModeEvent as Event>::data_from_event(event); Type guard
fn as_entity_enter_love_mode(event: &Event) -> Option<&EntityEnterLoveModeEventData> {
match event { Event::EntityEnterLoveModeEvent(d) => Some(d), _ => None }
} Try / catch
// guard before unwrapping:
if let Event::EntityEnterLoveModeEvent(data) = event {
// use data
} else {
log::error!("misrouted event: expected EntityEnterLoveModeEvent");
} Prevention
- Match the expected variant before invoking `data_from_event`
- Avoid copy-pasting variant names when constructing events in tests
- Round-trip test each event implementation
- Pin consistent plugin-api versions
When it happens
Trigger: Calling `data_from_event` with any variant other than `Event::EntityEnterLoveModeEvent` — wrong-variant manual dispatch, dispatcher mispairing `EventType::EntityEnterLoveModeEvent`, or harness code feeding other events through this impl.
Common situations: Test dispatch code with a copy-pasted variant; custom event relays that forward raw `Event` values unchecked; version skew between plugin-api crates.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
AI-assisted analysis of Pumpkin-MC/Pumpkin@8d4639e25a (2026-09-09).
Data as JSON: /api/errors/9097b6b22066fcb3.
Report an issue: GitHub.
Appendix: source
Thrown at crates/pumpkin-plugin-api/src/events/entity/entity_enter_love_mode.rs:14
use crate::wit::pumpkin::plugin::event::{EntityEnterLoveModeEventData, Event, EventType};
use super::super::FromIntoEvent;
/// Event triggered when an entity enters love mode.
pub struct EntityEnterLoveModeEvent;
impl FromIntoEvent for EntityEnterLoveModeEvent {
const EVENT_TYPE: EventType = EventType::EntityEnterLoveModeEvent;
type Data = EntityEnterLoveModeEventData;
fn data_from_event(event: Event) -> Self::Data {
match event {
Event::EntityEnterLoveModeEvent(data) => data,
_ => panic!("unexpected event"),
}
}
fn data_into_event(data: Self::Data) -> Event {
Event::EntityEnterLoveModeEvent(data)
}
}
View on GitHub (pinned to 8d4639e25a)