aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock
diff options
context:
space:
mode:
authorFuturemappermydud <54294576+Futuremappermydud@users.noreply.github.com>2023-07-04 20:19:40 -0400
committerFuturemappermydud <54294576+Futuremappermydud@users.noreply.github.com>2023-07-04 20:19:40 -0400
commit64e1de1f4f857d4c126b7610b008120a61f118d2 (patch)
tree78c692b5ee7d1b5015a4eb8df737e4ab587726ab /src/main/java/me/xmrvizzy/skyblocker/skyblock
parent379cd758fb6895c4e88d7cb8245f79bde1494f34 (diff)
downloadSkyblocker-64e1de1f4f857d4c126b7610b008120a61f118d2.tar.gz
Skyblocker-64e1de1f4f857d4c126b7610b008120a61f118d2.tar.bz2
Skyblocker-64e1de1f4f857d4c126b7610b008120a61f118d2.zip
New Slayer Stuff
Implement TitleContainer for stacking titles. Implement Mania Indicator to show the player when they are standing on green terracotta during mania.
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java26
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java46
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java25
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java36
5 files changed, 112 insertions, 22 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java
index f98c17e7..050c300f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java
@@ -3,19 +3,33 @@ package me.xmrvizzy.skyblocker.skyblock.rift;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.RenderHelper;
import me.xmrvizzy.skyblocker.utils.Utils;
+import me.xmrvizzy.skyblocker.utils.title.Title;
+import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
public class HealingMelonIndicator {
- private static long lastDisplayTime = 0;
-
+ private static Title title = null;
public static void updateHealth(MinecraftClient client) {
- if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) return;
+ if(title == null)
+ new Title(I18n.translate("skyblocker.rift.healNow"), Formatting.DARK_RED.getColorValue());
+
+ if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) {
+ title.active = false;
+ return;
+ }
+ title.active = true;
ClientPlayerEntity player = client.player;
- if (player != null && player.getHealth() <= SkyblockerConfig.get().slayer.vampireSlayer.healingMelonHealthThreshold * 2F && System.currentTimeMillis() - lastDisplayTime > 2500) {
- lastDisplayTime = System.currentTimeMillis();
- RenderHelper.displayTitleAndPlaySound(15, 5, "skyblocker.rift.healNow", Formatting.DARK_RED);
+ if (player != null && player.getHealth() <= SkyblockerConfig.get().slayer.vampireSlayer.healingMelonHealthThreshold * 2F) {
+ title.active = true;
+ if(!TitleContainer.titles.contains(title))
+ RenderHelper.displayInTitleContainerAndPlaySound(title);
+ }
+ else {
+ title.active = false;
}
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java
new file mode 100644
index 00000000..7d5a1cb4
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java
@@ -0,0 +1,46 @@
+package me.xmrvizzy.skyblocker.skyblock.rift;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.RenderHelper;
+import me.xmrvizzy.skyblocker.utils.SlayerUtils;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import me.xmrvizzy.skyblocker.utils.title.Title;
+import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
+import net.minecraft.block.Blocks;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.Formatting;
+
+public class ManiaIndicator {
+ private static Title title = null;
+ public static void updateMania() {
+ if(title == null)
+ title = new Title("b", Formatting.RED.getColorValue());
+
+ if (!SkyblockerConfig.get().slayer.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) {
+ title.active = false;
+ return;
+ }
+
+ Entity slayerEntity = SlayerUtils.getSlayerEntity();
+ if (slayerEntity == null) return;
+
+ boolean anyMania = false;
+ for (Entity entity : SlayerUtils.getEntityArmorStands(slayerEntity)) {
+ if (entity.getDisplayName().toString().contains("MANIA")) {
+ anyMania = true;
+ title.active = true;
+ var pos = MinecraftClient.getInstance().player.getBlockPos().down();
+ var isGreen = MinecraftClient.getInstance().world.getBlockState(pos).getBlock() == Blocks.GREEN_TERRACOTTA;
+ title.color = isGreen ? Formatting.GREEN.getColorValue() : Formatting.RED.getColorValue();
+ if(!TitleContainer.titles.contains(title)) {
+ title.text = I18n.translate("skyblocker.rift.mania");
+ RenderHelper.displayInTitleContainerAndPlaySound(title);
+ }
+ }
+ }
+ if(!anyMania)
+ title.active = false;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java
index d1132be8..01b6b738 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java
@@ -4,18 +4,31 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.RenderHelper;
import me.xmrvizzy.skyblocker.utils.SlayerUtils;
import me.xmrvizzy.skyblocker.utils.Utils;
+import me.xmrvizzy.skyblocker.utils.title.Title;
+import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
+import net.minecraft.client.resource.language.I18n;
import net.minecraft.entity.Entity;
+import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
public class StakeIndicator {
- private static long lastDisplayTime = 0;
-
+ private static Title title = null;
public static void updateStake() {
- if (!SkyblockerConfig.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) return;
+ if (title == null)
+ title = new Title("b", Formatting.RED.getColorValue());
+
+ if (!SkyblockerConfig.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) {
+ title.active = false;
+ return;
+ }
Entity slayerEntity = SlayerUtils.getSlayerEntity();
- if (slayerEntity != null && slayerEntity.getDisplayName().toString().contains("҉") && System.currentTimeMillis() - lastDisplayTime > 2500) {
- lastDisplayTime = System.currentTimeMillis();
- RenderHelper.displayTitleAndPlaySound(25, 5, "skyblocker.rift.stakeNow", Formatting.RED);
+ if (slayerEntity != null && slayerEntity.getDisplayName().toString().contains("҉")) {
+ title.active = true;
+ title.text = I18n.translate("skyblocker.rift.stakeNow");
+ if(!TitleContainer.titles.contains(title))
+ RenderHelper.displayInTitleContainerAndPlaySound(title);
}
+ else
+ title.active = false;
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java
index 91b727e2..5ca89dcf 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java
@@ -15,6 +15,7 @@ public class TheRift {
WorldRenderEvents.AFTER_TRANSLUCENT.register(EffigyWaypoints::render);
SkyblockerMod.getInstance().scheduler.scheduleCyclic(EffigyWaypoints::updateEffigies, SkyblockerConfig.get().slayer.vampireSlayer.effigyUpdateFrequency);
SkyblockerMod.getInstance().scheduler.scheduleCyclic(TwinClawsIndicator::updateIce, SkyblockerConfig.get().slayer.vampireSlayer.holyIceUpdateFrequency);
+ SkyblockerMod.getInstance().scheduler.scheduleCyclic(ManiaIndicator::updateMania, SkyblockerConfig.get().slayer.vampireSlayer.maniaUpdateFrequency);
SkyblockerMod.getInstance().scheduler.scheduleCyclic(StakeIndicator::updateStake, SkyblockerConfig.get().slayer.vampireSlayer.steakStakeUpdateFrequency);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java
index 7e1d6605..a062f7b7 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java
@@ -5,28 +5,44 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.RenderHelper;
import me.xmrvizzy.skyblocker.utils.SlayerUtils;
import me.xmrvizzy.skyblocker.utils.Utils;
+import me.xmrvizzy.skyblocker.utils.title.Title;
+import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
+import net.minecraft.client.resource.language.I18n;
import net.minecraft.entity.Entity;
+import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
public class TwinClawsIndicator {
- private static long lastDisplayTime = 0;
-
+ private static Title title = null;
+ public static boolean scheduling = false;
public static void updateIce() {
- if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) return;
+ if(title == null)
+ title = new Title("b", Formatting.AQUA.getColorValue());
+
+ if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) {
+ title.active = false;
+ return;
+ }
Entity slayerEntity = SlayerUtils.getSlayerEntity();
if (slayerEntity == null) return;
+ boolean anyClaws = false;
for (Entity entity : SlayerUtils.getEntityArmorStands(slayerEntity)) {
if (entity.getDisplayName().toString().contains("TWINCLAWS")) {
- SkyblockerMod.getInstance().scheduler.schedule(() -> {
- if (System.currentTimeMillis() - lastDisplayTime > 2500) {
- lastDisplayTime = System.currentTimeMillis();
- RenderHelper.displayTitleAndPlaySound(40, 5, "skyblocker.rift.iceNow", Formatting.AQUA);
- }
- }, SkyblockerConfig.get().slayer.vampireSlayer.holyIceIndicatorTickDelay);
+ anyClaws = true;
+ title.active = true;
+ if(!TitleContainer.titles.contains(title) && !scheduling) {
+ scheduling = true;
+ SkyblockerMod.getInstance().scheduler.schedule(() -> {
+ title.text = I18n.translate("skyblocker.rift.iceNow");
+ RenderHelper.displayInTitleContainerAndPlaySound(title);
+ scheduling = false;
+ }, SkyblockerConfig.get().slayer.vampireSlayer.holyIceIndicatorTickDelay);
+ }
}
}
-
+ if(!anyClaws)
+ title.active = false;
}
} \ No newline at end of file