diff options
author | vicisacat <victor.branchu@gmail.com> | 2024-04-20 21:08:48 +0200 |
---|---|---|
committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-06-02 13:26:45 +0200 |
commit | cc4823e3646573d052ea36fef1ce6d9f9e9b90fd (patch) | |
tree | d10abc3836a2f4af81dde88a4f2c2543bb6d684d /src/main/java/de/hysky/skyblocker/skyblock | |
parent | 4e82c974a7217824eab084fe43ce4385b6aae52d (diff) | |
download | Skyblocker-cc4823e3646573d052ea36fef1ce6d9f9e9b90fd.tar.gz Skyblocker-cc4823e3646573d052ea36fef1ce6d9f9e9b90fd.tar.bz2 Skyblocker-cc4823e3646573d052ea36fef1ce6d9f9e9b90fd.zip |
some more progress
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/EventNotifications.java) | 5 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java | 76 |
2 files changed, 78 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/EventNotifications.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java index 5f3bae90..1d5761a5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/EventNotifications.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java @@ -1,4 +1,4 @@ -package de.hysky.skyblocker.skyblock; +package de.hysky.skyblocker.skyblock.events; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -51,7 +51,7 @@ public class EventNotifications { for (Map.Entry<String, LinkedList<SkyblockEvent>> entry : events.entrySet()) { entry.getValue().sort(Comparator.comparingLong(SkyblockEvent::start)); // Sort just in case it's not in order for some reason in API - LOGGER.info("Next {} is at {}", entry.getKey(), entry.getValue().peekFirst()); + //LOGGER.info("Next {} is at {}", entry.getKey(), entry.getValue().peekFirst()); } }); } @@ -60,7 +60,6 @@ public class EventNotifications { private static void timeUpdate() { long newTime = System.currentTimeMillis() / 1000; - LOGGER.info(String.valueOf(newTime)); for (Map.Entry<String, LinkedList<SkyblockEvent>> entry : events.entrySet()) { LinkedList<SkyblockEvent> nextEvents = entry.getValue(); SkyblockEvent skyblockEvent = nextEvents.peekFirst(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java new file mode 100644 index 00000000..4a0d139b --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java @@ -0,0 +1,76 @@ +package de.hysky.skyblocker.skyblock.events; + +import de.hysky.skyblocker.SkyblockerMod; +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; +import net.minecraft.util.Colors; +import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; + +import java.util.List; + +public class EventToast implements Toast { + private static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "notification"); + + private final long eventStartTime; + + private final List<OrderedText> message; + private 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); + this.icon = icon; + + } + @Override + 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 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"); + + int y = 4; + TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; + for (OrderedText orderedText : message) { + context.drawText(textRenderer, orderedText, 30, y, Colors.WHITE, false); + y += textRenderer.fontHeight; + } + context.drawText(textRenderer, time, 30, y, Colors.LIGHT_YELLOW, false); + + context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8); + return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW; + } + + @Override + public int getWidth() { + return 200 + 30 + 5; + } + + @Override + public int getHeight() { + return 8 + 9 + message.size()*9; + } +} |