How Triggers Work
Triggers listen to game events and fire update events that refresh HUD elements and popups:- Creates an
UpdateEventwith context - Evaluates placeholders with the event context
- Updates the display for affected players
Built-in Triggers
Bukkit Triggers
Bukkit platform provides these built-in triggers:entity_attack- Player attacks an entityentity_damage- Player takes damage from an entityplayer_join- Player joins the serverplayer_quit- Player leaves the serverplayer_death- Player diesplayer_respawn- Player respawnsblock_break- Player breaks a blockblock_place- Player places a blockplayer_interact- Player interacts with something
Fabric Triggers
Fabric platform provides these built-in triggers:entity_attack- Player attacks an entityentity_damage- Player takes damageentity_kill- Player kills an entityplayer_death- Player dies
Universal Triggers
These triggers work on all platforms:health- Player health changesfood- Player food level changesarmor- Player armor value changesair- Player air level changeslevel- Player level changes
Configuring Triggers
Basic Trigger
Multiple Triggers
Creating Custom Triggers
Bukkit Custom Trigger
Create a trigger that listens to any Bukkit event:Fabric Custom Trigger
Create a trigger using Fabric’s event system:Update Events
UpdateEvent Interface
Update events provide context for placeholder evaluation:Update Reasons
Update reasons categorize why an update occurred:Custom Update Events
Create custom update events with additional data:Trigger Context
Event Variables
Popups can access event variables:Key Mapping
Control how popups are grouped by key:key-mapping: false, multiple popups can stack.
Trigger Timing
Update Intervals
Control how often triggers check for updates:Popup Duration
Set how long popups stay visible after triggering:Always Check Condition
Keep checking conditions even after the popup is shown:Advanced Trigger Patterns
Combo System
Track consecutive triggers:Cooldown Trigger
Prevent trigger spam:Best Practices
Performance
- Use specific triggers instead of checking every tick
- Avoid expensive operations in trigger handlers
- Clean up data structures (remove old entries)
- Use appropriate update intervals
Organization
- Group related triggers in dedicated classes
- Use descriptive trigger names
- Document custom trigger behavior
- Share triggers between popups when possible
Testing
- Test triggers with debug logging enabled
- Verify trigger keys are unique when needed
- Check trigger timing and cooldowns
- Test with multiple players
Examples
Entity Health Popup
Kill Feed
Health Warning
Next Steps
Placeholders
Use placeholders in triggers
Conditions
Add conditional logic
Animations
Animate triggered popups
Bukkit Platform
Bukkit-specific triggers
