aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-05-23 22:19:34 -0400
committerGitHub <noreply@github.com>2024-05-23 22:19:34 -0400
commit813df61af0b38371efa38c817fe6d406a37a3317 (patch)
tree8fe5bba57d855033d0626bbfc08bec988b2e7f81 /src/main/java/de/hysky/skyblocker
parentb6da8de30929b4722244062e948dca42a810a230 (diff)
parentb659adf0f8b2771afaaf35900d483b7ad4e782b2 (diff)
downloadSkyblocker-813df61af0b38371efa38c817fe6d406a37a3317.tar.gz
Skyblocker-813df61af0b38371efa38c817fe6d406a37a3317.tar.bz2
Skyblocker-813df61af0b38371efa38c817fe6d406a37a3317.zip
Merge pull request #703 from f3shqt/master
Glacite Overlay (Oops)
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/categories/MiningCategory.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java70
5 files changed, 99 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);
+ }
+ }
+}