dragonfly_plugin/event/
handler.rs

1//! This file is auto-generated by `xtask`. Do not edit manually.
2#![allow(async_fn_in_trait)]
3use crate::{command::CommandRegistry, event::EventContext, types, EventSubscriptions, Server};
4pub trait EventHandler: EventSubscriptions + Send + Sync {
5    ///Handler for the `PlayerJoin` event.
6    async fn on_player_join(
7        &self,
8        _server: &Server,
9        _event: &mut EventContext<'_, types::PlayerJoinEvent>,
10    ) {
11    }
12    ///Handler for the `PlayerQuit` event.
13    async fn on_player_quit(
14        &self,
15        _server: &Server,
16        _event: &mut EventContext<'_, types::PlayerQuitEvent>,
17    ) {
18    }
19    ///Handler for the `PlayerMove` event.
20    async fn on_player_move(
21        &self,
22        _server: &Server,
23        _event: &mut EventContext<'_, types::PlayerMoveEvent>,
24    ) {
25    }
26    ///Handler for the `PlayerJump` event.
27    async fn on_player_jump(
28        &self,
29        _server: &Server,
30        _event: &mut EventContext<'_, types::PlayerJumpEvent>,
31    ) {
32    }
33    ///Handler for the `PlayerTeleport` event.
34    async fn on_player_teleport(
35        &self,
36        _server: &Server,
37        _event: &mut EventContext<'_, types::PlayerTeleportEvent>,
38    ) {
39    }
40    ///Handler for the `PlayerChangeWorld` event.
41    async fn on_player_change_world(
42        &self,
43        _server: &Server,
44        _event: &mut EventContext<'_, types::PlayerChangeWorldEvent>,
45    ) {
46    }
47    ///Handler for the `PlayerToggleSprint` event.
48    async fn on_player_toggle_sprint(
49        &self,
50        _server: &Server,
51        _event: &mut EventContext<'_, types::PlayerToggleSprintEvent>,
52    ) {
53    }
54    ///Handler for the `PlayerToggleSneak` event.
55    async fn on_player_toggle_sneak(
56        &self,
57        _server: &Server,
58        _event: &mut EventContext<'_, types::PlayerToggleSneakEvent>,
59    ) {
60    }
61    ///Handler for the `Chat` event.
62    async fn on_chat(&self, _server: &Server, _event: &mut EventContext<'_, types::ChatEvent>) {}
63    ///Handler for the `PlayerFoodLoss` event.
64    async fn on_player_food_loss(
65        &self,
66        _server: &Server,
67        _event: &mut EventContext<'_, types::PlayerFoodLossEvent>,
68    ) {
69    }
70    ///Handler for the `PlayerHeal` event.
71    async fn on_player_heal(
72        &self,
73        _server: &Server,
74        _event: &mut EventContext<'_, types::PlayerHealEvent>,
75    ) {
76    }
77    ///Handler for the `PlayerHurt` event.
78    async fn on_player_hurt(
79        &self,
80        _server: &Server,
81        _event: &mut EventContext<'_, types::PlayerHurtEvent>,
82    ) {
83    }
84    ///Handler for the `PlayerDeath` event.
85    async fn on_player_death(
86        &self,
87        _server: &Server,
88        _event: &mut EventContext<'_, types::PlayerDeathEvent>,
89    ) {
90    }
91    ///Handler for the `PlayerRespawn` event.
92    async fn on_player_respawn(
93        &self,
94        _server: &Server,
95        _event: &mut EventContext<'_, types::PlayerRespawnEvent>,
96    ) {
97    }
98    ///Handler for the `PlayerSkinChange` event.
99    async fn on_player_skin_change(
100        &self,
101        _server: &Server,
102        _event: &mut EventContext<'_, types::PlayerSkinChangeEvent>,
103    ) {
104    }
105    ///Handler for the `PlayerFireExtinguish` event.
106    async fn on_player_fire_extinguish(
107        &self,
108        _server: &Server,
109        _event: &mut EventContext<'_, types::PlayerFireExtinguishEvent>,
110    ) {
111    }
112    ///Handler for the `PlayerStartBreak` event.
113    async fn on_player_start_break(
114        &self,
115        _server: &Server,
116        _event: &mut EventContext<'_, types::PlayerStartBreakEvent>,
117    ) {
118    }
119    ///Handler for the `BlockBreak` event.
120    async fn on_block_break(
121        &self,
122        _server: &Server,
123        _event: &mut EventContext<'_, types::BlockBreakEvent>,
124    ) {
125    }
126    ///Handler for the `PlayerBlockPlace` event.
127    async fn on_player_block_place(
128        &self,
129        _server: &Server,
130        _event: &mut EventContext<'_, types::PlayerBlockPlaceEvent>,
131    ) {
132    }
133    ///Handler for the `PlayerBlockPick` event.
134    async fn on_player_block_pick(
135        &self,
136        _server: &Server,
137        _event: &mut EventContext<'_, types::PlayerBlockPickEvent>,
138    ) {
139    }
140    ///Handler for the `PlayerItemUse` event.
141    async fn on_player_item_use(
142        &self,
143        _server: &Server,
144        _event: &mut EventContext<'_, types::PlayerItemUseEvent>,
145    ) {
146    }
147    ///Handler for the `PlayerItemUseOnBlock` event.
148    async fn on_player_item_use_on_block(
149        &self,
150        _server: &Server,
151        _event: &mut EventContext<'_, types::PlayerItemUseOnBlockEvent>,
152    ) {
153    }
154    ///Handler for the `PlayerItemUseOnEntity` event.
155    async fn on_player_item_use_on_entity(
156        &self,
157        _server: &Server,
158        _event: &mut EventContext<'_, types::PlayerItemUseOnEntityEvent>,
159    ) {
160    }
161    ///Handler for the `PlayerItemRelease` event.
162    async fn on_player_item_release(
163        &self,
164        _server: &Server,
165        _event: &mut EventContext<'_, types::PlayerItemReleaseEvent>,
166    ) {
167    }
168    ///Handler for the `PlayerItemConsume` event.
169    async fn on_player_item_consume(
170        &self,
171        _server: &Server,
172        _event: &mut EventContext<'_, types::PlayerItemConsumeEvent>,
173    ) {
174    }
175    ///Handler for the `PlayerAttackEntity` event.
176    async fn on_player_attack_entity(
177        &self,
178        _server: &Server,
179        _event: &mut EventContext<'_, types::PlayerAttackEntityEvent>,
180    ) {
181    }
182    ///Handler for the `PlayerExperienceGain` event.
183    async fn on_player_experience_gain(
184        &self,
185        _server: &Server,
186        _event: &mut EventContext<'_, types::PlayerExperienceGainEvent>,
187    ) {
188    }
189    ///Handler for the `PlayerPunchAir` event.
190    async fn on_player_punch_air(
191        &self,
192        _server: &Server,
193        _event: &mut EventContext<'_, types::PlayerPunchAirEvent>,
194    ) {
195    }
196    ///Handler for the `PlayerSignEdit` event.
197    async fn on_player_sign_edit(
198        &self,
199        _server: &Server,
200        _event: &mut EventContext<'_, types::PlayerSignEditEvent>,
201    ) {
202    }
203    ///Handler for the `PlayerLecternPageTurn` event.
204    async fn on_player_lectern_page_turn(
205        &self,
206        _server: &Server,
207        _event: &mut EventContext<'_, types::PlayerLecternPageTurnEvent>,
208    ) {
209    }
210    ///Handler for the `PlayerItemDamage` event.
211    async fn on_player_item_damage(
212        &self,
213        _server: &Server,
214        _event: &mut EventContext<'_, types::PlayerItemDamageEvent>,
215    ) {
216    }
217    ///Handler for the `PlayerItemPickup` event.
218    async fn on_player_item_pickup(
219        &self,
220        _server: &Server,
221        _event: &mut EventContext<'_, types::PlayerItemPickupEvent>,
222    ) {
223    }
224    ///Handler for the `PlayerHeldSlotChange` event.
225    async fn on_player_held_slot_change(
226        &self,
227        _server: &Server,
228        _event: &mut EventContext<'_, types::PlayerHeldSlotChangeEvent>,
229    ) {
230    }
231    ///Handler for the `PlayerItemDrop` event.
232    async fn on_player_item_drop(
233        &self,
234        _server: &Server,
235        _event: &mut EventContext<'_, types::PlayerItemDropEvent>,
236    ) {
237    }
238    ///Handler for the `PlayerTransfer` event.
239    async fn on_player_transfer(
240        &self,
241        _server: &Server,
242        _event: &mut EventContext<'_, types::PlayerTransferEvent>,
243    ) {
244    }
245    ///Handler for the `Command` event.
246    async fn on_command(
247        &self,
248        _server: &Server,
249        _event: &mut EventContext<'_, types::CommandEvent>,
250    ) {
251    }
252    ///Handler for the `PlayerDiagnostics` event.
253    async fn on_player_diagnostics(
254        &self,
255        _server: &Server,
256        _event: &mut EventContext<'_, types::PlayerDiagnosticsEvent>,
257    ) {
258    }
259    ///Handler for the `WorldLiquidFlow` event.
260    async fn on_world_liquid_flow(
261        &self,
262        _server: &Server,
263        _event: &mut EventContext<'_, types::WorldLiquidFlowEvent>,
264    ) {
265    }
266    ///Handler for the `WorldLiquidDecay` event.
267    async fn on_world_liquid_decay(
268        &self,
269        _server: &Server,
270        _event: &mut EventContext<'_, types::WorldLiquidDecayEvent>,
271    ) {
272    }
273    ///Handler for the `WorldLiquidHarden` event.
274    async fn on_world_liquid_harden(
275        &self,
276        _server: &Server,
277        _event: &mut EventContext<'_, types::WorldLiquidHardenEvent>,
278    ) {
279    }
280    ///Handler for the `WorldSound` event.
281    async fn on_world_sound(
282        &self,
283        _server: &Server,
284        _event: &mut EventContext<'_, types::WorldSoundEvent>,
285    ) {
286    }
287    ///Handler for the `WorldFireSpread` event.
288    async fn on_world_fire_spread(
289        &self,
290        _server: &Server,
291        _event: &mut EventContext<'_, types::WorldFireSpreadEvent>,
292    ) {
293    }
294    ///Handler for the `WorldBlockBurn` event.
295    async fn on_world_block_burn(
296        &self,
297        _server: &Server,
298        _event: &mut EventContext<'_, types::WorldBlockBurnEvent>,
299    ) {
300    }
301    ///Handler for the `WorldCropTrample` event.
302    async fn on_world_crop_trample(
303        &self,
304        _server: &Server,
305        _event: &mut EventContext<'_, types::WorldCropTrampleEvent>,
306    ) {
307    }
308    ///Handler for the `WorldLeavesDecay` event.
309    async fn on_world_leaves_decay(
310        &self,
311        _server: &Server,
312        _event: &mut EventContext<'_, types::WorldLeavesDecayEvent>,
313    ) {
314    }
315    ///Handler for the `WorldEntitySpawn` event.
316    async fn on_world_entity_spawn(
317        &self,
318        _server: &Server,
319        _event: &mut EventContext<'_, types::WorldEntitySpawnEvent>,
320    ) {
321    }
322    ///Handler for the `WorldEntityDespawn` event.
323    async fn on_world_entity_despawn(
324        &self,
325        _server: &Server,
326        _event: &mut EventContext<'_, types::WorldEntityDespawnEvent>,
327    ) {
328    }
329    ///Handler for the `WorldExplosion` event.
330    async fn on_world_explosion(
331        &self,
332        _server: &Server,
333        _event: &mut EventContext<'_, types::WorldExplosionEvent>,
334    ) {
335    }
336    ///Handler for the `WorldClose` event.
337    async fn on_world_close(
338        &self,
339        _server: &Server,
340        _event: &mut EventContext<'_, types::WorldCloseEvent>,
341    ) {
342    }
343}
344#[doc(hidden)]
345pub async fn dispatch_event(
346    server: &Server,
347    handler: &(impl EventHandler + CommandRegistry),
348    envelope: &types::EventEnvelope,
349) {
350    let Some(payload) = &envelope.payload else {
351        return;
352    };
353    match payload {
354        types::event_envelope::Payload::PlayerJoin(e) => {
355            let mut context = EventContext::new(
356                &envelope.event_id,
357                e,
358                server.sender.clone(),
359                server.plugin_id.clone(),
360            );
361            handler.on_player_join(server, &mut context).await;
362            context.send_ack_if_needed().await;
363        }
364        types::event_envelope::Payload::PlayerQuit(e) => {
365            let mut context = EventContext::new(
366                &envelope.event_id,
367                e,
368                server.sender.clone(),
369                server.plugin_id.clone(),
370            );
371            handler.on_player_quit(server, &mut context).await;
372            context.send_ack_if_needed().await;
373        }
374        types::event_envelope::Payload::PlayerMove(e) => {
375            let mut context = EventContext::new(
376                &envelope.event_id,
377                e,
378                server.sender.clone(),
379                server.plugin_id.clone(),
380            );
381            handler.on_player_move(server, &mut context).await;
382            context.send_ack_if_needed().await;
383        }
384        types::event_envelope::Payload::PlayerJump(e) => {
385            let mut context = EventContext::new(
386                &envelope.event_id,
387                e,
388                server.sender.clone(),
389                server.plugin_id.clone(),
390            );
391            handler.on_player_jump(server, &mut context).await;
392            context.send_ack_if_needed().await;
393        }
394        types::event_envelope::Payload::PlayerTeleport(e) => {
395            let mut context = EventContext::new(
396                &envelope.event_id,
397                e,
398                server.sender.clone(),
399                server.plugin_id.clone(),
400            );
401            handler.on_player_teleport(server, &mut context).await;
402            context.send_ack_if_needed().await;
403        }
404        types::event_envelope::Payload::PlayerChangeWorld(e) => {
405            let mut context = EventContext::new(
406                &envelope.event_id,
407                e,
408                server.sender.clone(),
409                server.plugin_id.clone(),
410            );
411            handler.on_player_change_world(server, &mut context).await;
412            context.send_ack_if_needed().await;
413        }
414        types::event_envelope::Payload::PlayerToggleSprint(e) => {
415            let mut context = EventContext::new(
416                &envelope.event_id,
417                e,
418                server.sender.clone(),
419                server.plugin_id.clone(),
420            );
421            handler.on_player_toggle_sprint(server, &mut context).await;
422            context.send_ack_if_needed().await;
423        }
424        types::event_envelope::Payload::PlayerToggleSneak(e) => {
425            let mut context = EventContext::new(
426                &envelope.event_id,
427                e,
428                server.sender.clone(),
429                server.plugin_id.clone(),
430            );
431            handler.on_player_toggle_sneak(server, &mut context).await;
432            context.send_ack_if_needed().await;
433        }
434        types::event_envelope::Payload::Chat(e) => {
435            let mut context = EventContext::new(
436                &envelope.event_id,
437                e,
438                server.sender.clone(),
439                server.plugin_id.clone(),
440            );
441            handler.on_chat(server, &mut context).await;
442            context.send_ack_if_needed().await;
443        }
444        types::event_envelope::Payload::PlayerFoodLoss(e) => {
445            let mut context = EventContext::new(
446                &envelope.event_id,
447                e,
448                server.sender.clone(),
449                server.plugin_id.clone(),
450            );
451            handler.on_player_food_loss(server, &mut context).await;
452            context.send_ack_if_needed().await;
453        }
454        types::event_envelope::Payload::PlayerHeal(e) => {
455            let mut context = EventContext::new(
456                &envelope.event_id,
457                e,
458                server.sender.clone(),
459                server.plugin_id.clone(),
460            );
461            handler.on_player_heal(server, &mut context).await;
462            context.send_ack_if_needed().await;
463        }
464        types::event_envelope::Payload::PlayerHurt(e) => {
465            let mut context = EventContext::new(
466                &envelope.event_id,
467                e,
468                server.sender.clone(),
469                server.plugin_id.clone(),
470            );
471            handler.on_player_hurt(server, &mut context).await;
472            context.send_ack_if_needed().await;
473        }
474        types::event_envelope::Payload::PlayerDeath(e) => {
475            let mut context = EventContext::new(
476                &envelope.event_id,
477                e,
478                server.sender.clone(),
479                server.plugin_id.clone(),
480            );
481            handler.on_player_death(server, &mut context).await;
482            context.send_ack_if_needed().await;
483        }
484        types::event_envelope::Payload::PlayerRespawn(e) => {
485            let mut context = EventContext::new(
486                &envelope.event_id,
487                e,
488                server.sender.clone(),
489                server.plugin_id.clone(),
490            );
491            handler.on_player_respawn(server, &mut context).await;
492            context.send_ack_if_needed().await;
493        }
494        types::event_envelope::Payload::PlayerSkinChange(e) => {
495            let mut context = EventContext::new(
496                &envelope.event_id,
497                e,
498                server.sender.clone(),
499                server.plugin_id.clone(),
500            );
501            handler.on_player_skin_change(server, &mut context).await;
502            context.send_ack_if_needed().await;
503        }
504        types::event_envelope::Payload::PlayerFireExtinguish(e) => {
505            let mut context = EventContext::new(
506                &envelope.event_id,
507                e,
508                server.sender.clone(),
509                server.plugin_id.clone(),
510            );
511            handler
512                .on_player_fire_extinguish(server, &mut context)
513                .await;
514            context.send_ack_if_needed().await;
515        }
516        types::event_envelope::Payload::PlayerStartBreak(e) => {
517            let mut context = EventContext::new(
518                &envelope.event_id,
519                e,
520                server.sender.clone(),
521                server.plugin_id.clone(),
522            );
523            handler.on_player_start_break(server, &mut context).await;
524            context.send_ack_if_needed().await;
525        }
526        types::event_envelope::Payload::BlockBreak(e) => {
527            let mut context = EventContext::new(
528                &envelope.event_id,
529                e,
530                server.sender.clone(),
531                server.plugin_id.clone(),
532            );
533            handler.on_block_break(server, &mut context).await;
534            context.send_ack_if_needed().await;
535        }
536        types::event_envelope::Payload::PlayerBlockPlace(e) => {
537            let mut context = EventContext::new(
538                &envelope.event_id,
539                e,
540                server.sender.clone(),
541                server.plugin_id.clone(),
542            );
543            handler.on_player_block_place(server, &mut context).await;
544            context.send_ack_if_needed().await;
545        }
546        types::event_envelope::Payload::PlayerBlockPick(e) => {
547            let mut context = EventContext::new(
548                &envelope.event_id,
549                e,
550                server.sender.clone(),
551                server.plugin_id.clone(),
552            );
553            handler.on_player_block_pick(server, &mut context).await;
554            context.send_ack_if_needed().await;
555        }
556        types::event_envelope::Payload::PlayerItemUse(e) => {
557            let mut context = EventContext::new(
558                &envelope.event_id,
559                e,
560                server.sender.clone(),
561                server.plugin_id.clone(),
562            );
563            handler.on_player_item_use(server, &mut context).await;
564            context.send_ack_if_needed().await;
565        }
566        types::event_envelope::Payload::PlayerItemUseOnBlock(e) => {
567            let mut context = EventContext::new(
568                &envelope.event_id,
569                e,
570                server.sender.clone(),
571                server.plugin_id.clone(),
572            );
573            handler
574                .on_player_item_use_on_block(server, &mut context)
575                .await;
576            context.send_ack_if_needed().await;
577        }
578        types::event_envelope::Payload::PlayerItemUseOnEntity(e) => {
579            let mut context = EventContext::new(
580                &envelope.event_id,
581                e,
582                server.sender.clone(),
583                server.plugin_id.clone(),
584            );
585            handler
586                .on_player_item_use_on_entity(server, &mut context)
587                .await;
588            context.send_ack_if_needed().await;
589        }
590        types::event_envelope::Payload::PlayerItemRelease(e) => {
591            let mut context = EventContext::new(
592                &envelope.event_id,
593                e,
594                server.sender.clone(),
595                server.plugin_id.clone(),
596            );
597            handler.on_player_item_release(server, &mut context).await;
598            context.send_ack_if_needed().await;
599        }
600        types::event_envelope::Payload::PlayerItemConsume(e) => {
601            let mut context = EventContext::new(
602                &envelope.event_id,
603                e,
604                server.sender.clone(),
605                server.plugin_id.clone(),
606            );
607            handler.on_player_item_consume(server, &mut context).await;
608            context.send_ack_if_needed().await;
609        }
610        types::event_envelope::Payload::PlayerAttackEntity(e) => {
611            let mut context = EventContext::new(
612                &envelope.event_id,
613                e,
614                server.sender.clone(),
615                server.plugin_id.clone(),
616            );
617            handler.on_player_attack_entity(server, &mut context).await;
618            context.send_ack_if_needed().await;
619        }
620        types::event_envelope::Payload::PlayerExperienceGain(e) => {
621            let mut context = EventContext::new(
622                &envelope.event_id,
623                e,
624                server.sender.clone(),
625                server.plugin_id.clone(),
626            );
627            handler
628                .on_player_experience_gain(server, &mut context)
629                .await;
630            context.send_ack_if_needed().await;
631        }
632        types::event_envelope::Payload::PlayerPunchAir(e) => {
633            let mut context = EventContext::new(
634                &envelope.event_id,
635                e,
636                server.sender.clone(),
637                server.plugin_id.clone(),
638            );
639            handler.on_player_punch_air(server, &mut context).await;
640            context.send_ack_if_needed().await;
641        }
642        types::event_envelope::Payload::PlayerSignEdit(e) => {
643            let mut context = EventContext::new(
644                &envelope.event_id,
645                e,
646                server.sender.clone(),
647                server.plugin_id.clone(),
648            );
649            handler.on_player_sign_edit(server, &mut context).await;
650            context.send_ack_if_needed().await;
651        }
652        types::event_envelope::Payload::PlayerLecternPageTurn(e) => {
653            let mut context = EventContext::new(
654                &envelope.event_id,
655                e,
656                server.sender.clone(),
657                server.plugin_id.clone(),
658            );
659            handler
660                .on_player_lectern_page_turn(server, &mut context)
661                .await;
662            context.send_ack_if_needed().await;
663        }
664        types::event_envelope::Payload::PlayerItemDamage(e) => {
665            let mut context = EventContext::new(
666                &envelope.event_id,
667                e,
668                server.sender.clone(),
669                server.plugin_id.clone(),
670            );
671            handler.on_player_item_damage(server, &mut context).await;
672            context.send_ack_if_needed().await;
673        }
674        types::event_envelope::Payload::PlayerItemPickup(e) => {
675            let mut context = EventContext::new(
676                &envelope.event_id,
677                e,
678                server.sender.clone(),
679                server.plugin_id.clone(),
680            );
681            handler.on_player_item_pickup(server, &mut context).await;
682            context.send_ack_if_needed().await;
683        }
684        types::event_envelope::Payload::PlayerHeldSlotChange(e) => {
685            let mut context = EventContext::new(
686                &envelope.event_id,
687                e,
688                server.sender.clone(),
689                server.plugin_id.clone(),
690            );
691            handler
692                .on_player_held_slot_change(server, &mut context)
693                .await;
694            context.send_ack_if_needed().await;
695        }
696        types::event_envelope::Payload::PlayerItemDrop(e) => {
697            let mut context = EventContext::new(
698                &envelope.event_id,
699                e,
700                server.sender.clone(),
701                server.plugin_id.clone(),
702            );
703            handler.on_player_item_drop(server, &mut context).await;
704            context.send_ack_if_needed().await;
705        }
706        types::event_envelope::Payload::PlayerTransfer(e) => {
707            let mut context = EventContext::new(
708                &envelope.event_id,
709                e,
710                server.sender.clone(),
711                server.plugin_id.clone(),
712            );
713            handler.on_player_transfer(server, &mut context).await;
714            context.send_ack_if_needed().await;
715        }
716        types::event_envelope::Payload::Command(e) => {
717            let mut context = EventContext::new(
718                &envelope.event_id,
719                e,
720                server.sender.clone(),
721                server.plugin_id.clone(),
722            );
723            context.send_ack_if_needed().await;
724            let handled = handler.dispatch_commands(server, &mut context).await;
725            if !handled {
726                handler.on_command(server, &mut context).await;
727            }
728        }
729        types::event_envelope::Payload::PlayerDiagnostics(e) => {
730            let mut context = EventContext::new(
731                &envelope.event_id,
732                e,
733                server.sender.clone(),
734                server.plugin_id.clone(),
735            );
736            handler.on_player_diagnostics(server, &mut context).await;
737            context.send_ack_if_needed().await;
738        }
739        types::event_envelope::Payload::WorldLiquidFlow(e) => {
740            let mut context = EventContext::new(
741                &envelope.event_id,
742                e,
743                server.sender.clone(),
744                server.plugin_id.clone(),
745            );
746            handler.on_world_liquid_flow(server, &mut context).await;
747            context.send_ack_if_needed().await;
748        }
749        types::event_envelope::Payload::WorldLiquidDecay(e) => {
750            let mut context = EventContext::new(
751                &envelope.event_id,
752                e,
753                server.sender.clone(),
754                server.plugin_id.clone(),
755            );
756            handler.on_world_liquid_decay(server, &mut context).await;
757            context.send_ack_if_needed().await;
758        }
759        types::event_envelope::Payload::WorldLiquidHarden(e) => {
760            let mut context = EventContext::new(
761                &envelope.event_id,
762                e,
763                server.sender.clone(),
764                server.plugin_id.clone(),
765            );
766            handler.on_world_liquid_harden(server, &mut context).await;
767            context.send_ack_if_needed().await;
768        }
769        types::event_envelope::Payload::WorldSound(e) => {
770            let mut context = EventContext::new(
771                &envelope.event_id,
772                e,
773                server.sender.clone(),
774                server.plugin_id.clone(),
775            );
776            handler.on_world_sound(server, &mut context).await;
777            context.send_ack_if_needed().await;
778        }
779        types::event_envelope::Payload::WorldFireSpread(e) => {
780            let mut context = EventContext::new(
781                &envelope.event_id,
782                e,
783                server.sender.clone(),
784                server.plugin_id.clone(),
785            );
786            handler.on_world_fire_spread(server, &mut context).await;
787            context.send_ack_if_needed().await;
788        }
789        types::event_envelope::Payload::WorldBlockBurn(e) => {
790            let mut context = EventContext::new(
791                &envelope.event_id,
792                e,
793                server.sender.clone(),
794                server.plugin_id.clone(),
795            );
796            handler.on_world_block_burn(server, &mut context).await;
797            context.send_ack_if_needed().await;
798        }
799        types::event_envelope::Payload::WorldCropTrample(e) => {
800            let mut context = EventContext::new(
801                &envelope.event_id,
802                e,
803                server.sender.clone(),
804                server.plugin_id.clone(),
805            );
806            handler.on_world_crop_trample(server, &mut context).await;
807            context.send_ack_if_needed().await;
808        }
809        types::event_envelope::Payload::WorldLeavesDecay(e) => {
810            let mut context = EventContext::new(
811                &envelope.event_id,
812                e,
813                server.sender.clone(),
814                server.plugin_id.clone(),
815            );
816            handler.on_world_leaves_decay(server, &mut context).await;
817            context.send_ack_if_needed().await;
818        }
819        types::event_envelope::Payload::WorldEntitySpawn(e) => {
820            let mut context = EventContext::new(
821                &envelope.event_id,
822                e,
823                server.sender.clone(),
824                server.plugin_id.clone(),
825            );
826            handler.on_world_entity_spawn(server, &mut context).await;
827            context.send_ack_if_needed().await;
828        }
829        types::event_envelope::Payload::WorldEntityDespawn(e) => {
830            let mut context = EventContext::new(
831                &envelope.event_id,
832                e,
833                server.sender.clone(),
834                server.plugin_id.clone(),
835            );
836            handler.on_world_entity_despawn(server, &mut context).await;
837            context.send_ack_if_needed().await;
838        }
839        types::event_envelope::Payload::WorldExplosion(e) => {
840            let mut context = EventContext::new(
841                &envelope.event_id,
842                e,
843                server.sender.clone(),
844                server.plugin_id.clone(),
845            );
846            handler.on_world_explosion(server, &mut context).await;
847            context.send_ack_if_needed().await;
848        }
849        types::event_envelope::Payload::WorldClose(e) => {
850            let mut context = EventContext::new(
851                &envelope.event_id,
852                e,
853                server.sender.clone(),
854                server.plugin_id.clone(),
855            );
856            handler.on_world_close(server, &mut context).await;
857            context.send_ack_if_needed().await;
858        }
859    }
860}