aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
blob: ca3c8cd805d027ab9fd52f5fe6b9eb953bea9e54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package de.hysky.skyblocker.skyblock.end;

import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.tabhud.widget.Widget;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ProfileComponent;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;

import java.text.NumberFormat;
import java.util.Optional;

import com.mojang.authlib.properties.PropertyMap;

public class EndHudWidget extends Widget {
    private static final MutableText TITLE = Text.literal("The End").formatted(Formatting.LIGHT_PURPLE, Formatting.BOLD);

    public static final EndHudWidget INSTANCE = new EndHudWidget(TITLE, Formatting.DARK_PURPLE.getColorValue());

    public EndHudWidget(MutableText title, Integer colorValue) {
        super(title, colorValue);
        this.setX(5);
        this.setY(5);
        this.update();
    }

    private static final ItemStack ENDERMAN_HEAD = new ItemStack(Items.PLAYER_HEAD);
    private static final ItemStack POPPY = new ItemStack(Items.POPPY);

    static {
        ENDERMAN_HEAD.set(DataComponentTypes.PROFILE, new ProfileComponent(Optional.of("MHF_Enderman"), Optional.empty(), new PropertyMap()));
        POPPY.addEnchantment(Enchantments.INFINITY, 1);

        INSTANCE.setX(SkyblockerConfigManager.get().locations.end.x);
        INSTANCE.setY(SkyblockerConfigManager.get().locations.end.y);
    }


    @Override
    public void updateContent() {
        // Zealots
        if (SkyblockerConfigManager.get().locations.end.zealotKillsEnabled) {
            addComponent(new IcoTextComponent(ENDERMAN_HEAD, Text.literal("Zealots").formatted(Formatting.BOLD)));
            addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.zealotsSinceLastEye", TheEnd.zealotsSinceLastEye)));
            addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.zealotsTotalKills", TheEnd.zealotsKilled)));
            NumberFormat instance = NumberFormat.getInstance();
            instance.setMinimumFractionDigits(0);
            instance.setMaximumFractionDigits(2);
            String avg = TheEnd.eyes == 0 ? "???" : instance.format((float) TheEnd.zealotsKilled / TheEnd.eyes);
            addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.avgKillsPerEye", avg)));
        }

        // Endstone protector
        if (SkyblockerConfigManager.get().locations.end.protectorLocationEnabled) {
            addComponent(new IcoTextComponent(POPPY, Text.literal("Endstone Protector").formatted(Formatting.BOLD)));
            if (TheEnd.stage == 5) {
                addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.stage", "IMMINENT")));
            } else {
                addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.stage", String.valueOf(TheEnd.stage))));
            }
            if (TheEnd.currentProtectorLocation == null) {
                addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.location", "?")));
            } else {
                addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.location", TheEnd.currentProtectorLocation.name())));
            }
        }
    }
}