Wardrobe Presets
Wardrobe Presets
Section titled “Wardrobe Presets”Presets are pre-configured particle effects that players can equip in their wardrobe slots. They define which particle plays, when it triggers, and under what conditions.
Configuration File
Section titled “Configuration File”Presets are defined in: config/glamour/wardrobe/presets.json
The file contains an array of preset objects:
[ { "id": "flame_trail", "displayName": "Flame Trail", "description": "Leaves a trail of flames as you move", "slot": "movement", "effectId": "flame_particle", "moments": ["WALK", "RUN", "SPRINT"], "settings": { "anchor": "SELF", "intervalTicks": 5, "durationTicks": 30, "cooldownTicks": 0, "chance": 1.0 }, "conditions": null, "permission": "glamour.wardrobe.preset.flame_trail" }]Field Reference
Section titled “Field Reference”Basic Fields
Section titled “Basic Fields”- Type: String
- Required: Yes
- Description: Unique identifier for the preset
- Rules: Lowercase, underscores, no spaces
- Example:
"flame_trail"
displayName
Section titled “displayName”- Type: String
- Required: Yes
- Description: User-friendly name shown in GUI
- Example:
"Flame Trail"
description
Section titled “description”- Type: String
- Required: Yes
- Description: Explanation of the effect
- Example:
"Leaves a trail of flames as you move"
- Type: String
- Required: Yes
- Description: Which wardrobe slot this preset belongs to
- Options:
"ambient"- Continuous aura effects"movement"- Walking/running effects"jump"- Jump effects"attack"- Combat effects"sneak"- Sneaking effects
- Example:
"movement"
effectId
Section titled “effectId”- Type: String
- Required: Yes
- Description: ID of the PlayerParticleConfig to use
- Note: Must reference an existing player particle effect ID
- Example:
"flame_particle"
moments
Section titled “moments”- Type: Array of Strings
- Required: Yes
- Description: Gameplay events that trigger this preset
- See: Complete Moments Reference below
- Example:
["WALK", "RUN", "SPRINT"]
permission
Section titled “permission”- Type: String
- Required: No
- Default:
glamour.wardrobe.preset.<id> - Description: Custom permission node
- Example:
"glamour.wardrobe.preset.flame_trail"
Settings Object
Section titled “Settings Object”settings.anchor
Section titled “settings.anchor”- Type: Enum
- Required: Yes
- Options:
"SELF"- Particles spawn at/around the player"TARGET"- Particles spawn at the target location/entity
- Usage: TARGET is useful for attack/interaction effects
- Example:
"SELF"
settings.intervalTicks
Section titled “settings.intervalTicks”- Type: Integer
- Required: Yes
- Description: Ticks between particle spawns (20 ticks = 1 second)
- Range: 1-1000+
- Example:
5(spawn every 0.25 seconds)
settings.durationTicks
Section titled “settings.durationTicks”- Type: Integer
- Required: Yes
- Description: How long each particle instance lasts
- Range: 1-1000+
- Example:
30(1.5 seconds)
settings.cooldownTicks
Section titled “settings.cooldownTicks”- Type: Integer
- Required: Yes
- Description: Minimum ticks between triggers
- Usage: Prevents spam, 0 = no cooldown
- Example:
20(1 second cooldown)
settings.chance
Section titled “settings.chance”- Type: Float
- Required: Yes
- Description: Probability of triggering (0.0 to 1.0)
- Range: 0.0 (never) to 1.0 (always)
- Example:
0.75(75% chance)
Conditions Object
Section titled “Conditions Object”All condition fields are optional. Use null or omit the conditions object entirely if no conditions are needed.
conditions.requireSneaking
Section titled “conditions.requireSneaking”- Type: Boolean
- Description: Only trigger while sneaking
- Example:
true
conditions.requireInWater
Section titled “conditions.requireInWater”- Type: Boolean
- Description: Only trigger while in water
- Example:
true
conditions.allowDimensions
Section titled “conditions.allowDimensions”- Type: Array of Strings
- Description: Only trigger in specific dimensions
- Example:
["minecraft:overworld", "minecraft:the_nether"]
conditions.timeOfDay
Section titled “conditions.timeOfDay”- Type: String
- Description: Only trigger during specific time
- Options:
"DAY","NIGHT","DAWN","DUSK" - Example:
"NIGHT"
conditions.minHealthPercent
Section titled “conditions.minHealthPercent”- Type: Float
- Description: Minimum health percentage to trigger (0.0-100.0)
- Example:
50.0(at least 50% health)
conditions.maxHealthPercent
Section titled “conditions.maxHealthPercent”- Type: Float
- Description: Maximum health percentage to trigger (0.0-100.0)
- Example:
25.0(at most 25% health)
Moments Reference
Section titled “Moments Reference”Moments are gameplay events that trigger preset effects.
Ambient/Idle
Section titled “Ambient/Idle”AURA- Continuous aura effectIDLE- When standing still
Movement
Section titled “Movement”MOVE- Any movementWALK- Walking speedRUN- Running (no sprint)SPRINT- SprintingSNEAK- Sneaking/crouchingJUMP- JumpingFALL- FallingLAND- Landing from a fallGLIDE- Gliding with elytraSWIM- SwimmingFLY- Flying (creative/spectator)
Combat
Section titled “Combat”STRIKE- Attacking/hittingBLOCK- Blocking with shieldHURT- Taking damageHEAL- Gaining healthCRIT- Critical hitENTER_COMBAT- Entering combat stateLEAVE_COMBAT- Leaving combat stateKILL- Killing an entityDEATH- Player deathRESPAWN- Player respawn
Interaction
Section titled “Interaction”INTERACT- Right-clicking entities/blocksPLACE_BLOCK- Placing blocksMINE- Breaking blocksUSE_ITEM- Using itemsEAT- Eating foodDRINK- Drinking potionsFISH- FishingTRADE- Trading with villagersOPEN_CHEST- Opening containers
Experience
Section titled “Experience”LEVEL_UP- Gaining a levelGAIN_XP- Gaining experience pointsACHIEVEMENT- Earning an achievement/advancement
Environment
Section titled “Environment”RAIN- While it’s rainingSTORM- During thunderstormsSUNLIGHT- In direct sunlightSHADE- In shadeUNDERWATER- UnderwaterHIGH_ALTITUDE- At high Y coordinatesUNDERGROUND- Below a certain Y levelNETHER- In the NetherEND- In the EndDAY- During daytimeNIGHT- During nighttimeDAWN- At dawnDUSK- At dusk
Example Configurations
Section titled “Example Configurations”Simple: Walking Trail
Section titled “Simple: Walking Trail”{ "id": "cherry_petals", "displayName": "Cherry Blossom Trail", "description": "Cherry blossom petals fall as you walk", "slot": "movement", "effectId": "cherry_leaves_particle", "moments": ["WALK", "RUN"], "settings": { "anchor": "SELF", "intervalTicks": 10, "durationTicks": 60, "cooldownTicks": 0, "chance": 1.0 }, "conditions": null, "permission": "glamour.wardrobe.preset.cherry_petals"}Intermediate: Combat Burst
Section titled “Intermediate: Combat Burst”{ "id": "lightning_strike", "displayName": "Lightning Strike", "description": "Lightning sparks on critical hits", "slot": "attack", "effectId": "lightning_particle", "moments": ["CRIT"], "settings": { "anchor": "TARGET", "intervalTicks": 1, "durationTicks": 20, "cooldownTicks": 40, "chance": 1.0 }, "conditions": null, "permission": "glamour.wardrobe.preset.lightning_strike"}Advanced: Conditional Effect
Section titled “Advanced: Conditional Effect”{ "id": "danger_aura", "displayName": "Danger Aura", "description": "Warning aura when health is low", "slot": "ambient", "effectId": "red_pulse", "moments": ["AURA"], "settings": { "anchor": "SELF", "intervalTicks": 20, "durationTicks": 30, "cooldownTicks": 0, "chance": 1.0 }, "conditions": { "minHealthPercent": 0.0, "maxHealthPercent": 25.0 }, "permission": "glamour.wardrobe.preset.danger_aura"}Expert: Dimension-Specific
Section titled “Expert: Dimension-Specific”{ "id": "nether_power", "displayName": "Nether Power", "description": "Fiery aura in the Nether dimension", "slot": "ambient", "effectId": "soul_fire", "moments": ["AURA", "WALK"], "settings": { "anchor": "SELF", "intervalTicks": 15, "durationTicks": 40, "cooldownTicks": 0, "chance": 0.8 }, "conditions": { "allowDimensions": ["minecraft:the_nether"] }, "permission": "glamour.wardrobe.preset.nether_power"}Best Practices
Section titled “Best Practices”Performance
Section titled “Performance”- Use reasonable intervals: 5-20 ticks is typical
- Add cooldowns: Prevents particle spam
- Use chance: Reduces particle density for ambiant effects
- Limit particle count: Keep
durationTicksreasonable
Design
Section titled “Design”- Match moments to slot: Movement effects for movement moments
- Use TARGET anchor: For attack/interaction effects
- Add conditions: For specialized/situational effects
- Test in-game: Always test visual appearance
Organization
Section titled “Organization”- Consistent naming: Use descriptive IDs
- Group by theme: Fire effects, nature effects, etc.
- Document effects: Clear descriptions help players
- Permission tiers: Use rarity/quality-based permissions
Troubleshooting
Section titled “Troubleshooting”Preset doesn’t appear in GUI
Section titled “Preset doesn’t appear in GUI”- Check permission configuration
- Verify
effectIdreferences an existing player particle - Check slot name is valid (
ambient,movement,jump,attack,sneak) - Reload config with
/wardrobe reload
Effect doesn’t trigger
Section titled “Effect doesn’t trigger”- Verify moments match the gameplay action
- Check conditions aren’t blocking trigger
- Test with
chance: 1.0first - Ensure cooldown isn’t too high
Performance issues
Section titled “Performance issues”- Reduce particle density (increase
intervalTicks) - Lower
durationTicks - Add cooldowns
- Use conditional triggers