Cobblemon Firework Capsules
Send out your Pokemon with a bang using fireworks and custom stickers!

Basics
## Ball Capsule Recipe

## Adding Fireworks
Ball Capsules can be combined with any number of Firework Stars.

## Capsule Station Recipe
You can equip your ball capsule to your Pokemon using a Capsule Station.
Special thanks to **dogtorbloo** for the custom block model!

Stickers
## Sticker Recipe
Stickers can be crafted using Paper + Gunpowder + an ingredient.
As of v1.0.0 there are 18 stickers, one for each type, which can be crafted using the type gems.

## Modifying Stickers
Stickers can be modified with dyes, a Diamond or Glowstone Dust to modify its properties the same way as Firework Stars (note that most stickers have been designed without these properties in mind).

## Combining Stickers
Stickers can be combined with a Ball Capsule along with other stickers and Firework Stars to create all kinds of effects.

Addon Support
Firework Capsules uses a custom particle engine which expands on the existing Minecraft fireworks system, allowing for custom particle integration.
Refer to below for the steps required to add a custom sticker.
StickerExplosion Class
The StickerExplosion class requires five fields:
```
ResourceLocation id;
IntList colors;
IntList fadeColors;
boolean hasTrail;
boolean hasTwinkle;
```
The id and colors are unmodifiable and must be set when registering.
The other three parameters can optionally be set during initialization and/or by players during gameplay.
Sticker Item Class
The sticker item must be registered with a corresponding StickerExplosion.
```
new StickerItem(new StickerExplosion(...));
```
Custom Particle Function
The custom particle function is a consumer that provides parameters which you can use to set up your custom particles.
The **scale** parameter can be used scale your radius and particle sizes, and is dependent on the size of the Pokemon.
The **scaleFactor** parameter is determined by the scale parameter and can be used to adjust the number of particles generated based on the Pokemon size.
```
@FunctionalInterface
public interface CustomParticleFunction {
void accept(ClientLevel clientLevel, double x, double y, double z, float rot, ParticleEngine particleEngine, StickerExplosion explosion, float scale, double scaleFactor);
}
```
Sticker Registration Event
Each StickerExplosion must also be registered on the Sticker Registration Event, which is run on the client side.
Fabric
```
public class ExampleClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
StickerRegistryEvent.EVENT.register((event) -> {
event.register(StickerExplosion, CustomParticleFunction);
);
}
}
```
NeoForge
This event is run on the **MOD** bus.
```
@EventBusSubscriber(value = Dist.CLIENT, modid = Example.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
public static class ClientEvents {
@SubscribeEvent
public static void registerStickers(StickerRegistryEvent event) {
event.register(StickerExplosion, CustomParticleFunction);
}
}
```