aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-05-14 02:10:27 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-05-23 13:31:48 +0300
commit4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9 (patch)
treefd10e49babb5b01c1c69a664477516b201a83843 /src/main
parent1d6969a7c513c1830b7360f12d2492cd36a62bf0 (diff)
downloadSkyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.tar.gz
Skyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.tar.bz2
Skyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.zip
Add Time Tower Reminder
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java71
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json2
5 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
index e0e30b3c..37f6d2a8 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
@@ -12,6 +12,7 @@ import de.hysky.skyblocker.skyblock.calculators.CalculatorCommand;
import de.hysky.skyblocker.skyblock.chat.ChatRuleAnnouncementScreen;
import de.hysky.skyblocker.skyblock.chat.ChatRulesHandler;
import de.hysky.skyblocker.skyblock.chocolatefactory.EggFinder;
+import de.hysky.skyblocker.skyblock.chocolatefactory.TimeTowerReminder;
import de.hysky.skyblocker.skyblock.crimson.kuudra.Kuudra;
import de.hysky.skyblocker.skyblock.dungeon.*;
import de.hysky.skyblocker.skyblock.dungeon.partyfinder.PartyFinderScreen;
@@ -185,6 +186,7 @@ public class SkyblockerMod implements ClientModInitializer {
WarpAutocomplete.init();
MobBoundingBoxes.init();
EggFinder.init();
+ TimeTowerReminder.init();
Scheduler.INSTANCE.scheduleCyclic(Utils::update, 20);
Scheduler.INSTANCE.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 200);
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
index d9824a23..79bd0d65 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -176,6 +176,14 @@ public class HelperCategory {
newValue -> config.helpers.chocolateFactory.waypointType = newValue)
.controller(ConfigUtils::createEnumCyclingListController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.chocolateFactory.enableTimeTowerReminder"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.chocolateFactory.enableTimeTowerReminder.@Tooltip")))
+ .binding(defaults.helpers.chocolateFactory.enableTimeTowerReminder,
+ () -> config.helpers.chocolateFactory.enableTimeTowerReminder,
+ newValue -> config.helpers.chocolateFactory.enableTimeTowerReminder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.build())
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
index 8721e35c..c0314924 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -79,5 +79,8 @@ public class HelperConfig {
@SerialEntry
public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT;
+
+ @SerialEntry
+ public boolean enableTimeTowerReminder = true;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java
new file mode 100644
index 00000000..3b7fa3bc
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java
@@ -0,0 +1,71 @@
+package de.hysky.skyblocker.skyblock.chocolatefactory;
+
+import com.mojang.brigadier.Message;
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.events.SkyblockEvents;
+import de.hysky.skyblocker.utils.Constants;
+import de.hysky.skyblocker.utils.scheduler.Scheduler;
+import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.time.Instant;
+import java.util.regex.Pattern;
+
+public class TimeTowerReminder {
+ private static final String TIME_TOWER_FILE = "time_tower.txt";
+ private static final Pattern TIME_TOWER_PATTERN = Pattern.compile("^TIME TOWER! Your Chocolate Factory production has increased");
+ private static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Time Tower Reminder");
+
+ private TimeTowerReminder() {
+ }
+
+ public static void init() {
+ SkyblockEvents.JOIN.register(TimeTowerReminder::checkTempFile);
+ ClientReceiveMessageEvents.GAME.register(TimeTowerReminder::checkIfTimeTower);
+ }
+
+ public static void checkIfTimeTower(Message message, boolean overlay) {
+ if (!TIME_TOWER_PATTERN.matcher(message.getString()).matches()) return;
+ Scheduler.INSTANCE.schedule(TimeTowerReminder::sendMessage, 60*60*20); // 1 hour
+
+ File tempFile = SkyblockerMod.CONFIG_DIR.resolve(TIME_TOWER_FILE).toFile();
+ if (!tempFile.exists() && !tempFile.mkdir()) {
+ LOGGER.error("[Skyblocker Time Tower Reminder] Failed to create temp file for Time Tower Reminder!");
+ return;
+ }
+
+ try (FileWriter writer = new FileWriter(tempFile)) {
+ writer.write(Instant.now().toString());
+ } catch (IOException e) {
+ LOGGER.error("[Skyblocker Time Tower Reminder] Failed to write to temp file for Time Tower Reminder!", e);
+ }
+ }
+
+ private static void sendMessage() {
+ if (MinecraftClient.getInstance().player == null) return;
+ MinecraftClient.getInstance().player.sendMessage(Constants.PREFIX.get().append(Text.literal("Your Chocolate Factory's Time Tower has deactivated!").withColor(0xFF5555)));
+
+ File tempFile = SkyblockerMod.CONFIG_DIR.resolve(TIME_TOWER_FILE).toFile();
+ try {
+ if (tempFile.exists()) Files.delete(tempFile.toPath());
+ } catch (Exception e) {
+ LOGGER.error("[Skyblocker Time Tower Reminder] Failed to delete temp file for Time Tower Reminder!", e);
+ }
+ }
+
+ private static void checkTempFile() {
+ File tempFile = SkyblockerMod.CONFIG_DIR.resolve(TIME_TOWER_FILE).toFile();
+ if (!tempFile.exists()) return;
+
+ long time = tempFile.lastModified();
+ if (System.currentTimeMillis() - time >= 60*60*1000) sendMessage();
+ else Scheduler.INSTANCE.schedule(TimeTowerReminder::sendMessage, 60*60*20 - (int) ((System.currentTimeMillis() - time) / 50)); // 50 milliseconds is 1 tick
+ }
+}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 6cdf5fa1..6b309d39 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -282,6 +282,8 @@
"skyblocker.config.helpers.chocolateFactory.sendEggFoundMessages.@Tooltip": "Sends a message in chat when an egg is found in the current island.",
"skyblocker.config.helpers.chocolateFactory.waypointType": "Egg Waypoint Type",
"skyblocker.config.helpers.chocolateFactory.waypointType.@Tooltip": "Waypoint: Displays a highlight and a beacon beam.\n\nOutlined Waypoint: Displays both a waypoint and an outline.\n\nHighlight: Only displays a highlight.\n\nOutlined Highlight: Displays both a highlight and an outline.\n\nOutline: Only displays an outline.",
+ "skyblocker.config.helpers.chocolateFactory.enableTimeTowerReminder": "Enable Time Tower Reminder",
+ "skyblocker.config.helpers.chocolateFactory.enableTimeTowerReminder.@Tooltip": "Sends a message in chat when your Time Tower deactivates.",
"skyblocker.config.helpers.enableNewYearCakesHelper": "Enable New Year Cakes Helper",
"skyblocker.config.helpers.enableNewYearCakesHelper.@Tooltip": "Highlights the missing new year cakes green and the cakes you have already red.\n\nRequires you to open your cake bag at least once to work.",