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

  1. Wrap payloads as `Event::EntityEnterLoveModeEvent(data)` before dispatch
  2. Check `event_type()` equals `EventType::EntityEnterLoveModeEvent` first
  3. Align plugin-api versions across the build
  4. 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

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)