From 9d65768cd3bd0e1bf51e2a0d7d4e7819d436c063 Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Wed, 21 Jan 2026 22:54:06 +0800 Subject: [PATCH] feat(events): add C4 explosion event emission --- src/server_scripts/C4.js | 11 +++++++++++ src/server_scripts/TeamsManager.js | 0 src/startup_scripts/DataBus.js | 0 types/C4.d.ts | 13 +++++++++++++ types/EventBus.d.ts | 1 + 5 files changed, 25 insertions(+) create mode 100644 src/server_scripts/TeamsManager.js create mode 100644 src/startup_scripts/DataBus.js diff --git a/src/server_scripts/C4.js b/src/server_scripts/C4.js index 27f6d77..0a6d135 100644 --- a/src/server_scripts/C4.js +++ b/src/server_scripts/C4.js @@ -196,6 +196,17 @@ function handleC4Activated(event) { // Assert C4 exsiting if (toExplosionC4Map[newBlockPosString] === null) return; + // Emit C4 explosion event + /** @type {EventBus} */ + const eventBus = /** @type {any} */ (global["eventBus"]); + if (eventBus === null) return; + + eventBus.emit("C4Explosion", { + level: level, + position: c4BlockPos, + power: explosionPower, + }); + level.explode( /** @type {any} */ (null), c4BlockPos.x + 0.5, diff --git a/src/server_scripts/TeamsManager.js b/src/server_scripts/TeamsManager.js new file mode 100644 index 0000000..e69de29 diff --git a/src/startup_scripts/DataBus.js b/src/startup_scripts/DataBus.js new file mode 100644 index 0000000..e69de29 diff --git a/types/C4.d.ts b/types/C4.d.ts index 4a98550..43afcaf 100644 --- a/types/C4.d.ts +++ b/types/C4.d.ts @@ -14,3 +14,16 @@ interface C4ActivatedEvent { explosionTime: number; explosionPower: number; } + +/** + * Event data for C4 explosion events. + */ +interface C4ExplosionEvent { + level: Internal.Level; + position: { + x: number; + y: number; + z: number; + }; + power: number; +} diff --git a/types/EventBus.d.ts b/types/EventBus.d.ts index afe82d5..2fefb3e 100644 --- a/types/EventBus.d.ts +++ b/types/EventBus.d.ts @@ -6,6 +6,7 @@ interface EventMap { LivingEntityUseItemEvent$Finish: Internal.LivingEntityUseItemEvent$Finish; C4Activated: C4ActivatedEvent; C4UseStarted: C4UseStartedEvent; + C4Explosion: C4ExplosionEvent; } /**