@@ -285,54 +285,18 @@ LL_TYPE_INSTANCE_HOOK(
285
285
return origin (player, pos);
286
286
}
287
287
288
- LL_TYPE_INSTANCE_HOOK (EatHook1 , HookPriority::Normal, Player, &Player::eat , void , ItemStack const & instance ) {
288
+ LL_TYPE_INSTANCE_HOOK (EatHook , HookPriority::Normal, Player, &Player::completeUsingItem , void ) {
289
289
IF_LISTENED (EVENT_TYPES::onAte) {
290
- if (!CallEvent (
291
- EVENT_TYPES::onAte,
292
- PlayerClass::newPlayer (this ),
293
- ItemClass::newItem (&const_cast <ItemStack&>(instance))
294
- )) {
295
- return ;
296
- }
297
- }
298
- IF_LISTENED_END (EVENT_TYPES::onAte);
299
- origin (instance);
300
- }
301
- LL_TYPE_INSTANCE_HOOK (
302
- EatHook2,
303
- HookPriority::Normal,
304
- PotionItem,
305
- &PotionItem::$useTimeDepleted,
306
- ::ItemUseMethod,
307
- ::ItemStack& inoutInstance,
308
- Level* level,
309
- Player* player
310
- ) {
311
- IF_LISTENED (EVENT_TYPES::onAte) {
312
- if (!CallEvent (EVENT_TYPES::onAte, PlayerClass::newPlayer (player), ItemClass::newItem (&inoutInstance))) {
313
- return ItemUseMethod::Unknown;
314
- }
315
- }
316
- IF_LISTENED_END (EVENT_TYPES::onAte);
317
- return origin (inoutInstance, level, player);
318
- }
319
- LL_TYPE_INSTANCE_HOOK (
320
- EatHook3,
321
- HookPriority::Normal,
322
- Item,
323
- (uintptr_t )BucketItem::$vftable()[79 ],
324
- ::ItemUseMethod,
325
- ::ItemStack& inoutInstance,
326
- Level* level,
327
- Player* player
328
- ) {
329
- IF_LISTENED (EVENT_TYPES::onAte) {
330
- if (!CallEvent (EVENT_TYPES::onAte, PlayerClass::newPlayer (player), ItemClass::newItem (&inoutInstance))) {
331
- return ItemUseMethod::Unknown;
332
- }
290
+ const std::set<std::string> item_names{" minecraft:potion" , " minecraft:milk_bucket" , " minecraft:medicine" };
291
+ auto checked = mItemInUse ->mItem ->getItem ()->isFood () || item_names.contains (mItemInUse ->mItem ->getTypeName ());
292
+ if (checked
293
+ && !CallEvent (EVENT_TYPES::onAte, PlayerClass::newPlayer (this ), ItemClass::newItem (&*mItemInUse ->mItem )))
294
+ stopUsingItem ();
295
+ else origin ();
296
+ return ;
333
297
}
334
298
IF_LISTENED_END (EVENT_TYPES::onAte);
335
- return origin (inoutInstance, level, player );
299
+ origin ();
336
300
}
337
301
338
302
LL_TYPE_INSTANCE_HOOK (
@@ -676,11 +640,7 @@ void UseFrameEvent() {
676
640
UseFrameHook1::hook ();
677
641
UseFrameHook2::hook ();
678
642
}
679
- void EatEvent () {
680
- EatHook1::hook ();
681
- EatHook2::hook ();
682
- EatHook3::hook ();
683
- }
643
+ void EatEvent () { EatHook::hook (); }
684
644
void ChangeDimensionEvent () { ChangeDimensionHook::hook (); };
685
645
void OpenContainerScreenEvent () { OpenContainerScreenHook::hook (); }
686
646
void UseRespawnAnchorEvent () { UseRespawnAnchorHook::hook (); }
0 commit comments