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; } /**