diff options
Diffstat (limited to 'src/main/java/de')
4 files changed, 12 insertions, 5 deletions
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<OptionGroup> createGroups(SkyblockerConfig config) { - Map<String, List<Integer>> eventsReminderTimes = config.eventNotifications.eventsReminderTimes; + Map<String, IntList> eventsReminderTimes = config.eventNotifications.eventsReminderTimes; List<OptionGroup> 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<String, List<Integer>> entry : eventsReminderTimes.entrySet()) { + for (Map.Entry<String, IntList> entry : eventsReminderTimes.entrySet()) { groups.add(ListOption.<Integer>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<String, List<Integer>> eventsReminderTimes = new HashMap<>(); + public Map<String, IntList> 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<Integer> DEFAULT_REMINDERS = List.of(60, 60 * 5); + public static final IntList DEFAULT_REMINDERS = IntList.of(60, 60 * 5); public static final Map<String, ItemStack> eventIcons = new Object2ObjectOpenHashMap<>(); @@ -127,6 +128,8 @@ public class EventNotifications { LinkedList<SkyblockEvent> 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; |