Skip to content

Best Practices

This guide covers recommended practices for configuring, managing, and deploying Glamour particle effects on your server.

Use clear, descriptive IDs that indicate the particle’s purpose:

Good Examples:

"id": "shiny_sparkle"
"id": "legendary_aura"
"id": "fire_sendout_burst"
"id": "ghost_night_ambient"

Poor Examples:

"id": "particle1"
"id": "test"
"id": "p_01"
"id": "shiny" // Too generic

Naming Pattern:

<trigger/type>_<element/theme>_<effect_type>
Examples:
- sendout_fire_explosion
- ambient_cosmic_trail
- legendary_rainbow_aura

Organize configuration files logically:

config/glamour/
├── particles/
│ ├── sendout/
│ │ ├── common_confetti.json
│ │ ├── rare_dragon_breath.json
│ │ └── epic_cosmic_burst.json
│ └── ambient/
│ ├── common_sparkle.json
│ └── rare_flame_aura.json
├── persistent_particles/
│ ├── species/
│ │ ├── shiny_all.json
│ │ └── legendary_pokemon.json
│ ├── environmental/
│ │ ├── fire_in_nether.json
│ │ └── water_in_ocean.json
│ └── conditional/
│ ├── low_health.json
│ └── battle_intensity.json

Note: Glamour doesn’t read subdirectories - this is just for your organization. Use flat structure or keep documentation of groupings.

Design categories that match your server’s theme:

General Server:

  • common - Basic, widely available
  • elemental - Type-based effects
  • magical - Mystical/arcane
  • cosmic - Space/star themed
  • celebration - Festive/party

RPG Server:

  • warrior - Combat/strength themed
  • mage - Magical/spell themed
  • ranger - Nature/hunting themed
  • divine - Holy/blessed effects
  • cursed - Dark/forbidden effects

Competitive Server:

  • bronze - Basic tier
  • silver - Mid tier
  • gold - High tier
  • platinum - Premium tier
  • champion - Elite tier

Create a logical progression of effects:

COMMON → UNCOMMON → RARE → EPIC → LEGENDARY → MYTHICAL

Rarity Guidelines:

RarityAvailabilityVisual IntensityPermission Strategy
COMMONEveryoneSubtleFree to all
UNCOMMONEasy to getNoticeableFree or cheap
RAREModerately restrictedEye-catchingVIP/Earned
EPICLimitedImpressivePremium/Achievements
LEGENDARYVery restrictedSpectacularTop tier rewards
MYTHICALExtremely rareOverwhelmingSpecial events only

Free-to-Play:

Terminal window
# Basic access
lp group default permission set glamour.command.particles true
lp group default permission set glamour.command.particles.gui true
lp group default permission set glamour.particles.rarity.common.* true

VIP Tier 1 (Small donation):

Terminal window
lp group vip1 parent add default
lp group vip1 permission set glamour.particles.rarity.uncommon.* true

VIP Tier 2 (Medium donation):

Terminal window
lp group vip2 parent add vip1
lp group vip2 permission set glamour.particles.rarity.rare.* true

VIP Tier 3 (Large donation):

Terminal window
lp group vip3 parent add vip2
lp group vip3 permission set glamour.particles.rarity.epic.* true

Admin/Staff:

Terminal window
lp group admin permission set glamour.particles.* true
lp group admin permission set glamour.command.particles.reload true
lp group admin permission set glamour.command.persistentparticles true

For thematic servers:

Terminal window
# Fire-themed rank gets fire particles
lp group pyromancer permission set glamour.particles.category.fire.* true
# Water-themed rank gets water particles
lp group aquamancer permission set glamour.particles.category.water.* true

Grant specific high-tier particles for events:

Terminal window
# Holiday event reward
lp user PlayerName permission set glamour.particles.winter_wonderland true
# Tournament winner
lp user ChampionPlayer permission set glamour.particles.champion_aura true
# Achievement unlock
lp user PlayerName permission set glamour.particles.legendary_sparkle true

When creating new particles, start with high values and decrease gradually:

Initial Settings:

{
"settings": {
"intervalTicks": 100, // Start high
"particleCount": 1, // Start low
"radius": 0.5, // Start small
"maxDistance": 24 // Start short
}
}

After Testing:

{
"settings": {
"intervalTicks": 40, // Reduced after testing
"particleCount": 3, // Increased after testing
"radius": 1.5, // Increased after testing
"maxDistance": 32 // Increased after testing
}
}

High Performance (Subtle Effect):

{
"intervalTicks": 100,
"particleCount": 1,
"radius": 0.5,
"maxDistance": 16
}

Balanced (Noticeable Effect):

{
"intervalTicks": 40,
"particleCount": 3,
"radius": 1.0,
"maxDistance": 32
}

High Impact (Spectacular Effect):

{
"intervalTicks": 20,
"particleCount": 5,
"radius": 2.0,
"maxDistance": 48,
"onlyWhenVisible": true // Important for performance!
}

Rule: High-impact effects must use visibility optimization.

{
"settings": {
// Common particles: no visibility check
"onlyWhenVisible": false,
"requiresLOS": false
}
}
{
"settings": {
// Rare particles: cheap visibility check
"onlyWhenVisible": true,
"requiresLOS": false
}
}
{
"settings": {
// Epic+ particles: full LOS (use sparingly!)
"onlyWhenVisible": true,
"requiresLOS": true
}
}

Design priorities to create logical override chains:

Generic (Low Priority 1-50)
Type-Based (Medium Priority 51-100)
Species-Specific (High Priority 101-150)
Special Conditions (Very High Priority 151-200)
Ultimate Overrides (Priority 201+)

Example Hierarchy:

// Priority 50: All shiny Pokemon
{
"id": "shiny_basic",
"priority": 50,
"conditions": { "isShiny": true }
}
// Priority 100: Fire-type Pokemon
{
"id": "fire_aura",
"priority": 100,
"conditions": { "types": ["fire"] }
}
// Priority 150: Charizard specifically
{
"id": "charizard_special",
"priority": 150,
"conditions": { "species": ["charizard"] }
}
// Priority 200: Shiny Charizard
{
"id": "shiny_charizard_ultimate",
"priority": 200,
"conditions": {
"species": ["charizard"],
"isShiny": true
}
}

Too Broad (Will match too many Pokemon):

{
"conditions": {
"types": ["normal"] // Most Pokemon have normal type
}
}

Too Specific (Will rarely match):

{
"conditions": {
"species": ["charizard"],
"isShiny": true,
"level": { "exact": 100 },
"weather": ["clear"],
"timeOfDay": ["day"],
"biomes": ["minecraft:plains"]
}
}

Well Balanced:

{
"conditions": {
"species": ["mewtwo", "mew"],
"isShiny": true
}
}

Use environmental conditions for immersion:

Good Use Cases:

  • Fire Pokemon in Nether
  • Water Pokemon in oceans
  • Ghost Pokemon at night
  • Ice Pokemon in snow biomes

Example:

{
"id": "ice_in_snow",
"priority": 80,
"conditions": {
"types": ["ice"],
"biomes": [
"minecraft:snowy_plains",
"minecraft:ice_spikes",
"minecraft:frozen_peaks"
]
}
}
  1. Create Config: Write JSON configuration
  2. Validate JSON: Use online JSON validator
  3. Load Config: Place in directory and /particles reload
  4. Visual Test: Apply to Pokemon and observe
  5. Performance Test: Check /persistentparticles stats
  6. Iterate: Adjust values and reload
  7. Document: Add to your server’s particle guide

For each new particle:

  • JSON is valid
  • Particle resource ID exists in Cobblemon
  • Effect renders correctly
  • Performance is acceptable (<5ms impact)
  • Permissions work as intended
  • Persistence works (survives restart)
  • Looks good from multiple angles
  • Doesn’t conflict with other particles
  • Documented for players

Monitor with /persistentparticles stats:

Good Performance:

Renders This Tick: 28/100
LOS Tests: 5/50

Concerning Performance:

Renders This Tick: 85/100 ⚠️ Getting high
LOS Tests: 45/50 ⚠️ Near limit

Poor Performance:

Renders This Tick: 100/100 ❌ At limit
LOS Tests: 50/50 ❌ At limit

If at limits, reduce particle frequency or counts.

Document your particles for players:

# Server Particle Guide
## Available Particles
### Common (Free for All)
- **Confetti Burst** - Celebratory sendout
- **Sparkle Aura** - Gentle ambient effect
### Uncommon (VIP Tier 1)
- **Star Trail** - Cosmic sendout
- **Flame Aura** - Fire ambient
### Rare (VIP Tier 2)
...
## How to Apply
1. Use `/particles gui` to open menu
2. Browse by category or rarity
3. Select particle and Pokemon
4. Enjoy!

Create helpful server messages:

/particles help - Shows available commands
/particles list - Shows YOUR available particles
/particles gui - Interactive particle browser

Backup particle configurations regularly:

Terminal window
# Backup script
DATE=$(date +%Y%m%d)
tar -czf glamour_backup_$DATE.tar.gz config/glamour/

Use Git for configuration management:

Terminal window
cd config/glamour/
git init
git add .
git commit -m "Initial particle configurations"
# After changes
git add .
git commit -m "Added legendary particle effects"

Keep a changelog:

# Glamour Configuration Changelog
## 2025-10-01
- Added shiny legendary ultimate effect
- Adjusted fire_nether_boost priority from 70 to 80
- Reduced champion_aura particle count from 6 to 4
## 2025-09-25
- Initial particle configurations
- Created 15 base particles
- Set up permission structure
  • Review /persistentparticles stats for performance
  • Check logs for errors
  • Test new particle additions
  • Backup configurations
  • Review player feedback
  • Optimize underperforming particles
  • Clean up unused configurations
  • Full configuration audit
  • Update documentation
  • Plan new particle releases
  • Review permission structure effectiveness

Collect feedback on particles:

  • Polls on favorite effects
  • Bug reports for visual issues
  • Performance complaints
  • Requests for new particles

Host particle-themed events:

  • Particle Showcase - Players show off rare particles
  • Design Contest - Players suggest new particle ideas
  • Limited Editions - Seasonal or event-exclusive particles

Use particles as rewards for:

  • Achievements
  • Events
  • Milestones (playtime, Pokemon caught, etc.)
  • Community contributions