From 054a1d6a0a3b8d87e838cb2f52c92062c623d658 Mon Sep 17 00:00:00 2001 From: killcerr Date: Tue, 10 Jun 2025 09:44:50 +0800 Subject: [PATCH] feat: improve PlayerClass::talkAs --- src/legacy/api/PlayerAPI.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/legacy/api/PlayerAPI.cpp b/src/legacy/api/PlayerAPI.cpp index 5a066a1..cf7d12e 100644 --- a/src/legacy/api/PlayerAPI.cpp +++ b/src/legacy/api/PlayerAPI.cpp @@ -1678,20 +1678,13 @@ Local PlayerClass::talkAs(const Arguments& args) { try { Player* player = get(); if (!player) return Local(); - - TextPacket pkt = - TextPacket::createChat(player->getRealName(), args[0].asString().toString(), {}, player->getXuid(), {}); if (ll::service::getLevel().has_value()) { - IF_LISTENED(EVENT_TYPES::onChat) { - if (!CallEvent( - EVENT_TYPES::onChat, - PlayerClass::newPlayer(player), - String::newString(args[0].asString().toString()) - )) { - return Boolean::newBoolean(false); - } - } - IF_LISTENED_END(EVENT_TYPES::onChat); + auto msg = args[0].asString().toString(); + ll::event::PlayerChatEvent event{*reinterpret_cast(player), msg}; + ll::event::EventBus::getInstance().publish(event); + if (event.isCancelled()) return Boolean::newBoolean(false); + TextPacket pkt = + TextPacket::createChat(player->getRealName(), msg, {}, player->getXuid(), {}); ll::service::getLevel()->forEachPlayer([&pkt](Player& player) { player.sendNetworkPacket(pkt); return true; @@ -3717,4 +3710,4 @@ Local PlayerClass::toEntity(const Arguments&) { return EntityClass::newEntity(get()); } CATCH("Fail in toEntity!"); -} \ No newline at end of file +}