From 2617ae503efa5b13b84c8fd5530f219ebf28d427 Mon Sep 17 00:00:00 2001 From: vicisacat Date: Sun, 21 Apr 2024 23:16:20 +0200 Subject: working notifications, probably I ain't waiting 50 hours waiting for notifications --- src/main/java/de/hysky/skyblocker/utils/Utils.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main/java/de/hysky/skyblocker/utils/Utils.java') diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 62a3b897..8316bb9c 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -19,6 +19,7 @@ import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.scoreboard.*; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.jetbrains.annotations.NotNull; @@ -355,6 +356,22 @@ public class Utils { } } + public static Text getDurationText(int timeInSeconds) { + int seconds = timeInSeconds % 60; + int minutes = (timeInSeconds/60) % 60; + int hours = (timeInSeconds/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"); + return time; + } + private static void updateFromPlayerList(MinecraftClient client) { if (client.getNetworkHandler() == null) { return; -- cgit From a781ad5c936f4307f70b191831701247976656f5 Mon Sep 17 00:00:00 2001 From: vicisacat Date: Wed, 24 Apr 2024 16:20:01 +0200 Subject: fixes and things --- .../skyblocker/config/categories/EventNotificationsCategory.java | 7 +++++-- .../de/hysky/skyblocker/skyblock/events/EventNotifications.java | 1 + .../de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java | 2 +- src/main/java/de/hysky/skyblocker/utils/Utils.java | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/utils/Utils.java') diff --git a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java index 02be92a5..5b33f7cf 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java @@ -19,8 +19,6 @@ public class EventNotificationsCategory { return ConfigCategory.createBuilder() .name(Text.literal("Event Notifications")) .groups(createGroups(config)) - .tooltip(Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[0]"), - Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[1]")) .build(); } @@ -33,6 +31,11 @@ public class EventNotificationsCategory { .name(Text.literal(entry.getKey())) .binding(EventNotifications.DEFAULT_REMINDERS, entry::getValue, entry::setValue) .controller(option -> () -> new DurationController(option)) // yea + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[0]"), + Text.empty(), + Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[1]"), + Text.empty(), + Text.translatable("text.autoconfig.skyblocker.option.general.eventNotifications.@Tooltip[2]", entry.getKey()))) .initial(60) .collapsed(true) .build() diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java index 0d2d4d4d..f7f82afb 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java @@ -139,6 +139,7 @@ public class EventNotifications { new EventToast(skyblockEvent.start(), eventName, eventIcons.getOrDefault(eventName, new ItemStack(Items.PAPER))) ); } + break; } } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java index 134c5d4d..3459c47d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java @@ -67,7 +67,7 @@ public class UpcomingEventsTab extends ItemListWidget.TabContainerWidget { hovered = null; for (EventRenderer eventRenderer : events) { eventRenderer.render(context, x + 1, eventsY, mouseX, mouseY); - if (eventRenderer.isMouseOver(mouseX, mouseY, x+1, eventsY)) hovered = eventRenderer; + if (isMouseOver(mouseX, mouseY) && eventRenderer.isMouseOver(mouseX, mouseY, x+1, eventsY)) hovered = eventRenderer; eventsY += eventRenderer.getHeight(); } diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 8316bb9c..fa9292ca 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -359,7 +359,7 @@ public class Utils { public static Text getDurationText(int timeInSeconds) { int seconds = timeInSeconds % 60; int minutes = (timeInSeconds/60) % 60; - int hours = (timeInSeconds/3600) % 24; + int hours = (timeInSeconds/3600); MutableText time = Text.empty(); if (hours > 0) { -- cgit From 90569c01c0160433beed7e452d710ab741a25e19 Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Sun, 2 Jun 2024 13:44:08 +0200 Subject: requested changes YAY --- .../skyblocker/config/categories/EventNotificationsCategory.java | 8 +++++--- .../hysky/skyblocker/config/configs/EventNotificationsConfig.java | 3 ++- .../de/hysky/skyblocker/skyblock/events/EventNotifications.java | 5 ++++- src/main/java/de/hysky/skyblocker/utils/Utils.java | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/utils/Utils.java') diff --git a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java index e353b5d1..6fd01cf8 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java @@ -6,6 +6,8 @@ import de.hysky.skyblocker.config.configs.EventNotificationsConfig; import de.hysky.skyblocker.skyblock.events.EventNotifications; import de.hysky.skyblocker.utils.config.DurationController; import dev.isxander.yacl3.api.*; +import it.unimi.dsi.fastutil.ints.IntImmutableList; +import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.client.MinecraftClient; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.text.Text; @@ -43,13 +45,13 @@ public class EventNotificationsCategory { } private static List createGroups(SkyblockerConfig config) { - Map> eventsReminderTimes = config.eventNotifications.eventsReminderTimes; + Map eventsReminderTimes = config.eventNotifications.eventsReminderTimes; List groups = new ArrayList<>(eventsReminderTimes.size()); if (eventsReminderTimes.isEmpty()) return List.of(OptionGroup.createBuilder().option(LabelOption.create(Text.translatable("skyblocker.config.eventNotifications.monologue"))).build()); - for (Map.Entry> entry : eventsReminderTimes.entrySet()) { + for (Map.Entry entry : eventsReminderTimes.entrySet()) { groups.add(ListOption.createBuilder() .name(Text.literal(entry.getKey())) - .binding(EventNotifications.DEFAULT_REMINDERS, entry::getValue, entry::setValue) + .binding(EventNotifications.DEFAULT_REMINDERS, entry::getValue, integers -> entry.setValue(new IntImmutableList(integers))) .controller(option -> () -> new DurationController(option)) // yea .description(OptionDescription.of(Text.translatable("skyblocker.config.eventNotifications.@Tooltip[0]"), Text.empty(), diff --git a/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java index cc51e536..4cf47fa3 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java @@ -1,6 +1,7 @@ package de.hysky.skyblocker.config.configs; import dev.isxander.yacl3.config.v2.api.SerialEntry; +import it.unimi.dsi.fastutil.ints.IntList; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; @@ -14,7 +15,7 @@ public class EventNotificationsConfig { public Sound reminderSound = Sound.PLING; @SerialEntry - public Map> eventsReminderTimes = new HashMap<>(); + public Map eventsReminderTimes = new HashMap<>(); public enum Sound { NONE(null), diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java index e0bf16fc..0fd41969 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java @@ -11,6 +11,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.events.SkyblockEvents; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.scheduler.Scheduler; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -32,7 +33,7 @@ public class EventNotifications { public static final String JACOBS = "Jacob's Farming Contest"; - public static final List DEFAULT_REMINDERS = List.of(60, 60 * 5); + public static final IntList DEFAULT_REMINDERS = IntList.of(60, 60 * 5); public static final Map eventIcons = new Object2ObjectOpenHashMap<>(); @@ -127,6 +128,8 @@ public class EventNotifications { LinkedList nextEvents = entry.getValue(); SkyblockEvent skyblockEvent = nextEvents.peekFirst(); if (skyblockEvent == null) continue; + + // Remove finished event if (newTime > skyblockEvent.start() + skyblockEvent.duration()) { nextEvents.pollFirst(); skyblockEvent = nextEvents.peekFirst(); diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index fa9292ca..7c28294f 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -356,6 +356,7 @@ public class Utils { } } + // TODO: Combine with `ChocolateFactorySolver.formatTime` and move into `SkyblockTime`. public static Text getDurationText(int timeInSeconds) { int seconds = timeInSeconds % 60; int minutes = (timeInSeconds/60) % 60; -- cgit