diff --git a/lib/EventAPI-JS.d.ts b/lib/EventAPI-JS.d.ts index cb6e598..638e1a2 100644 --- a/lib/EventAPI-JS.d.ts +++ b/lib/EventAPI-JS.d.ts @@ -215,10 +215,23 @@ declare class Event { player: Player, /** 请求类型 */ actionType: string, - /** 容器ID */ + /** 容器类型 */ ContainerNetId: string, /** 请求的槽位 */ slot: number ) => boolean | void ): boolean; + + /** 发送容器关闭数据包后(不可拦截) */ + static listen( + /** 事件名 */ + event: "SendContainerClosePacket", + /** 回调函数 */ + listener: ( + /** 要被关闭的玩家 */ + player: Player, + /** 容器类型 */ + ContainerNetId: string + ) => void + ): boolean; } diff --git a/src/EventAPI.cpp b/src/EventAPI.cpp index fae1556..f9a5d1a 100644 --- a/src/EventAPI.cpp +++ b/src/EventAPI.cpp @@ -289,6 +289,22 @@ void Export_Event_API() { ); return true; } + case doHash("SendContainerClosePacket"): { + auto Call = + RemoteCall::importAs(eventName, eventId); + eventBus->emplaceListener( + [Call](Event::PacketEvent::ContainerClosePacketSendAfterEvent& ev) { + try { + Call( + ev.getServerNetworkHandler() + .getServerPlayer(ev.getNetworkIdentifier(), ev.getPacket().mClientSubId), + magic_enum::enum_name(ev.getPacket().mContainerId).data() + ); + } catch (...) {} + } + ); + return true; + } default: return false; }