diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-08-11 15:28:31 +0800 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-08-30 22:49:53 -0400 |
commit | 3c999246269f76feb7c2496f4d23cd5d225b9941 (patch) | |
tree | c0e54c8c1a7af730c3b3a9dad68c74792e8c3a20 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets | |
parent | 43e8c330620de57df72fa1225e6e2efd828737f8 (diff) | |
download | Skyblocker-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.java | 20 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java | 39 |
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; + }; + } } } |