#Creeper Confetti

9 messages · Page 1 of 1 (latest)

misty geyser
#
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

shut patrol
#

you shouldn't put mutating fields in for loop condition

#

for (let i = 0; i < Math.random() * 4 + 2; i++)

#

it will call that math.random() function every call

#

you want to do something like

let count = Math.random() * 4 + 2;
for (let i = 0; i < count; i++)
misty geyser
shut patrol
#

nope, thats all C based languages

#

for(init, cond, itr) {} cond part is evaulated every iteration

misty geyser
#

yeah that makes sence