Skip to content

Commit ec3126d

Browse files
authored
feat: refactor onAte event (#279)
1 parent d8e0904 commit ec3126d

File tree

1 file changed

+10
-50
lines changed

1 file changed

+10
-50
lines changed

src/lse/events/PlayerEvents.cpp

Lines changed: 10 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -285,54 +285,18 @@ LL_TYPE_INSTANCE_HOOK(
285285
return origin(player, pos);
286286
}
287287

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) {
289289
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;
333297
}
334298
IF_LISTENED_END(EVENT_TYPES::onAte);
335-
return origin(inoutInstance, level, player);
299+
origin();
336300
}
337301

338302
LL_TYPE_INSTANCE_HOOK(
@@ -676,11 +640,7 @@ void UseFrameEvent() {
676640
UseFrameHook1::hook();
677641
UseFrameHook2::hook();
678642
}
679-
void EatEvent() {
680-
EatHook1::hook();
681-
EatHook2::hook();
682-
EatHook3::hook();
683-
}
643+
void EatEvent() { EatHook::hook(); }
684644
void ChangeDimensionEvent() { ChangeDimensionHook::hook(); };
685645
void OpenContainerScreenEvent() { OpenContainerScreenHook::hook(); }
686646
void UseRespawnAnchorEvent() { UseRespawnAnchorHook::hook(); }

0 commit comments

Comments
 (0)