diff options
author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-23 22:19:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-23 22:19:34 -0400 |
commit | 813df61af0b38371efa38c817fe6d406a37a3317 (patch) | |
tree | 8fe5bba57d855033d0626bbfc08bec988b2e7f81 /src | |
parent | b6da8de30929b4722244062e948dca42a810a230 (diff) | |
parent | b659adf0f8b2771afaaf35900d483b7ad4e782b2 (diff) | |
download | Skyblocker-813df61af0b38371efa38c817fe6d406a37a3317.tar.gz Skyblocker-813df61af0b38371efa38c817fe6d406a37a3317.tar.bz2 Skyblocker-813df61af0b38371efa38c817fe6d406a37a3317.zip |
Merge pull request #703 from f3shqt/master
Glacite Overlay (Oops)
Diffstat (limited to 'src')
6 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java index a57b4177..a9aab3b6 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -120,6 +120,7 @@ public class SkyblockerMod implements ClientModInitializer { BackpackPreview.init(); ItemCooldowns.init(); TabHud.init(); + GlaciteColdOverlay.init(); DwarvenHud.init(); CommissionLabels.init(); CrystalsHud.init(); diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java index 8dc587fd..e77e9f4b 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java @@ -210,6 +210,20 @@ public class MiningCategory { .controller(ConfigUtils::createBooleanController) .build()) .build()) + + //Glacite Tunnels + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.config.mining.glacite")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.config.mining.glacite.coldOverlay")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.glacite.coldOverlay@Tooltip"))) + .binding(defaults.mining.glacite.coldOverlay, + () -> config.mining.glacite.coldOverlay, + newValue -> config.mining.glacite.coldOverlay = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) .build(); } } diff --git a/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java index 65fd63ca..a2a9bcf7 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java @@ -24,6 +24,9 @@ public class MiningConfig { @SerialEntry public CommissionWaypoints commissionWaypoints = new CommissionWaypoints(); + @SerialEntry + public Glacite glacite = new Glacite(); + public static class DwarvenMines { @SerialEntry public boolean solveFetchur = true; @@ -119,6 +122,11 @@ public class MiningConfig { } } + public static class Glacite { + @SerialEntry + public boolean coldOverlay = true; + } + public enum DwarvenHudStyle { SIMPLE, FANCY, CLASSIC; diff --git a/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java b/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java index e69287da..7f4721a5 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java @@ -6,6 +6,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.events.HudRenderEvents; +import de.hysky.skyblocker.skyblock.dwarven.GlaciteColdOverlay; import de.hysky.skyblocker.skyblock.fancybars.FancyStatusBars; import de.hysky.skyblocker.skyblock.item.HotbarSlotLock; import de.hysky.skyblocker.skyblock.item.ItemCooldowns; @@ -114,6 +115,11 @@ public abstract class InGameHudMixin { if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay) ci.cancel(); } + @Inject(method = "renderMiscOverlays", at = @At("TAIL")) + private void skyblocker$afterMiscOverlays(CallbackInfo ci, @Local(argsOnly = true) DrawContext context) { + GlaciteColdOverlay.render(context); + } + @ModifyExpressionValue(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;getAttackCooldownProgress(F)F")) private float skyblocker$modifyAttackIndicatorCooldown(float cooldownProgress) { if (Utils.isOnSkyblock() && client.player != null) { 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..3839a712 --- /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.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); + ClientReceiveMessageEvents.GAME.register(GlaciteColdOverlay::coldReset); + } + + private static void coldReset(Text text, boolean b) { + if (!Utils.isInDwarvenMines() || b) { + return; + } + String message = text.getString(); + if (message.equals("The warmth of the campfire reduced your ❄ Cold to 0!")) { + cold = 0; + resetTime = System.currentTimeMillis(); + } + } + + private static void update() { + if (!Utils.isInDwarvenMines() || System.currentTimeMillis() - resetTime < 3000 || !SkyblockerConfigManager.get().mining.glacite.coldOverlay) { + 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) { + if (Utils.isInDwarvenMines() && SkyblockerConfigManager.get().mining.glacite.coldOverlay) { + renderOverlay(context, POWDER_SNOW_OUTLINE, cold / 100f); + } + } +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index c73f49e0..dbc60ca0 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -446,6 +446,10 @@ "skyblocker.config.mining.enableDrillFuel": "Enable Drill Fuel", + "skyblocker.config.mining.glacite": "Glacite Tunnels", + "skyblocker.config.mining.glacite.coldOverlay": "Cold Overlay", + "skyblocker.config.mining.glacite.coldOverlay@Tooltip": "Shows a frosty overlay in the Glacite mines that gets stronger as you get colder.", + "skyblocker.config.misc": "Misc", "skyblocker.config.misc.richPresence": "Discord RPC", |