aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/DangerWarning.java72
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/title/Title.java4
5 files changed, 87 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
index 441d927b..242bfd24 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
@@ -88,6 +88,14 @@ public class CrimsonIsleCategory {
newValue -> config.crimsonIsle.kuudra.kuudraGlow = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.dangerWarning"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.crimsonIsle.kuudra.dangerWarning.@Tooltip")))
+ .binding(defaults.crimsonIsle.kuudra.dangerWarning,
+ () -> config.crimsonIsle.kuudra.dangerWarning,
+ newValue -> config.crimsonIsle.kuudra.dangerWarning = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.build())
//dojo
.group(OptionGroup.createBuilder()
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java
index 00e0f654..9c087baf 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java
@@ -41,6 +41,9 @@ public class CrimsonIsleConfig {
@SerialEntry
public boolean kuudraGlow = true;
+
+ @SerialEntry
+ public boolean dangerWarning = true;
}
public static class Dojo {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/DangerWarning.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/DangerWarning.java
new file mode 100644
index 00000000..91ef5576
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/DangerWarning.java
@@ -0,0 +1,72 @@
+package de.hysky.skyblocker.skyblock.crimson.kuudra;
+
+import java.util.function.Supplier;
+
+import org.apache.commons.lang3.ObjectUtils;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.utils.render.RenderHelper;
+import de.hysky.skyblocker.utils.render.title.Title;
+import de.hysky.skyblocker.utils.render.title.TitleContainer;
+import de.hysky.skyblocker.utils.scheduler.Scheduler;
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Blocks;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
+import net.minecraft.util.DyeColor;
+import net.minecraft.util.math.BlockPos;
+
+public class DangerWarning {
+ private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
+ private static final Supplier<MutableText> DANGER_TEXT = () -> Text.translatable("skyblocker.crimson.kuudra.danger");
+ private static final Title TITLE = new Title(DANGER_TEXT.get());
+
+ static void init() {
+ Scheduler.INSTANCE.scheduleCyclic(DangerWarning::updateIndicator, 5);
+ ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> reset());
+ }
+
+ private static void updateIndicator() {
+ if (Utils.isInKuudra() && SkyblockerConfigManager.get().crimsonIsle.kuudra.dangerWarning && CLIENT.player != null && CLIENT.world != null) {
+ BlockPos under = CLIENT.player.getBlockPos().down();
+ BlockPos under2 = CLIENT.player.getBlockPos().down(2);
+ BlockPos under3 = CLIENT.player.getBlockPos().down(3);
+ BlockPos under4 = CLIENT.player.getBlockPos().down(4);
+ BlockPos under5 = CLIENT.player.getBlockPos().down(5);
+
+ Title title = ObjectUtils.firstNonNull(getDangerTitle(under), getDangerTitle(under2), getDangerTitle(under3), getDangerTitle(under4), getDangerTitle(under5));
+
+ if (title != null) {
+ RenderHelper.displayInTitleContainerAndPlaySound(title);
+ } else {
+ TitleContainer.removeTitle(TITLE);
+ }
+ }
+ }
+
+ private static Title getDangerTitle(BlockPos pos) {
+ BlockState state = CLIENT.world.getBlockState(pos);
+ Block block = state.getBlock();
+
+ int argb = switch (block) {
+ case Block b when b == Blocks.GREEN_TERRACOTTA -> DyeColor.GREEN.getEntityColor();
+ case Block b when b == Blocks.LIME_TERRACOTTA -> DyeColor.LIME.getEntityColor();
+ case Block b when b == Blocks.YELLOW_TERRACOTTA -> DyeColor.YELLOW.getEntityColor();
+ case Block b when b == Blocks.ORANGE_TERRACOTTA -> DyeColor.ORANGE.getEntityColor();
+ case Block b when b == Blocks.PINK_TERRACOTTA -> DyeColor.PINK.getEntityColor();
+ case Block b when b == Blocks.RED_TERRACOTTA -> DyeColor.RED.getEntityColor();
+
+ default -> 0;
+ };
+
+ return argb != 0 ? TITLE.setText(DANGER_TEXT.get().withColor(argb & 0x00FFFFFF)) : null;
+ }
+
+ private static void reset() {
+ TitleContainer.removeTitle(TITLE);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java
index 133e18c7..e2b3f256 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/Kuudra.java
@@ -11,6 +11,7 @@ public class Kuudra {
public static void init() {
KuudraWaypoints.init();
+ DangerWarning.init();
ClientPlayConnectionEvents.JOIN.register((_handler, _sender, _client) -> reset());
ClientReceiveMessageEvents.GAME.register(Kuudra::onMessage);
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/title/Title.java b/src/main/java/de/hysky/skyblocker/utils/render/title/Title.java
index 1e167afa..890976ae 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/title/Title.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/title/Title.java
@@ -38,8 +38,10 @@ public class Title {
return text;
}
- public void setText(MutableText text) {
+ public Title setText(MutableText text) {
this.text = text;
+
+ return this;
}
protected boolean isDefaultPos() {