diff options
5 files changed, 66 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java index c3b0e0f2..1f766000 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -37,6 +37,7 @@ import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipManager; import de.hysky.skyblocker.skyblock.itemlist.ItemRepository; +import de.hysky.skyblocker.skyblock.mayors.JerryTimer; import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerScreen; import de.hysky.skyblocker.skyblock.rift.TheRift; import de.hysky.skyblocker.skyblock.searchoverlay.SearchOverManager; @@ -194,6 +195,7 @@ public class SkyblockerMod implements ClientModInitializer { EggFinder.init(); TimeTowerReminder.init(); SkyblockTime.init(); + JerryTimer.init(); TooltipManager.init(); SlotTextManager.init(); 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 9e4935cb..1518dfe7 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java @@ -38,6 +38,20 @@ public class HelperCategory { .build()) .build()) + //Jerry Timer + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.config.helpers.jerry")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.config.helpers.jerry.enableJerryTimer")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.jerry.enableJerryTimer.@Tooltip"))) + .binding(defaults.helpers.jerry.enableJerryTimer, + () -> config.helpers.jerry.enableJerryTimer, + newValue -> config.helpers.jerry.enableJerryTimer = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) + //Experiments Solver .group(OptionGroup.createBuilder() .name(Text.translatable("skyblocker.config.helpers.experiments")) 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 c0314924..33047f1c 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java @@ -12,6 +12,9 @@ public class HelperConfig { public MythologicalRitual mythologicalRitual = new MythologicalRitual(); @SerialEntry + public Jerry jerry = new Jerry(); + + @SerialEntry public Experiments experiments = new Experiments(); @SerialEntry @@ -28,6 +31,11 @@ public class HelperConfig { public boolean enableMythologicalRitualHelper = true; } + public static class Jerry { + @SerialEntry + public boolean enableJerryTimer = false; + } + public static class Experiments { @SerialEntry public boolean enableChronomatronSolver = true; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java b/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java new file mode 100644 index 00000000..7131a567 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/mayors/JerryTimer.java @@ -0,0 +1,37 @@ +package de.hysky.skyblocker.skyblock.mayors; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Constants; +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.scheduler.Scheduler; +import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.text.HoverEvent; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public final class JerryTimer { + private JerryTimer() { + } + public static void init() { + //Example message: "§b ☺ §eThere is a §aGreen Jerry§e!" + //There are various formats, all of which start with the "§b ☺ " prefix and contain the word "<color> Jerry" + ClientReceiveMessageEvents.GAME.register((message, overlay) -> { + if (overlay || !Utils.getMayor().equals("Jerry") || !SkyblockerConfigManager.get().helpers.jerry.enableJerryTimer) return; + String text = message.getString(); + //This part of hypixel still uses legacy text formatting, so we can't directly check for the actual text + if (!text.startsWith("§b ☺ ") || !text.contains("Jerry")) return; + HoverEvent hoverEvent = message.getStyle().getHoverEvent(); + if (hoverEvent == null || hoverEvent.getAction() != HoverEvent.Action.SHOW_TEXT) return; + ClientPlayerEntity player = MinecraftClient.getInstance().player; + Scheduler.INSTANCE.schedule(() -> { + if (player == null || !Utils.isOnSkyblock()) return; + player.sendMessage(Constants.PREFIX.get().append(Text.literal("Jerry cooldown is over!")).formatted(Formatting.GREEN), false); + player.playSoundToPlayer(SoundEvents.ENTITY_VILLAGER_TRADE, SoundCategory.NEUTRAL, 100f, 1.0f); + }, 20*60*6); // 6 minutes + }); + } +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 8fa87e3b..cf1cc4c2 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -317,6 +317,11 @@ "skyblocker.config.helpers.fishing.hideOtherPlayers": "Hide Other Players Rods", "skyblocker.config.helpers.fishing.hideOtherPlayers.@Tooltip": "Hide other players fishing rods from showing for you", + "skyblocker.config.helpers.jerry": "Jerry", + "skyblocker.config.helpers.jerry.enableJerryTimer": "Enable Jerry Timer", + "skyblocker.config.helpers.jerry.enableJerryTimer.@Tooltip": "Sends a message in chat and plays a sound when the hidden jerry spawn cooldown is over.", + + "skyblocker.config.helpers.mythologicalRitual": "Mythological Ritual Helper", "skyblocker.config.helpers.mythologicalRitual.enableMythologicalRitualHelper": "Enable Mythological Ritual Helper", |