aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-06-15 00:15:41 +0800
committerGitHub <noreply@github.com>2024-06-14 12:15:41 -0400
commitf5871d8a18e0be2a3a4538fc0ab4f51f58cef3b3 (patch)
tree718829adf4b09a6482f0f1b63567d4df3bae968b /src/main/java/de
parent7b288fbfccb93ed8a10242acf6532127c41f6dfb (diff)
downloadSkyblocker-f5871d8a18e0be2a3a4538fc0ab4f51f58cef3b3.tar.gz
Skyblocker-f5871d8a18e0be2a3a4538fc0ab4f51f58cef3b3.tar.bz2
Skyblocker-f5871d8a18e0be2a3a4538fc0ab4f51f58cef3b3.zip
Add event notifications criterion (#763)
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/EventNotificationsCategory.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/EventNotificationsConfig.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/EventNotifications.java17
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();