diff options
author | f3shqt <30647065+f3shqt@users.noreply.github.com> | 2024-05-07 15:18:58 +0100 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-22 20:52:39 -0400 |
commit | 79ecff610a0811a86efbbbcaed63260ea844551f (patch) | |
tree | b3d98fd3d2609d40c04bb0467f442a0e91621897 | |
parent | 610c64758fc8d0b8bea0145c33881b60c0747bd7 (diff) | |
download | Skyblocker-79ecff610a0811a86efbbbcaed63260ea844551f.tar.gz Skyblocker-79ecff610a0811a86efbbbcaed63260ea844551f.tar.bz2 Skyblocker-79ecff610a0811a86efbbbcaed63260ea844551f.zip |
Added Cold Overlay
Adds Minecraft Cold Overlay to the Glacite Tunnels
-rw-r--r-- | src/main/java/de/hysky/skyblocker/SkyblockerMod.java | 1 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java | 70 |
2 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 e6b2d25a..22cf094c 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -129,6 +129,7 @@ public class SkyblockerMod implements ClientModInitializer { LowerSensitivity.init(); CrystalsLocationsManager.init(); MetalDetector.init(); + GlaciteColdOverlay.init(); ChatMessageListener.init(); Shortcuts.init(); ChatRulesHandler.init(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java new file mode 100644 index 00000000..441d2f48 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java @@ -0,0 +1,70 @@ +package de.hysky.skyblocker.skyblock.dwarven; + + +import com.mojang.blaze3d.systems.RenderSystem; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.events.HudRenderEvents; +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.gui.DrawContext; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class GlaciteColdOverlay { + private static final Identifier POWDER_SNOW_OUTLINE = new Identifier("textures/misc/powder_snow_outline.png"); + private static final Pattern COLD_PATTERN = Pattern.compile("Cold: -(\\d+)❄"); + private static int cold = 0; + private static long resetTime = System.currentTimeMillis(); + + public static void init() { + Scheduler.INSTANCE.scheduleCyclic(GlaciteColdOverlay::update, 20); + HudRenderEvents.AFTER_MAIN_HUD.register(GlaciteColdOverlay::render); + ClientReceiveMessageEvents.GAME.register(GlaciteColdOverlay::coldReset); + } + + private static void coldReset(Text text, boolean b) { + String message = text.getString(); + if (message.equals("The warmth of the campfire reduced your ❄ Cold to 0!")) { + cold = 0; + resetTime = System.currentTimeMillis(); + } + } + + public static void update() { + if (!Utils.isInDwarvenMines() || System.currentTimeMillis() - resetTime < 3000 || !SkyblockerConfigManager.get().locations.dwarvenMines.enableGlaciteColdOverlay) { + cold = 0; + return; + } + for (String line : Utils.STRING_SCOREBOARD) { + Matcher coldMatcher = COLD_PATTERN.matcher(line); + if (coldMatcher.matches()) { + String value = coldMatcher.group(1); + cold = Integer.parseInt(value); + return; + } + } + cold = 0; + } + + private static void renderOverlay(DrawContext context, Identifier texture, float opacity) { + RenderSystem.disableDepthTest(); + RenderSystem.depthMask(false); + RenderSystem.enableBlend(); + context.setShaderColor(1.0f, 1.0f, 1.0f, opacity); + context.drawTexture(texture, 0, 0, -90, 0.0f, 0.0f, context.getScaledWindowWidth(), context.getScaledWindowHeight(), context.getScaledWindowWidth(), context.getScaledWindowHeight()); + RenderSystem.disableBlend(); + RenderSystem.depthMask(true); + RenderSystem.enableDepthTest(); + context.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); + } + + public static void render(DrawContext context, float tickDelta) { + if (Utils.isInDwarvenMines() && SkyblockerConfigManager.get().locations.dwarvenMines.enableGlaciteColdOverlay) { + renderOverlay(context, POWDER_SNOW_OUTLINE, cold / 100f); + } + } +} |