Documentation Index Fetch the complete documentation index at: https://mintlify.com/toxicity188/BetterHud/llms.txt
Use this file to discover all available pages before exploring further.
Overview
BetterHud fires various events throughout its lifecycle and during player interactions. You can listen to these events to integrate with BetterHud or extend its functionality.
Event Hierarchy
All BetterHud events implement the BetterHudEvent interface:
package kr.toxicity.hud.api.bukkit.event;
public interface BetterHudEvent {
HandlerList HANDLER_LIST = new HandlerList ();
}
Available Events
BetterHud provides several event types:
Player Events Events related to player HUD interactions
Popup Events Events for custom popup triggers
Lifecycle Events Plugin reload and lifecycle events
Update Events Inventory and item update events
Event Categories
Player Events
Events that fire for individual players:
HudPlayerJoinEvent - When a player’s HUD data is loaded
HudPlayerQuitEvent - When a player leaves and their HUD data is unloaded
HudUpdateEvent - When a player’s HUD is updated
CustomPopupEvent - Triggered when a custom popup is shown
Lifecycle Events
PluginReloadStartEvent - Before BetterHud reloads
PluginReloadedEvent - After BetterHud finishes reloading
Item Events
UpdateItemEvent - When a player’s inventory items are updated
Basic Event Listening
To listen to BetterHud events, create a Bukkit event listener:
import kr.toxicity.hud.api.bukkit.event. * ;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class BetterHudListener implements Listener {
private final JavaPlugin plugin ;
public BetterHudListener ( JavaPlugin plugin ) {
this . plugin = plugin;
}
@ EventHandler
public void onHudPlayerJoin ( HudPlayerJoinEvent event ) {
plugin . getLogger (). info ( "Player HUD loaded: " + event . getHudPlayer (). name ());
}
@ EventHandler
public void onPluginReload ( PluginReloadedEvent event ) {
plugin . getLogger (). info ( "BetterHud reloaded with state: " + event . getState ());
}
}
// Register in your plugin's onEnable:
public class MyPlugin extends JavaPlugin {
@ Override
public void onEnable () {
getServer (). getPluginManager (). registerEvents ( new BetterHudListener ( this ), this );
}
}
HudPlayerEvent Interface
Many events implement the HudPlayerEvent interface, which provides access to the HudPlayer:
public interface HudPlayerEvent extends BetterHudEvent {
@ NotNull HudPlayer getHudPlayer ();
}
This allows you to access the BetterHud player wrapper:
@ EventHandler
public void onHudUpdate ( HudUpdateEvent event) {
HudPlayer hudPlayer = event . getHudPlayer ();
// Access player data
String name = hudPlayer . name ();
UUID uuid = hudPlayer . uuid ();
// Get active HUDs
Set < Hud > huds = hudPlayer . getHuds ();
// Access variables
Map < String , String > vars = hudPlayer . getVariableMap ();
}
Event Handler List
All BetterHud events share a common HANDLER_LIST:
HandlerList HANDLER_LIST = new HandlerList ();
Each event class must implement:
@ NotNull
@ Override
public HandlerList getHandlers () {
return HANDLER_LIST;
}
public static HandlerList getHandlerList () {
return HANDLER_LIST;
}
Event Priority
You can set event priority using the @EventHandler annotation:
import org.bukkit.event.EventPriority;
@ EventHandler ( priority = EventPriority . HIGH )
public void onHudPlayerJoin ( HudPlayerJoinEvent event) {
// This handler runs with HIGH priority
}
@ EventHandler ( priority = EventPriority . MONITOR , ignoreCancelled = true )
public void onCustomPopup ( CustomPopupEvent event) {
// This handler runs last and only if not cancelled
}
Event Cancellation
Note: Most BetterHud events are informational and cannot be cancelled. Check the specific event documentation to see if it implements Cancellable.
Common Use Cases
Integrate with Your Plugin on Player Join
@ EventHandler
public void onPlayerJoin ( HudPlayerJoinEvent event) {
HudPlayer hudPlayer = event . getHudPlayer ();
// Initialize custom HUD for this player
Hud customHud = BetterHud . inst (). getHudManager (). getHud ( "my_custom_hud" );
if (customHud != null ) {
customHud . add (hudPlayer);
}
// Set default variables
hudPlayer . getVariableMap (). put ( "points" , "0" );
hudPlayer . getVariableMap (). put ( "rank" , "Beginner" );
}
Clean Up on Player Quit
@ EventHandler
public void onPlayerQuit ( HudPlayerQuitEvent event) {
HudPlayer hudPlayer = event . getHudPlayer ();
// Save player data
savePlayerData (hudPlayer);
// Clean up resources
clearCustomData ( hudPlayer . uuid ());
}
React to Reloads
@ EventHandler
public void onReloadStart ( PluginReloadStartEvent event) {
// Save data before reload
plugin . getLogger (). info ( "BetterHud is reloading..." );
saveAllData ();
}
@ EventHandler
public void onReloaded ( PluginReloadedEvent event) {
if ( event . getState (). isSuccess ()) {
plugin . getLogger (). info ( "BetterHud reload successful!" );
reinitializeIntegration ();
} else {
plugin . getLogger (). warning ( "BetterHud reload failed!" );
}
}
@ EventHandler
public void onCustomPopup ( CustomPopupEvent event) {
Player player = event . getPlayer ();
String popupName = event . getName ();
// Log popup usage
logPopup (player, popupName);
// Add custom variables
event . getVariables (). put ( "timestamp" , String . valueOf ( System . currentTimeMillis ()));
}
Next Steps
Bukkit Events Detailed documentation for each event
HUD API Work with HUD components
Popup API Manage popup notifications
Player API Access HudPlayer functionality
See Also
BetterHudEvent interface: kr.toxicity.hud.api.bukkit.event.BetterHudEvent
HudPlayerEvent interface: kr.toxicity.hud.api.bukkit.event.HudPlayerEvent
HudPlayer interface: kr.toxicity.hud.api.player.HudPlayer