Skip to content

Commit 7b4fa76

Browse files
committed
fix: fix PlayerDieEvent
1 parent ea315d9 commit 7b4fa76

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/api/EventAPI.cpp

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@
1414
#include <list>
1515
#include <shared_mutex>
1616

17+
#include "EntityAPI.h"
1718
#include "ll/api/event/EventBus.h"
1819
#include "ll/api/event/player/PlayerChatEvent.h"
1920
#include "ll/api/event/player/PlayerConnectEvent.h"
21+
#include "ll/api/event/player/PlayerDieEvent.h"
2022
#include "ll/api/event/player/PlayerJoinEvent.h"
2123
#include "ll/api/event/player/PlayerLeaveEvent.h"
2224
#include "mc/world/actor/player/Player.h"
25+
#include "mc/world/level/dimension/Dimension.h"
2326

2427
//////////////////// Listeners ////////////////////
2528

@@ -314,6 +317,7 @@ bool LLSECallEventsOnHotUnload(ScriptEngine *engine) {
314317

315318
//////////////////// Events ////////////////////
316319

320+
// Todo
317321
void EnableEventListener(int eventId) {
318322
using namespace ll::event;
319323
EventBus &bus = EventBus::getInstance();
@@ -406,18 +410,21 @@ void EnableEventListener(int eventId) {
406410
// });
407411
// break;
408412

409-
// case EVENT_TYPES::onPlayerDie:
410-
// Event::PlayerDieEvent::subscribe([](const PlayerDieEvent &ev) {
411-
// IF_LISTENED(EVENT_TYPES::onPlayerDie) {
412-
// Actor *source = ev.mDamageSource->getEntity();
413-
// CallEvent(EVENT_TYPES::onPlayerDie,
414-
// PlayerClass::newPlayer(ev.mPlayer),
415-
// (source ? EntityClass::newEntity(source) :
416-
// Local<Value>()));
417-
// }
418-
// IF_LISTENED_END(EVENT_TYPES::onPlayerDie);
419-
// });
420-
// break;
413+
case EVENT_TYPES::onPlayerDie:
414+
bus.emplaceListener<ll::event::PlayerDieEvent>(
415+
[](ll::event::PlayerDieEvent &ev) {
416+
IF_LISTENED(EVENT_TYPES::onPlayerDie) {
417+
Actor *source =
418+
ll::service::getLevel()
419+
->getDimension(ev.self().getDimensionId())
420+
->fetchEntity(ev.source().getEntityUniqueID(), false);
421+
CallEvent(
422+
EVENT_TYPES::onPlayerDie, PlayerClass::newPlayer(&ev.self()),
423+
(source ? EntityClass::newEntity(source) : Local<Value>()));
424+
}
425+
IF_LISTENED_END(EVENT_TYPES::onPlayerDie);
426+
});
427+
break;
421428

422429
// case EVENT_TYPES::onRespawn:
423430
// Event::PlayerRespawnEvent::subscribe([](const PlayerRespawnEvent &ev) {

0 commit comments

Comments
 (0)