aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker
diff options
context:
space:
mode:
authorKhafra <maitken033380023@gmail.com>2023-12-05 14:42:58 -0500
committerGitHub <noreply@github.com>2023-12-05 14:42:58 -0500
commit75b49aa31c140d195e3fbf11e7bc38eab11dd3db (patch)
tree6f095c2169366a486f5cb1ace634d0656de555ac /src/main/java/de/hysky/skyblocker
parent78dbe6c52f65a782ef21f35454e52e1225337a08 (diff)
downloadSkyblocker-75b49aa31c140d195e3fbf11e7bc38eab11dd3db.tar.gz
Skyblocker-75b49aa31c140d195e3fbf11e7bc38eab11dd3db.tar.bz2
Skyblocker-75b49aa31c140d195e3fbf11e7bc38eab11dd3db.zip
Add f3/m3 fire freeze staff timer (#436)
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java59
4 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
index f9bcbe0d..41ee483f 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
@@ -99,6 +99,7 @@ public class SkyblockerMod implements ClientModInitializer {
DungeonSecrets.init();
DungeonBlaze.init();
ChestValue.init();
+ FireFreezeStaffTimer.init();
TheRift.init();
TitleContainer.init();
ScreenMaster.init();
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index 633ea670..4daa96c0 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -630,6 +630,9 @@ public class SkyblockerConfig {
public boolean solveTicTacToe = true;
@SerialEntry
+ public boolean fireFreezeStaffTimer = true;
+
+ @SerialEntry
public LividColor lividColor = new LividColor();
@SerialEntry
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
index 2f738ff2..0a68ef5e 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
@@ -317,6 +317,14 @@ public class DungeonsCategory {
newValue -> config.locations.dungeons.solveTicTacToe = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.fireFreezeStaffTimer"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.fireFreezeStaffTimer.@Tooltip")))
+ .binding(defaults.locations.dungeons.fireFreezeStaffTimer,
+ () -> config.locations.dungeons.fireFreezeStaffTimer,
+ newValue -> config.locations.dungeons.fireFreezeStaffTimer = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
//Livid Color
.group(OptionGroup.createBuilder()
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java
new file mode 100644
index 00000000..e5d4f078
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/FireFreezeStaffTimer.java
@@ -0,0 +1,59 @@
+package de.hysky.skyblocker.skyblock.dungeon;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
+import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.font.TextRenderer;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class FireFreezeStaffTimer {
+ private static long fireFreezeTimer;
+
+ public static void init() {
+ HudRenderCallback.EVENT.register(FireFreezeStaffTimer::onDraw);
+ ClientReceiveMessageEvents.GAME.register(FireFreezeStaffTimer::onChatMessage);
+ ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> FireFreezeStaffTimer.reset());
+ }
+
+ private static void onDraw(DrawContext context, float v) {
+ MinecraftClient client = MinecraftClient.getInstance();
+
+ if (client.currentScreen != null) return;
+
+ if (SkyblockerConfigManager.get().locations.dungeons.fireFreezeStaffTimer && fireFreezeTimer != 0) {
+ long now = System.currentTimeMillis();
+
+ if (now >= fireFreezeTimer + 5000) {
+ reset();
+ return;
+ }
+
+ String message =
+ fireFreezeTimer > now
+ ? String.format("%.2f", (float) (fireFreezeTimer - now) / 1000) + "s"
+ : "NOW";
+
+ TextRenderer renderer = client.textRenderer;
+ int width = client.getWindow().getScaledWidth() / 2;
+ int height = client.getWindow().getScaledHeight() / 2;
+
+ context.drawCenteredTextWithShadow(
+ renderer, "Fire freeze in: " + message, width, height, 0xffffff);
+ }
+ }
+
+ private static void reset() {
+ fireFreezeTimer = 0;
+ }
+
+ private static void onChatMessage(Text text, boolean overlay) {
+ if (!overlay && SkyblockerConfigManager.get().locations.dungeons.fireFreezeStaffTimer && Formatting.strip(text.getString())
+ .equals("[BOSS] The Professor: Oh? You found my Guardians' one weakness?")) {
+ fireFreezeTimer = System.currentTimeMillis() + 5000L;
+ }
+ }
+}