aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
diff options
context:
space:
mode:
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.java54
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;
}
}