aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-11 15:28:31 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-08-30 22:49:53 -0400
commit3c999246269f76feb7c2496f4d23cd5d225b9941 (patch)
treec0e54c8c1a7af730c3b3a9dad68c74792e8c3a20 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets
parent43e8c330620de57df72fa1225e6e2efd828737f8 (diff)
downloadSkyblocker-3c999246269f76feb7c2496f4d23cd5d225b9941.tar.gz
Skyblocker-3c999246269f76feb7c2496f4d23cd5d225b9941.tar.bz2
Skyblocker-3c999246269f76feb7c2496f4d23cd5d225b9941.zip
Add SecretWaypoint text rendering
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java20
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java39
2 files changed, 38 insertions, 21 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
index da3ea5eb..e7ed7014 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/Room.java
@@ -5,7 +5,6 @@ import com.google.gson.JsonObject;
import it.unimi.dsi.fastutil.ints.IntRBTreeSet;
import it.unimi.dsi.fastutil.ints.IntSortedSet;
import it.unimi.dsi.fastutil.ints.IntSortedSets;
-import me.xmrvizzy.skyblocker.utils.RenderHelper;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.fabricmc.fabric.api.util.TriState;
import net.minecraft.block.MapColor;
@@ -185,30 +184,15 @@ public class Room {
JsonObject waypoint = waypointElement.getAsJsonObject();
String secretName = waypoint.get("secretName").getAsString();
int secretIndex = Integer.parseInt(secretName.substring(0, Character.isDigit(secretName.charAt(1)) ? 2 : 1));
- secretWaypoints.add(new SecretWaypoint(secretIndex, getCategory(waypoint), DungeonMapUtils.relativeToActual(directionRooms.getMiddle(), directionRooms.getLeft(), waypoint), true));
+ secretWaypoints.add(new SecretWaypoint(secretIndex, waypoint, secretName, DungeonMapUtils.relativeToActual(directionRooms.getMiddle(), directionRooms.getLeft(), waypoint)));
}
DungeonSecrets.LOGGER.info("[Skyblocker] Room {} matched after checking {} block(s)", name, checkedBlocks.size()); // TODO change to debug
}
- private SecretWaypoint.Category getCategory(JsonObject categoryJson) {
- return switch (categoryJson.get("category").getAsString()) {
- case "entrance" -> SecretWaypoint.Category.ENTRANCE;
- case "superboom" -> SecretWaypoint.Category.SUPERBOOM;
- case "chest" -> SecretWaypoint.Category.CHEST;
- case "item" -> SecretWaypoint.Category.ITEM;
- case "bat" -> SecretWaypoint.Category.BAT;
- case "wither" -> SecretWaypoint.Category.WITHER;
- case "lever" -> SecretWaypoint.Category.LEVER;
- case "fairysoul" -> SecretWaypoint.Category.FAIRYSOUL;
- case "stonk" -> SecretWaypoint.Category.STONK;
- default -> SecretWaypoint.Category.DEFAULT;
- };
- }
-
protected void render(WorldRenderContext context) {
for (SecretWaypoint secretWaypoint : secretWaypoints) {
if (secretWaypoint.missing()) {
- RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, secretWaypoint.pos(), secretWaypoint.category().colorComponents, 0.5F);
+ secretWaypoint.render(context);
}
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
index 475229e0..08cba782 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java
@@ -1,9 +1,27 @@
package me.xmrvizzy.skyblocker.skyblock.dungeon.secrets;
+import com.google.gson.JsonObject;
+import me.xmrvizzy.skyblocker.utils.RenderHelper;
+import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
import net.minecraft.util.math.BlockPos;
-public record SecretWaypoint(int secretIndex, Category category, BlockPos pos, boolean missing) {
- enum Category {
+public record SecretWaypoint(int secretIndex, Category category, Text name, BlockPos pos, PlayerEntity player, boolean missing) {
+ SecretWaypoint(int secretIndex, JsonObject waypoint, String name, BlockPos pos) {
+ this(secretIndex, Category.get(waypoint), Text.of(name), pos, MinecraftClient.getInstance().player, true);
+ }
+
+ void render(WorldRenderContext context) {
+ RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, pos(), category().colorComponents, 0.5F);
+ RenderHelper.renderText(context, name(), pos().up().toCenterPos(), true);
+ double distance = player().getPos().distanceTo(pos().toCenterPos());
+ RenderHelper.renderText(context, Text.literal(Math.round(distance) + "m").formatted(Formatting.YELLOW), pos().up().toCenterPos(), 1, MinecraftClient.getInstance().textRenderer.fontHeight + 1, true);
+ }
+
+ private enum Category {
ENTRANCE(0, 255, 0),
SUPERBOOM(255, 0, 0),
CHEST(2, 213, 250),
@@ -14,7 +32,7 @@ public record SecretWaypoint(int secretIndex, Category category, BlockPos pos, b
FAIRYSOUL(255, 85, 255),
STONK(146, 52, 235),
DEFAULT(190, 255, 252);
- final float[] colorComponents;
+ private final float[] colorComponents;
Category(int... intColorComponents) {
colorComponents = new float[intColorComponents.length];
@@ -22,5 +40,20 @@ public record SecretWaypoint(int secretIndex, Category category, BlockPos pos, b
colorComponents[i] = intColorComponents[i] / 255F;
}
}
+
+ private static Category get(JsonObject categoryJson) {
+ return switch (categoryJson.get("category").getAsString()) {
+ case "entrance" -> Category.ENTRANCE;
+ case "superboom" -> Category.SUPERBOOM;
+ case "chest" -> Category.CHEST;
+ case "item" -> Category.ITEM;
+ case "bat" -> Category.BAT;
+ case "wither" -> Category.WITHER;
+ case "lever" -> Category.LEVER;
+ case "fairysoul" -> Category.FAIRYSOUL;
+ case "stonk" -> Category.STONK;
+ default -> Category.DEFAULT;
+ };
+ }
}
}