Player Particle System
Player Particle System
Section titled “Player Particle System”Player particles are effects that trigger based on player actions, movement, and status. Unlike Pokémon particles, these are attached to the player character and respond to gameplay events.
Overview
Section titled “Overview”Player particles provide:
- 73 unique triggers across 7 categories
- Action-based activation (walking, jumping, attacking, etc.)
- Flexible timing control via settings
- Category-based organization for permissions and GUI
- Multiple particle types for different use cases
Configuration Files
Section titled “Configuration Files”Player particle configurations are JSON files stored in:
config/glamour/player_particles/Each file can contain one or multiple player particle configurations.
Full Schema
Section titled “Full Schema”{ "id": "cherry_trail", "displayName": "Cherry Trail", "description": "Leaves cherry blossoms as you walk", "type": "MOVEMENT", "particleResourceId": "cherry_leaves_particle", "category": "nature", "rarity": "UNCOMMON", "settings": { "followPlayer": false, "radius": 1.0, "intervalTicks": 8, "durationTicks": 60, "offsetX": 0.0, "offsetY": 0.2, "offsetZ": 0.0, "particleCount": 2 }, "guiItemId": "minecraft:cherry_leaves", "permission": "glamour.particles.player.cherry_trail", "triggers": ["WALKING", "RUNNING"]}Field Reference
Section titled “Field Reference”Basic Fields
Section titled “Basic Fields”- Type: String
- Required: Yes
- Description: Unique identifier for the particle effect
- Rules: Lowercase, underscores, must be unique
- Example:
"cherry_trail"
displayName
Section titled “displayName”- Type: String
- Required: Yes
- Description: User-friendly name shown in GUI
- Example:
"Cherry Blossom Trail"
description
Section titled “description”- Type: String
- Required: Yes
- Description: Explanation shown to players
- Example:
"Leaves a trail of cherry blossoms as you walk"
- Type: Enum
- Required: Yes
- Description: General category of the particle
- Options:
AMBIENT- Continuous timer-based effectsMOVEMENT- Movement-triggered effectsJUMP- Jump action effectsATTACK- Attack/combat effectsSNEAK- Sneak/crouch effects
- Note: Type provides general categorization; specific behavior is controlled by
triggers - Example:
"MOVEMENT"
particleResourceId
Section titled “particleResourceId”- Type: String
- Required: Yes
- Description: Cobblemon snowstorm particle identifier
- Format: Plain name or namespaced ID
- Example:
"cherry_leaves_particle"or"cobblemon:sparkle"
category
Section titled “category”- Type: String
- Required: Yes
- Description: Category for organization and permissions
- Default Categories:
fire- Fire-themed effectsmagic- Magical/arcane effectsnature- Nature-themed effectswater- Water-themed effectselectric- Electric/lightning effectsair- Air/wind effectscombat- Combat-themed effectsstealth- Stealth/shadow effectssoul- Soul/spirit effectsmiscellaneous- Other effects
- Example:
"nature"
rarity
Section titled “rarity”- Type: Enum
- Required: Yes
- Options:
COMMON,UNCOMMON,RARE,EPIC,LEGENDARY,MYTHICAL - Usage: Affects GUI sorting and can be used for permissions
- Example:
"UNCOMMON"
guiItemId
Section titled “guiItemId”- Type: String
- Required: No
- Default:
"minecraft:firework_rocket" - Description: Item shown as icon in GUI
- Example:
"minecraft:cherry_leaves"
permission
Section titled “permission”- Type: String
- Required: No
- Default:
glamour.particles.player.<id> - Description: Permission node required to use this effect
- Example:
"glamour.particles.player.cherry_trail"
triggers
Section titled “triggers”- Type: Array of Strings
- Required: No
- Default:
[](empty = always active for AMBIENT type) - Description: Specific gameplay events that trigger this effect
- See: Complete Trigger Reference below
- Example:
["WALKING", "RUNNING", "SPRINTING"]
Settings Object
Section titled “Settings Object”The settings object controls particle behavior and appearance.
settings.followPlayer
Section titled “settings.followPlayer”- Type: Boolean
- Required: Yes
- Default:
true - Description: Whether particles follow the player or spawn at world position
- Options:
true- Particles move with player (attached)false- Particles stay where spawned (trail effect)
- Example:
false(for trails)
settings.radius
Section titled “settings.radius”- Type: Float
- Required: Yes
- Default:
2.0 - Description: Random spawn radius around spawn point in blocks
- Range: 0.0-10.0
- Example:
1.0
settings.intervalTicks
Section titled “settings.intervalTicks”- Type: Integer
- Required: Yes
- Default:
20 - Description: Ticks between particle spawns (20 ticks = 1 second)
- Range: 1-1000+
- Example:
8(0.4 seconds)
settings.durationTicks
Section titled “settings.durationTicks”- Type: Integer
- Required: Yes
- Default:
40 - Description: How long each particle instance lasts
- Range: 1-1000+
- Example:
60(3 seconds)
settings.offsetX / offsetY / offsetZ
Section titled “settings.offsetX / offsetY / offsetZ”- Type: Float
- Required: Yes
- Default:
0.0 - Description: Position offset from player center on each axis
- Usage: Adjust particle spawn location
- Example:
"offsetY": 0.2(slightly above ground)
settings.particleCount
Section titled “settings.particleCount”- Type: Integer
- Required: Yes
- Default:
1 - Description: Number of particles spawned per interval
- Range: 1-20
- Performance: Higher values increase client load
- Example:
2
Trigger Reference
Section titled “Trigger Reference”Triggers are organized into 7 categories with 73 total triggers.
Movement Triggers (13)
Section titled “Movement Triggers (13)”WALKING- Walking at normal speedRUNNING- Running (no sprint)SPRINTING- SprintingSNEAKING- Sneaking/crouchingSWIMMING- Swimming in waterFLYING- Flying (creative/spectator)JUMPING- Jumping actionFALLING- Falling through airLANDING- Landing from fallMOVING- Any movementSTANDING_STILL- Not movingCROUCHING- Sneaking positionGLIDING- Elytra gliding
Combat Triggers (11)
Section titled “Combat Triggers (11)”ATTACKING- Attacking entitiesBLOCKING- Blocking with shieldTAKING_DAMAGE- Receiving damageCRITICAL_HIT- Landing critical hitCOMBAT- In combat stateENTERING_COMBAT- Combat state startLEAVING_COMBAT- Combat state endDODGING- Dodging attacksKILLING_ENTITY- Killing entitiesDEATH- Player deathRESPAWN- Player respawn
Interaction Triggers (12)
Section titled “Interaction Triggers (12)”EATING- Eating foodDRINKING- Drinking potionsMINING- Breaking blocksPLACING_BLOCK- Placing blocksINTERACTING- Right-click interactionsCRAFTING- Crafting itemsENCHANTING- Using enchanting tableBREWING- Brewing potionsFISHING- FishingTRADING- Trading with villagersOPENING_CHEST- Opening containersUSING_ITEM- Using items
Status Triggers (11)
Section titled “Status Triggers (11)”LOW_HEALTH- Below 25% healthFULL_HEALTH- At maximum healthHEALING- Gaining healthREGENERATING- Health regenerationPOISONED- Poison effect activeON_FIRE- On fireINVISIBLE- Invisibility effect activeHUNGRY- Low food levelWELL_FED- Full food levelTIRED- (Custom implementation)ENERGIZED- (Custom implementation)
Experience Triggers (5)
Section titled “Experience Triggers (5)”LEVEL_UP- Gaining a levelGAINING_EXP- Gaining experience pointsACHIEVEMENT- Earning advancementFIRST_TIME_CRAFT- Crafting item for first timeMILESTONE_REACHED- Custom milestones
Environment Triggers (14)
Section titled “Environment Triggers (14)”IN_RAIN- While rainingIN_STORM- During thunderstormIN_SUNLIGHT- In direct sunlightIN_SHADE- In shadeUNDERWATER- UnderwaterHIGH_ALTITUDE- High Y coordinateUNDERGROUND- Below certain Y levelIN_NETHER- In Nether dimensionIN_END- In End dimensionDAY_TIME- During dayNIGHT_TIME- During nightDAWN- At dawnDUSK- At dusk- (Generic)
ENVIRONMENT- Any environmental condition
Special Triggers (7)
Section titled “Special Triggers (7)”ALWAYS- Constantly activeIDLE- When standing stillMEDITATION- (Custom implementation)CELEBRATION- Special eventsSTEALTH- Stealth modeFOCUS- Focus modeLUCKY- Lucky events
Example Configurations
Section titled “Example Configurations”Simple: Footstep Trail
Section titled “Simple: Footstep Trail”{ "id": "footsteps", "displayName": "Magical Footsteps", "description": "Sparkles appear with each step", "type": "MOVEMENT", "particleResourceId": "cobblemon:sparkle", "category": "magic", "rarity": "COMMON", "settings": { "followPlayer": false, "radius": 0.3, "intervalTicks": 10, "durationTicks": 40, "offsetX": 0.0, "offsetY": 0.1, "offsetZ": 0.0, "particleCount": 1 }, "guiItemId": "minecraft:glowstone_dust", "triggers": ["WALKING", "RUNNING"]}Intermediate: Combat Aura
Section titled “Intermediate: Combat Aura”{ "id": "battle_aura", "displayName": "Battle Aura", "description": "Fierce aura during combat", "type": "AMBIENT", "particleResourceId": "cobblemon:flame", "category": "combat", "rarity": "RARE", "settings": { "followPlayer": true, "radius": 1.5, "intervalTicks": 15, "durationTicks": 30, "offsetX": 0.0, "offsetY": 1.0, "offsetZ": 0.0, "particleCount": 3 }, "guiItemId": "minecraft:blaze_powder", "triggers": ["COMBAT", "ATTACKING"]}Advanced: Conditional Sprint Effect
Section titled “Advanced: Conditional Sprint Effect”{ "id": "speed_lines", "displayName": "Speed Lines", "description": "Motion lines when sprinting", "type": "MOVEMENT", "particleResourceId": "speed_line_particle", "category": "air", "rarity": "EPIC", "settings": { "followPlayer": false, "radius": 0.8, "intervalTicks": 3, "durationTicks": 15, "offsetX": 0.0, "offsetY": 1.0, "offsetZ": 0.0, "particleCount": 2 }, "guiItemId": "minecraft:feather", "triggers": ["SPRINTING"]}Expert: Multi-Trigger Ambient
Section titled “Expert: Multi-Trigger Ambient”{ "id": "nature_spirit", "displayName": "Spirit of Nature", "description": "Nature particles in various situations", "type": "AMBIENT", "particleResourceId": "leaf_particle", "category": "nature", "rarity": "LEGENDARY", "settings": { "followPlayer": true, "radius": 2.0, "intervalTicks": 20, "durationTicks": 80, "offsetX": 0.0, "offsetY": 1.5, "offsetZ": 0.0, "particleCount": 1 }, "guiItemId": "minecraft:oak_leaves", "triggers": ["IN_SUNLIGHT", "IN_RAIN", "WALKING"]}Best Practices
Section titled “Best Practices”Performance
Section titled “Performance”- Lower particle counts: Keep
particleCountat 1-3 for most effects - Increase intervals: 10-20 ticks is reasonable for most effects
- Short durations: 20-60 ticks prevents particle buildup
- Use followPlayer wisely:
falsefor trails,truefor auras
Design
Section titled “Design”- Match triggers to effect: Sprint effects should use SPRINTING
- Combine related triggers: [“WALKING”, “RUNNING”, “SPRINTING”]
- Consider player experience: Avoid overwhelming particle density
- Test performance: Check with multiple players active
Organization
Section titled “Organization”- Consistent naming: Use descriptive, unique IDs
- Categorize properly: Use appropriate category for permissions
- Set appropriate rarity: Affects GUI sorting and desirability
- Document clearly: Good descriptions help players choose
Integration with Wardrobe
Section titled “Integration with Wardrobe”Player particles can be used in the Wardrobe system as effect IDs in presets. The id field of a player particle becomes the effectId in a wardrobe preset.
Example:
// Player Particle (player_particles/flame.json){ "id": "flame_particle", "displayName": "Flame", ...}
// Wardrobe Preset (wardrobe/presets.json){ "id": "flame_trail", "effectId": "flame_particle", // References player particle ID ...}Commands
Section titled “Commands”Reload player particle configurations:
/particles reloadPermissions
Section titled “Permissions”Per-Particle Permission
Section titled “Per-Particle Permission”glamour.particles.player.<particle_id>Wildcard Permissions
Section titled “Wildcard Permissions”glamour.particles.player.* # All player particlesglamour.particles.category.nature.* # All in nature categoryglamour.particles.rarity.legendary.* # All legendary rarityTroubleshooting
Section titled “Troubleshooting”Particles don’t appear
Section titled “Particles don’t appear”- Check permission configuration
- Verify
particleResourceIdexists - Ensure triggers match player action
- Check particle count isn’t 0
Performance issues
Section titled “Performance issues”- Reduce
particleCount - Increase
intervalTicks - Lower
durationTicks - Limit number of active effects
Particles in wrong location
Section titled “Particles in wrong location”- Adjust
offsetX/Y/Zvalues - Check
followPlayersetting - Verify
radiusis appropriate