diff options
Diffstat (limited to 'src/main/java')
3 files changed, 31 insertions, 2 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 6fd01cf8..ae4882f2 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java @@ -24,6 +24,13 @@ public class EventNotificationsCategory { shouldPlaySound = false; return ConfigCategory.createBuilder() .name(Text.translatable("skyblocker.config.eventNotifications")) + .option(Option.<EventNotificationsConfig.Criterion>createBuilder() + .binding(defaults.eventNotifications.criterion, + () -> config.eventNotifications.criterion, + criterion -> config.eventNotifications.criterion = criterion) + .controller(ConfigUtils::createEnumCyclingListController) + .name(Text.translatable("skyblocker.config.eventNotifications.criterion")) + .build()) .option(Option.<EventNotificationsConfig.Sound>createBuilder() .binding(defaults.eventNotifications.reminderSound, () -> config.eventNotifications.reminderSound, 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 c43ae7a6..1fa7016c 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java @@ -9,6 +9,8 @@ import java.util.HashMap; import java.util.Map; public class EventNotificationsConfig { + @SerialEntry + public Criterion criterion = Criterion.SKYBLOCK; @SerialEntry public Sound reminderSound = Sound.PLING; @@ -16,6 +18,13 @@ public class EventNotificationsConfig { @SerialEntry public Map<String, IntList> eventsReminderTimes = new HashMap<>(); + public enum Criterion { + NONE, + SKYBLOCK, + HYPIXEL, + EVERYWHERE + } + public enum Sound { NONE(null), BELL(SoundEvents.BLOCK_BELL_USE), 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 0fd41969..da2a0c2f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java @@ -10,6 +10,7 @@ import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.events.SkyblockEvents; import de.hysky.skyblocker.utils.Http; +import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; @@ -23,7 +24,10 @@ import net.minecraft.sound.SoundEvent; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; -import java.util.*; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; public class EventNotifications { @@ -140,7 +144,7 @@ public class EventNotifications { if (reminderTimes.isEmpty()) continue; for (Integer reminderTime : reminderTimes) { - if (currentTime + reminderTime < skyblockEvent.start() && newTime + reminderTime >= skyblockEvent.start()) { + if (criterionMet() && currentTime + reminderTime < skyblockEvent.start() && newTime + reminderTime >= skyblockEvent.start()) { MinecraftClient instance = MinecraftClient.getInstance(); if (eventName.equals(JACOBS)) { instance.getToastManager().add( @@ -161,6 +165,15 @@ public class EventNotifications { currentTime = newTime; } + private static boolean criterionMet() { + return switch (SkyblockerConfigManager.get().eventNotifications.criterion) { + case NONE -> false; + case SKYBLOCK -> Utils.isOnSkyblock(); + case HYPIXEL -> Utils.isOnHypixel(); + case EVERYWHERE -> true; + }; + } + public record SkyblockEvent(long start, int duration, String[] extras, @Nullable String warpCommand) { public static SkyblockEvent of(JsonObject jsonObject) { String location = jsonObject.get("location").getAsString(); |