aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java
blob: 5fac426e549d4b0d2cf5a32c9dfb2b4dc3882531 (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
package de.hysky.skyblocker.skyblock.chat;

import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.events.HudRenderEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderTickCounter;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;

public class ChatRuleAnnouncementScreen {
    private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
    private static float timer;
    private static Text text = null;

    public static void init() {
        HudRenderEvents.BEFORE_CHAT.register((context, tickCounter) -> {
            if (timer <= 0 || text == null) {
                return;
            }
            render(context, tickCounter);
        });
    }

    /**
     * renders {@link ChatRuleAnnouncementScreen#text} to the middle of the top of the screen.
     * @param context render context
     * @param tickDelta difference from last render to remove from timer
     */
    private static void render(DrawContext context, RenderTickCounter tickCounter) {
        int scale = SkyblockerConfigManager.get().chat.chatRuleConfig.announcementScale;
        //decrement timer
        timer -= tickCounter.getTickDelta(true);
        //scale text up and center
        MatrixStack matrices = context.getMatrices();
        matrices.push();
        matrices.translate(context.getScaledWindowWidth() / 2f, context.getScaledWindowHeight() * 0.3, 0f);
        matrices.scale(scale, scale, 0f);
        //render text
        context.drawCenteredTextWithShadow(CLIENT.textRenderer, text, 0, 0, 0xFFFFFFFF);

        matrices.pop();
    }

    protected static void setText(Text newText) {
        text = newText;
        timer =  SkyblockerConfigManager.get().chat.chatRuleConfig.announcementLength;
    }
}