Skip to content

Usage

The HudManager is the central component for managing HUDs. You typically create one instance per server.

import net.hudkit.api.HudManager
import net.hudkit.api.StudioOptions
import net.hudkit.api.RenderOptions
val hudManager = HudManager(
studioOptions = StudioOptions.online("your-api-key"),
renderOptions = RenderOptions.default()
)

Load your HUD definition from Hudkit Studio and process it:

val definition = hudManager.loadDefinition().process()
hudManager.definition = definition

HUDs require a resource pack for custom textures and fonts. Upload it to Hudkit’s servers:

hudManager.uploadResourcepack(definition.resourcepack)

When a player joins, send the resource pack and show the hud:

hudManager.showHud(player)
hudManager.sendResourcepack(player)

When a player leaves, remove their HUD to clean up resources:

hudManager.removeHud(player)

Here’s a complete example using Minestom:

import net.hudkit.api.HudManager
import net.hudkit.api.StudioOptions
import net.hudkit.api.RenderOptions
import net.minestom.server.MinecraftServer
import net.minestom.server.event.player.PlayerDisconnectEvent
import net.minestom.server.event.player.PlayerSpawnEvent
fun main() {
val server = MinecraftServer.init()
// Create HudManager
val hudManager = HudManager(
studioOptions = StudioOptions.online("your-api-key"),
renderOptions = RenderOptions.default()
)
// Load and process definition
val definition = hudManager.loadDefinition().process()
hudManager.definition = definition
// Upload resource pack
hudManager.uploadResourcepack(definition.resourcepack)
val eventHandler = MinecraftServer.getGlobalEventHandler()
// Show HUD when player spawns
eventHandler.addListener(PlayerSpawnEvent::class.java) { event ->
hudManager.showHud(event.player)
hudManager.sendResourcepack(event.player)
}
// Remove HUD when player disconnects
eventHandler.addListener(PlayerDisconnectEvent::class.java) { event ->
hudManager.removeHud(event.player)
}
server.start("0.0.0.0", 25565)
}

To reload the HUD definition at runtime (e.g., after changes in Studio):

fun reloadHud() {
// Load new definition
val definition = hudManager.loadDefinition().process()
hudManager.definition = definition
// Upload new resource pack
hudManager.uploadResourcepack(definition.resourcepack)
// Send new resource pack to all online players
MinecraftServer.getConnectionManager().onlinePlayers.forEach { player ->
hudManager.sendResourcepack(player)
}
}

Studio provides an API key, which is not considured private. It allows a client to fetch basic information about the HUD, such as the layout and project name. It is very safe, and often encouraged to hardcode an API key to your code. It’s more like an identifier than an API key.

Different ways to configure Studio connectivity:

// Connect with your API key.
StudioOptions.online("your-api-key")
// Use our example HUD
StudioOptions.demo()
// Local/Self-hosted: Custom Studio instance
StudioOptions.local("https://your-studio.example.com", "your-api-key")
// No Studio connection
StudioOptions.offline()