package me.xmrvizzy.skyblocker.utils.title;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.skyblock.FairySouls;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.entity.decoration.DisplayEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.math.MathHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
public class TitleContainer {
public static List
titles = new ArrayList<>();
private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker");
public static void init() {
HudRenderCallback.EVENT.register(TitleContainer::draw);
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE)
.then(literal("title")
.then(literal("ice").executes(context -> {
titles.add(new Title(Text.translatable("skyblocker.rift.iceNow").getString(), Formatting.AQUA.getColorValue()));
return 1;
}))
.then(literal("stake").executes(context -> {
titles.add(new Title("Stake", Formatting.RED.getColorValue()));
return 1;
}))
.then(literal("heal").executes(context -> {
titles.add(new Title("Heal", Formatting.DARK_RED.getColorValue()));
return 1;
}))
)));
}
public static void addTitle(Title title)
{
title.active = true;
title.lastX = 0;
titles.add(title);
}
public static void draw(DrawContext context, float tickDelta) {
var client = MinecraftClient.getInstance();
TextRenderer textRenderer = client.textRenderer;
List toRemove = new ArrayList<>();
float x;
float width = 0;
context.getMatrices().push();
context.getMatrices().scale(3.0F, 3.0F, 3.0F);
for (Title title : titles) {
width += textRenderer.getWidth(title.text) * 3F + 10;
}
context.getMatrices().pop();
x = (client.getWindow().getScaledWidth() / 2) - width / 2;
for (Title title : titles) {
context.getMatrices().push();
context.getMatrices().translate(title.lastX, client.getWindow().getScaledHeight() * 0.6F, 0);
context.getMatrices().scale(3.0F, 3.0F, 3.0F);
title.lastX = MathHelper.lerp(tickDelta * 0.5F, title.lastX, x);
x += textRenderer.getWidth(title.text) * 3F + 10;
context.drawText(textRenderer, title.text, 0, 0, title.color, true
);
context.getMatrices().pop();
if (!title.active) {
toRemove.add(title);
}
}
titles.removeAll(toRemove);
}
}