diff options
author | Khafra <maitken033380023@gmail.com> | 2023-12-05 14:42:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-05 14:42:58 -0500 |
commit | 75b49aa31c140d195e3fbf11e7bc38eab11dd3db (patch) | |
tree | 6f095c2169366a486f5cb1ace634d0656de555ac /src/main/java/de | |
parent | 78dbe6c52f65a782ef21f35454e52e1225337a08 (diff) | |
download | Skyblocker-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')
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; + } + } +} |