aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
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/java/de/hysky/skyblocker/skyblock
parent1d6969a7c513c1830b7360f12d2492cd36a62bf0 (diff)
downloadSkyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.tar.gz
Skyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.tar.bz2
Skyblocker-4a0284f96148f2b0d3d4d8ce07bc1aa8a92b53a9.zip
Add Time Tower Reminder
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/TimeTowerReminder.java71
1 files changed, 71 insertions, 0 deletions
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
+ }
+}