aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/utils
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/utils
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/utils')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java82
3 files changed, 102 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
index a7e1fc99..e75538f6 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
@@ -2,6 +2,8 @@ package me.xmrvizzy.skyblocker.utils;
import me.x150.renderer.render.Renderer3d;
import me.xmrvizzy.skyblocker.mixin.accessor.BeaconBlockEntityRendererInvoker;
+import me.xmrvizzy.skyblocker.utils.title.Title;
+import me.xmrvizzy.skyblocker.utils.title.TitleContainer;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.block.entity.BeaconBlockEntityRenderer;
@@ -51,6 +53,11 @@ public class RenderHelper {
playNotificationSound();
}
+ public static void displayInTitleContainerAndPlaySound(Title title) {
+ TitleContainer.addTitle(title);
+ playNotificationSound();
+ }
+
private static void playNotificationSound() {
if (MinecraftClient.getInstance().player != null) {
MinecraftClient.getInstance().player.playSound(SoundEvent.of(new Identifier("entity.experience_orb.pickup")), 100f, 0.1f);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java b/src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java
new file mode 100644
index 00000000..44a636d7
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/title/Title.java
@@ -0,0 +1,13 @@
+package me.xmrvizzy.skyblocker.utils.title;
+
+public class Title {
+ public String text = "";
+ public boolean active = true;
+ public int color;
+ public float lastX = 0;
+
+ public Title(String text, int color) {
+ this.text = text;
+ this.color = color;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java
new file mode 100644
index 00000000..c8747596
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/title/TitleContainer.java
@@ -0,0 +1,82 @@
+package me.xmrvizzy.skyblocker.utils.title;
+
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.skyblock.FairySouls;
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.font.TextRenderer;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.entity.decoration.DisplayEntity;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import net.minecraft.util.math.MathHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
+
+public class TitleContainer {
+ public static List<Title> titles = new ArrayList<>();
+ private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker");
+ public static void init() {
+ HudRenderCallback.EVENT.register(TitleContainer::draw);
+ ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE)
+ .then(literal("title")
+ .then(literal("ice").executes(context -> {
+ titles.add(new Title(Text.translatable("skyblocker.rift.iceNow").getString(), Formatting.AQUA.getColorValue()));
+ return 1;
+ }))
+ .then(literal("stake").executes(context -> {
+ titles.add(new Title("Stake", Formatting.RED.getColorValue()));
+ return 1;
+ }))
+ .then(literal("heal").executes(context -> {
+ titles.add(new Title("Heal", Formatting.DARK_RED.getColorValue()));
+ return 1;
+ }))
+ )));
+ }
+ public static void addTitle(Title title)
+ {
+ title.active = true;
+ title.lastX = 0;
+ titles.add(title);
+ }
+ public static void draw(DrawContext context, float tickDelta) {
+ var client = MinecraftClient.getInstance();
+ TextRenderer textRenderer = client.textRenderer;
+
+ List<Title> toRemove = new ArrayList<>();
+
+ float x;
+ float width = 0;
+ context.getMatrices().push();
+ context.getMatrices().scale(3.0F, 3.0F, 3.0F);
+ for (Title title : titles) {
+ width += textRenderer.getWidth(title.text) * 3F + 10;
+ }
+ context.getMatrices().pop();
+
+ x = (client.getWindow().getScaledWidth() / 2) - width / 2;
+
+ for (Title title : titles) {
+ context.getMatrices().push();
+ context.getMatrices().translate(title.lastX, client.getWindow().getScaledHeight() * 0.6F, 0);
+ context.getMatrices().scale(3.0F, 3.0F, 3.0F);
+
+ title.lastX = MathHelper.lerp(tickDelta * 0.5F, title.lastX, x);
+ x += textRenderer.getWidth(title.text) * 3F + 10;
+ context.drawText(textRenderer, title.text, 0, 0, title.color, true
+ );
+ context.getMatrices().pop();
+ if (!title.active) {
+ toRemove.add(title);
+ }
+ }
+ titles.removeAll(toRemove);
+ }
+} \ No newline at end of file