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.
BetterHud is available as a Fabric server-side mod for Minecraft 1.21.11.
Requirements
Minecraft 1.21.11
Fabric Loader
Fabric API (required dependency)
Java 21 or higher
Installation
Install Fabric Loader on your server
Download and install Fabric API
Download BetterHud from Modrinth
Place both JARs in your server’s mods folder
Start your server
Fabric Bootstrap
Access the Fabric-specific bootstrap:
import kr.toxicity.hud.api.fabric.FabricBootstrap;
import kr.toxicity.hud.api.BetterHudAPI;
FabricBootstrap bootstrap = (FabricBootstrap) BetterHudAPI . inst (). getBootstrap ();
if ( bootstrap . isFabric ()) {
// Fabric-specific logic
}
Event System
BetterHud provides a custom event system for Fabric:
Pre-Reload Event
import kr.toxicity.hud.api.fabric.FabricBootstrap;
import kr.toxicity.hud.api.fabric.event.EventRegistry;
FabricBootstrap . PRE_RELOAD_EVENT . register (unit -> {
// Execute before BetterHud reloads
System . out . println ( "BetterHud is about to reload!" );
});
Post-Reload Event
import kr.toxicity.hud.api.plugin.ReloadState;
FabricBootstrap . POST_RELOAD_EVENT . register (state -> {
// Execute after BetterHud reloads
System . out . println ( "Reload completed with state: " + state);
});
Fabric Event Triggers
Create custom triggers using Fabric events:
import kr.toxicity.hud.api.fabric.trigger.HudFabricEventTrigger;
import kr.toxicity.hud.api.fabric.event.EventRegistry;
import kr.toxicity.hud.api.fabric.event.entity.PlayerAttackEntityEvent;
public class AttackTrigger implements HudFabricEventTrigger < PlayerAttackEntityEvent > {
@ Override
public @ NotNull EventRegistry < PlayerAttackEntityEvent > registry () {
return PlayerAttackEntityEvent . REGISTRY ;
}
@ Override
public @ NotNull Object getKey ( PlayerAttackEntityEvent event ) {
return event . player (). getUUID ();
}
@ Override
public void registerEvent (@ NotNull BiConsumer < UUID , UpdateEvent > eventConsumer ) {
PlayerAttackEntityEvent . REGISTRY . register (event -> {
UUID playerUuid = event . player (). getUUID ();
UpdateEvent updateEvent = createUpdateEvent (event);
eventConsumer . accept (playerUuid, updateEvent);
});
}
}
Built-in Fabric Events
BetterHud provides several built-in Fabric events:
PlayerAttackEntityEvent
import kr.toxicity.hud.api.fabric.event.entity.PlayerAttackEntityEvent;
PlayerAttackEntityEvent . REGISTRY . register (event -> {
ServerPlayer player = event . player ();
LivingEntity target = event . entity ();
// Handle attack event
});
PlayerDamageByEntityEvent
import kr.toxicity.hud.api.fabric.event.entity.PlayerDamageByEntityEvent;
PlayerDamageByEntityEvent . REGISTRY . register (event -> {
ServerPlayer player = event . player ();
LivingEntity attacker = event . entity ();
// Handle damage event
});
PlayerKillEntityEvent
import kr.toxicity.hud.api.fabric.event.entity.PlayerKillEntityEvent;
PlayerKillEntityEvent . REGISTRY . register (event -> {
ServerPlayer player = event . player ();
LivingEntity killed = event . entity ();
// Handle kill event
});
PlayerDeathEvent
import kr.toxicity.hud.api.fabric.event.entity.PlayerDeathEvent;
PlayerDeathEvent . REGISTRY . register (event -> {
ServerPlayer player = event . player ();
// Handle player death
});
Mixins
BetterHud uses Mixin to integrate with Minecraft:
{
"required" : true ,
"package" : "kr.toxicity.hud.api.fabric.mixin" ,
"compatibilityLevel" : "JAVA_21" ,
"mixins" : [
"entity.EntityMixin" ,
"entity.LivingEntityMixin" ,
"player.ConnectionMixin" ,
"player.ServerCommonPacketListenerImplMixin"
]
}
Building from Source
To build the Fabric mod:
The compiled JAR will be in dist/build/libs/.
API Usage
Add BetterHud to your Fabric mod:
repositories {
mavenCentral ()
}
dependencies {
compileOnly ( "io.github.toxicity188:BetterHud-standard-api:VERSION" )
modCompileOnly ( "io.github.toxicity188:BetterHud-fabric-api:VERSION" )
}
See the Fabric example mod for complete examples.
Fabric Mod Integration
Integrate BetterHud into your Fabric mod:
import kr.toxicity.hud.api.fabric.FabricInitializer;
import net.fabricmc.api.ModInitializer;
public class MyMod implements ModInitializer {
@ Override
public void onInitialize () {
// Wait for BetterHud to initialize
FabricInitializer . onReady (() -> {
// BetterHud is now ready
registerCustomPlaceholders ();
registerCustomTriggers ();
});
}
}
Configuration
Fabric-specific configuration options:
# config.yml
namespace : "betterhud"
pack-type : zip
# Fabric doesn't use boss bars like Bukkit
merge-boss-bar : false
Resource Pack Generation
BetterHud automatically generates resource packs on Fabric:
# config.yml
build-folder-location : "BetterHud/build"
pack-type : zip # folder, zip, none
enable-self-host : false
The generated pack will be in config/BetterHud/build/.
BetterHud’s mixins are optimized for minimal performance impact:
Entity mixins only inject where necessary
Packet handling is asynchronous where possible
Event callbacks are cached
Memory Usage
Fabric implementation uses efficient data structures:
// EventRegistry uses lightweight callbacks
EventRegistry < T > registry = new EventRegistry <>();
registry . register (event -> {
// Minimal overhead
});
Compatibility
Other Fabric Mods
BetterHud is compatible with most Fabric mods. If you encounter issues:
Check mixin conflicts in logs
Ensure Fabric API is up to date
Report compatibility issues on GitHub
Client-Side Mods
BetterHud is server-side only. Clients don’t need any mods installed, just the resource pack.
Debugging
Enable detailed logging:
# config.yml
debug : true
debug-level : all
Check logs in config/BetterHud/logs/.
Next Steps
Triggers Learn about Fabric event triggers
Placeholders Create custom placeholders
API Reference Explore the full API
Example Mod View example implementations