diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java index 4a0d139b..bd44c0a5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java @@ -1,13 +1,13 @@ package de.hysky.skyblocker.skyblock.events; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.toast.Toast; import net.minecraft.client.toast.ToastManager; import net.minecraft.item.ItemStack; -import net.minecraft.screen.ScreenTexts; import net.minecraft.text.MutableText; import net.minecraft.text.OrderedText; import net.minecraft.text.Text; @@ -18,17 +18,20 @@ import net.minecraft.util.Identifier; import java.util.List; public class EventToast implements Toast { - private static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "notification"); + protected static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "notification"); private final long eventStartTime; - private final List<OrderedText> message; - private final ItemStack icon; + protected final List<OrderedText> message; + protected final int messageWidth; + protected final ItemStack icon; public EventToast(long eventStartTime, String name, ItemStack icon) { this.eventStartTime = eventStartTime; MutableText formatted = Text.translatable("skyblocker.events.startsSoon", Text.literal(name).formatted(Formatting.YELLOW)).formatted(Formatting.WHITE); - message = MinecraftClient.getInstance().textRenderer.wrapLines(formatted, 200); + TextRenderer renderer = MinecraftClient.getInstance().textRenderer; + message = renderer.wrapLines(formatted, 150); + messageWidth = message.stream().mapToInt(renderer::getWidth).max().orElse(150); this.icon = icon; } @@ -36,41 +39,40 @@ public class EventToast implements Toast { public Visibility draw(DrawContext context, ToastManager manager, long startTime) { context.drawGuiTexture(TEXTURE, 0, 0, getWidth(), getHeight()); - long currentTime = System.currentTimeMillis() / 1000; - int timeTillEvent = (int) (eventStartTime - currentTime); + int y = 7; + y = 2 + drawMessage(context, 30, y, Colors.WHITE); + drawTimer(context, 30, y); - int seconds = timeTillEvent % 60; - int minutes = (timeTillEvent/60) % 60; - int hours = (timeTillEvent/3600) % 24; - - MutableText time = Text.empty(); - if (hours > 0) { - time.append(hours + "h").append(" "); - } - if (hours > 0 || minutes > 0) { - time.append(minutes + "m").append(" "); - } - time.append(seconds + "s"); + context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8); + return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW; + } - int y = 4; + protected int drawMessage(DrawContext context, int x, int y, int color) { TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; for (OrderedText orderedText : message) { - context.drawText(textRenderer, orderedText, 30, y, Colors.WHITE, false); + context.drawText(textRenderer, orderedText, x, y, color, false); y += textRenderer.fontHeight; } - context.drawText(textRenderer, time, 30, y, Colors.LIGHT_YELLOW, false); + return y; + } - context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8); - return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW; + protected void drawTimer(DrawContext context, int x, int y) { + long currentTime = System.currentTimeMillis() / 1000; + int timeTillEvent = (int) (eventStartTime - currentTime); + + Text time = timeTillEvent < 0 ? Text.literal("Starts now!"): Utils.getDurationText(timeTillEvent); + + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + context.drawText(textRenderer, time, x, y, Colors.LIGHT_YELLOW, false); } @Override public int getWidth() { - return 200 + 30 + 5; + return messageWidth + 30 + 6; } @Override public int getHeight() { - return 8 + 9 + message.size()*9; + return 12 + 2 + (message.size()+1)*9; } } |