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)

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.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)
// Show HUD when player spawns
val eventHandler = MinecraftServer.getGlobalEventHandler()
eventHandler.addListener(PlayerSpawnEvent::class.java) { event ->
hudManager.showHud(event.player)
hudManager.sendResourcepack(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()