Particles & Visuals
Particles & Visuals
Section titled “Particles & Visuals”Titan integrates with Cobblemon’s Snowstorm particle system to reuse existing battle effects, ensuring visual consistency and reducing resource creation overhead.
Snowstorm Particle Integration
Section titled “Snowstorm Particle Integration”The particle_effect() MoLang helper supports automatic fallback:
- Check Vanilla Registry - Try
minecraft:particles first - Fallback to Snowstorm - If not vanilla, send
SpawnSnowstormParticlePacket - Radius Inference - Calculates render radius from
spreadparameter (clamped 16-96 blocks)
Usage in MoLang
Section titled “Usage in MoLang”// Vanilla particleq.particle_effect('minecraft:flame', q.position(0), 50, 2.0);
// Cobblemon snowstorm particle (automatic fallback)q.particle_effect('cobblemon:thunder_actorcloud', q.position(0), 100, 4.0);
// Position offset (x+0, y+1.5, z+0)q.particle_effect('cobblemon:flame_burst', q.position(0) + [0, 1.5, 0], 80, 3.0);Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
id | String | Particle identifier (vanilla or Cobblemon) |
pos | Vec3 | Spawn position (use q.position(0) for entity center) |
count | Number | Number of particles to spawn |
spread | Number | Spread radius (also determines render distance) |
Available Cobblemon Particles
Section titled “Available Cobblemon Particles”Cobblemon includes a wide variety of particles for different move types and effects.
Common Titan Particles
Section titled “Common Titan Particles”| Identifier | Type | Best For | Used In |
|---|---|---|---|
cobblemon:thunder_actorcloud | Electric | Lightning strikes, electric fields | Raichu (all moves) |
cobblemon:flame_burst | Fire | Explosions, fire attacks | Charizard, Arcanine |
cobblemon:water_pulse | Water | Water impacts, aquatic attacks | Blastoise, Gyarados |
cobblemon:psychic_rings | Psychic | Mental attacks, teleportation | Mewtwo, Alakazam |
cobblemon:ghost_wisp | Ghost | Ghost-type moves | Gengar, Mimikyu |
cobblemon:dragon_breath | Dragon | Dragon-type attacks | Rayquaza, Dragonite |
cobblemon:ice_shard | Ice | Ice attacks, freezing | Articuno, Lapras |
cobblemon:rock_smash | Rock | Impact, ground attacks | Aggron |
cobblemon:leaf_storm | Grass | Nature attacks | Sceptile, Venusaur |
cobblemon:electric_spark | Electric | Small electric effects | Pikachu, Raikou |
Action Effect Examples
Section titled “Action Effect Examples”Raichu Lightning Rod
Section titled “Raichu Lightning Rod”{ "type": "titan:server_molang", "startTicks": 32, "expression": "q.particle_effect('cobblemon:thunder_actorcloud', q.position(0) + [0, 2.5, 0], 200, 5.0)"}Effect: Spawns thunder cloud 2.5 blocks above Raichu with 5-block spread.
Raichu Overcharge
Section titled “Raichu Overcharge”{ "type": "titan:server_molang", "startTicks": 18, "expression": "q.particle_effect('cobblemon:thunder_actorcloud', q.position(0), 180, 3.5)"}Effect: Electric field centered on Raichu during powerup.
Ceruledge Infernal Charge
Section titled “Ceruledge Infernal Charge”{ "type": "titan:server_molang", "startTicks": 10, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0) + [0, 1.0, 0], 120, 2.5)"}Effect: Flame explosion 1 block above Ceruledge during charge-up.
Vanilla Particles
Section titled “Vanilla Particles”Titan also supports all vanilla Minecraft particles:
Common Vanilla Particles
Section titled “Common Vanilla Particles”| Identifier | Best For |
|---|---|
minecraft:flame | Small fires, trails |
minecraft:large_smoke | Explosions, impact clouds |
minecraft:electric_spark | Small electric zaps |
minecraft:explosion | Large explosions |
minecraft:firework | Celebratory effects |
minecraft:enchant | Magic effects |
minecraft:portal | Teleportation |
minecraft:soul_fire_flame | Ghost/dark effects |
minecraft:dripping_lava | Molten effects |
minecraft:end_rod | Beams, projectiles |
Vanilla Example
Section titled “Vanilla Example”{ "type": "titan:server_molang", "startTicks": 0, "expression": "q.particle_effect('minecraft:explosion', q.position(0), 1, 0.0)"}Vulnerability Particles
Section titled “Vulnerability Particles”Vulnerability windows spawn visual feedback particles:
| Vulnerability | Particle | Color |
|---|---|---|
| RECOVERING | Happy Villager | Green sparkles |
| EXHAUSTED | Angry Villager | Red clouds |
| STUNNED | Electric Spark | Yellow lightning |
Telegraph Markers
Section titled “Telegraph Markers”Ground markers use colored particles to warn of attack zones:
| Severity | Color | Particle | Duration |
|---|---|---|---|
| WARNING | Yellow | minecraft:flame | 0.6-1.0s |
| DANGER | Orange | minecraft:lava | 0.8-1.2s |
| CRITICAL | Red | minecraft:soul_fire_flame | 1.2-1.8s |
See Telegraph System for details.
Position Helpers
Section titled “Position Helpers”Use MoLang position queries for precise particle placement:
// Entity centerq.position(0)// Returns: [x, y, z] array
// Individual componentsq.position(1) // X coordinateq.position(2) // Y coordinateq.position(3) // Z coordinate
// Offset examplesq.position(0) + [0, 2.0, 0] // 2 blocks aboveq.position(0) + [1.5, 0, 0] // 1.5 blocks to the sideq.position(0) + [0, -0.5, 0] // 0.5 blocks belowParticle Effect Patterns
Section titled “Particle Effect Patterns”Circle Pattern
Section titled “Circle Pattern”Spawn particles in a circle around the entity:
// Not directly supported - use ActionEffect timeline with multiple keyframesAlternative: Use multiple server_molang keyframes at staggered ticks:
{ "keyframes": [ { "type": "titan:server_molang", "startTicks": 0, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0) + [2, 0, 0], 20, 0.5)" }, { "type": "titan:server_molang", "startTicks": 2, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0) + [-2, 0, 0], 20, 0.5)" }, { "type": "titan:server_molang", "startTicks": 4, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0) + [0, 0, 2], 20, 0.5)" }, { "type": "titan:server_molang", "startTicks": 6, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0) + [0, 0, -2], 20, 0.5)" } ]}Rising Effect
Section titled “Rising Effect”Particles that ascend over time:
{ "keyframes": [ { "type": "titan:server_molang", "startTicks": 0, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 0.5, 0], 10, 0.3)" }, { "type": "titan:server_molang", "startTicks": 4, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 1.5, 0], 10, 0.3)" }, { "type": "titan:server_molang", "startTicks": 8, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 2.5, 0], 10, 0.3)" } ]}Explosion Burst
Section titled “Explosion Burst”Multiple particles at impact:
{ "type": "titan:server_molang", "startTicks": 25, "expression": "q.particle_effect('minecraft:explosion', q.position(0), 3, 0.5); q.particle_effect('minecraft:large_smoke', q.position(0), 40, 2.0); q.particle_effect('minecraft:flame', q.position(0), 60, 2.5)"}Note: Multiple q.particle_effect() calls in one expression execute sequentially.
Sound Integration
Section titled “Sound Integration”Combine particles with sounds for complete effect:
q.particle_effect('cobblemon:thunder_actorcloud', q.position(0), 150, 4.0);q.play_sound('minecraft:entity.lightning_bolt.thunder', 0.9, 1.2)Reference: See MoLang Effect Functions.
Performance Considerations
Section titled “Performance Considerations”- Count Limits - Keep particle counts reasonable (20-200 per effect)
- Spread Radius - Larger spreads affect more clients (16-96 block render distance)
- Frequency - Avoid spawning every tick; use keyframe timing (every 4-10 ticks)
- Client Performance - Dense particles (>500 in area) can lag low-end clients
Optimized Example
Section titled “Optimized Example”{ "keyframes": [ // Initial burst (high count, rare) { "type": "titan:server_molang", "startTicks": 0, "expression": "q.particle_effect('cobblemon:flame_burst', q.position(0), 200, 5.0)" }, // Sustained effect (low count, frequent) { "type": "titan:server_molang", "startTicks": 10, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 1.5, 0], 8, 1.0)" }, { "type": "titan:server_molang", "startTicks": 16, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 1.5, 0], 8, 1.0)" }, { "type": "titan:server_molang", "startTicks": 22, "expression": "q.particle_effect('minecraft:flame', q.position(0) + [0, 1.5, 0], 8, 1.0)" } ]}Debugging Particles
Section titled “Debugging Particles”If particles don’t appear:
- Check Identifier - Verify the particle ID is correct
- Verify Position - Use
q.position(0)returns valid coordinates - Check Render Distance - Client may be too far (spread × 2 = max distance)
- Server Logs - Look for particle-related errors
Particle Appendix
Section titled “Particle Appendix”Raichu Move → Particle Mapping
Section titled “Raichu Move → Particle Mapping”| Move | Particles Used |
|---|---|
| Storm Call | cobblemon:thunder_actorcloud |
| Thunderstrike | cobblemon:electric_spark |
| Chain Lightning | cobblemon:thunder_actorcloud + minecraft:electric_spark |
| Discharge Nova | cobblemon:thunder_actorcloud (large spread) |
| Lightning Dash | minecraft:electric_spark (trail) |
| Gigavolt Havoc | cobblemon:thunder_actorcloud (massive) |
| Overcharge | cobblemon:thunder_actorcloud (sustained) |
| Lightning Rod | cobblemon:thunder_actorcloud (vertical beam) |
Ceruledge Move → Particle Mapping
Section titled “Ceruledge Move → Particle Mapping”| Move | Particles Used |
|---|---|
| Infernal Charge | cobblemon:flame_burst |
| Shadow Claw | minecraft:soul_fire_flame |
| Bitter Blade | minecraft:soul_fire_flame + cobblemon:flame_burst |
| Armor Oblivion | cobblemon:flame_burst (multi-stage) |
Best Practices
Section titled “Best Practices”- Match Type - Use cobblemon particles matching Pokémon’s type (electric → thunder_actorcloud)
- Consistent Style - Stick to either all cobblemon or all vanilla per Titan
- Layering - Combine multiple particles for depth (e.g., explosion + smoke + flame)
- Timing - Sync particles with keyframe actions (damage, telegraph, vulnerability)
- Vertical Offset - Add +1.0 to +2.5 Y offset for visibility above ground
Next Steps
Section titled “Next Steps”- MoLang Effect Functions → - Sound and visual helpers
- Action Effects → - Build move timelines
- Creating Custom Moves → - Complete move authoring
Leverage Cobblemon’s particle library for polished, consistent visual effects!