Skip to content

Commit bdce321

Browse files
committed
feat: add onSetArmor #95
1 parent b2a142b commit bdce321

File tree

3 files changed

+27
-13
lines changed

3 files changed

+27
-13
lines changed

src/legacy/api/EventAPI.cpp

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -432,18 +432,9 @@ void EnableEventListener(int eventId) {
432432
lse::events::PlayerOpenContainerScreenEvent();
433433
break;
434434

435-
// case EVENT_TYPES::onSetArmor:
436-
// Event::PlayerSetArmorEvent::subscribe([](const PlayerSetArmorEvent &ev)
437-
// {
438-
// IF_LISTENED(EVENT_TYPES::onSetArmor) {
439-
// CallEvent(EVENT_TYPES::onSetArmor,
440-
// PlayerClass::newPlayer(ev.mPlayer),
441-
// Number::newNumber(ev.mSlot),
442-
// ItemClass::newItem(ev.mArmorItem));
443-
// }
444-
// IF_LISTENED_END(EVENT_TYPES::onSetArmor);
445-
// });
446-
// break;
435+
case EVENT_TYPES::onSetArmor:
436+
lse::events::PlayerSetArmorEvent();
437+
break;
447438

448439
case EVENT_TYPES::onEat:
449440
bus.emplaceListener<PlayerUseItemEvent>([](PlayerUseItemEvent& ev) {

src/legacy/events/EventHooks.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,14 +935,35 @@ LL_TYPE_INSTANCE_HOOK(
935935
// return origin(instance, entity, pos, face, clickPos);
936936
// }
937937

938-
LL_TYPE_INSTANCE_HOOK(PlayerConsumeTotemHook, HookPriority::Normal, Player, &Player::consumeTotem, bool) {
938+
LL_TYPE_INSTANCE_HOOK(PlayerConsumeTotemHook, HookPriority::Normal, Player, "?consumeTotem@Player@@UEAA_NXZ", bool) {
939939
IF_LISTENED(EVENT_TYPES::onConsumeTotem) {
940940
CallEventRtnValue(EVENT_TYPES::onConsumeTotem, false, PlayerClass::newPlayer(this));
941941
}
942942
IF_LISTENED_END(EVENT_TYPES::onConsumeTotem);
943943
return origin();
944944
}
945945

946+
LL_TYPE_INSTANCE_HOOK(
947+
PlayerSetArmorHook,
948+
HookPriority::Normal,
949+
ServerPlayer,
950+
"?setArmor@ServerPlayer@@UEAAXW4ArmorSlot@@AEBVItemStack@@@Z",
951+
void,
952+
ArmorSlot armorSlot,
953+
ItemStack const& item
954+
) {
955+
IF_LISTENED(EVENT_TYPES::onSetArmor) {
956+
CallEventVoid(
957+
EVENT_TYPES::onSetArmor,
958+
PlayerClass::newPlayer(this),
959+
Number::newNumber((int)armorSlot),
960+
ItemClass::newItem(&const_cast<ItemStack&>(item), false)
961+
);
962+
}
963+
IF_LISTENED_END(EVENT_TYPES::onSetArmor);
964+
origin(std::move(armorSlot), item);
965+
}
966+
946967
void PlayerStartDestroyBlock() { PlayerStartDestroyHook::hook(); }
947968
void PlayerDropItem() { PlayerDropItemHook::hook(); }
948969
void PlayerOpenContainerEvent() { PlayerOpenContainerHook::hook(); }
@@ -993,6 +1014,7 @@ void PlayerUseBucketTakeEvent() {
9931014
PlayerUseBucketTakeHook2::hook();
9941015
}
9951016
void PlayerConsumeTotemEvent() { PlayerConsumeTotemHook::hook(); }
1017+
void PlayerSetArmorEvent() { PlayerSetArmorHook::hook(); }
9961018

9971019
// NOLINTEND(cppcoreguidelines-pro-type-reinterpret-cast)
9981020
// NOLINTEND(cppcoreguidelines-avoid-non-const-global-variables)

src/legacy/events/EventHooks.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@ void ScoreChangedEvent();
3535
void PlayerUseBucketPlaceEvent();
3636
void PlayerUseBucketTakeEvent();
3737
void PlayerConsumeTotemEvent();
38+
void PlayerSetArmorEvent();
3839

3940
} // namespace lse::events

0 commit comments

Comments
 (0)