Skip to content

Rendering im Hud

Wir haben bereits auf der Seite Grundlegende Rendering-Konzepte und Den Zeichenkontext verwenden kurz über das Rendern von Dingen auf dem Hud gesprochen, daher beschränken wir uns auf dieser Seite auf das Event HudRenderCallback und den Parameter deltaTick.

HudRenderCallback

Das Event HudRenderCallback, das von der Fabric API bereitgestellt wird, wird bei jedem Frame aufgerufen und wird zum Rendern von Dingen auf dem HUD verwendet.

Um dieses Event zu registrieren, kannst du einfach HudRenderCallback.EVENT.register aufgrufen und ein Lambda übergeben, welches einen DrawContext und einen float (deltaTick) als Parameter benötigt.

Der Zeichenkontext kann verwendet werden, um auf die verschiedenen Rendering-Utilities zuzugreifen, die vom Spiel zur Verfügung gestellt werden, und um auf den Rohmatrix-Stapel zuzugreifen.

Du solltest dir die Seite Den Zeichenkontext verwenden ansehen, um mehr über den Zeichenkontext zu erfahren.

DeltaTick

Der Parameter deltaTick ist die Zeit seit dem letzten Frame in Sekunden. Dies kann für Animationen und andere zeitbasierte Effekte verwendet werden.

Beispiel: Auslöschen einer Farbe im Laufe der Zeit

Nehmen wir an, du möchtest eine Farbe im Laufe der Zeit auslöschen. Dazu kannst du den Parameter deltaTick verwenden.

java
HudRenderCallback.EVENT.register((context, tickDelta) -> {
	int color = 0xFFFF0000; // Red
	int targetColor = 0xFF00FF00; // Green

	// Total tick delta is stored in a field, so we can use it later.
	totalTickDelta += tickDelta;

	// "lerp" simply means "linear interpolation", which is a fancy way of saying "blend".
	float lerpedAmount = MathHelper.abs(MathHelper.sin(totalTickDelta / 50F));
	int lerpedColor = ColorHelper.Argb.lerp(lerpedAmount, color, targetColor);

	// Draw a square with the lerped color.
	// x1, x2, y1, y2, z, color
	context.fill(0, 0, 100, 100, 0, lerpedColor);
});