Math.PI = 3.141592653589793; // pi is undefined for some reason :/
const firework_colors = [
0x000000, // black
0x0000ff, // blue
0x864300, // brown
0x00ffff, // cyan
0x00ff00, // green
0x00aaff, // light_blue
0xff00ff, // magenta
0xffaa00, // orange
0xff0000, // red
0xffffff, // white
0xffff00, // yellow
];
LevelEvents.afterExplosion((event) => {
if (event.exploder.type != "minecraft:creeper") return;
const speed = 0.8;
const length = 1;
const count = Math.random() * 4 + 2;
for (let i = 0; i < count; i++) {
let yaw = Math.random() * Math.PI * 2;
let pitch = Math.random() * Math.PI / 2;
let firework = event.block.createEntity("firework_rocket");
firework.mergeFullNBT({
Motion: [
speed * Math.cos(yaw),
speed * Math.sin(pitch),
speed * Math.sin(yaw),
],
LifeTime: length,
FireworksItem: {
id: "firework_rocket",
Count: 1,
tag: {
Fireworks: {
Flight: length,
Explosions: [
{
Type: 1,
Flicker: true,
Colors: NBT.intArrayTag([
Utils.randomOf(Utils.getRandom(),firework_colors)
]),
},
],
},
},
},
});
firework.spawn();
}
});
summons 2-5 fireworks in random directions when creeper explodes