From 5c9eb5f77f85b221ee5c8ebedf44dd0a48bb8292 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:55:59 -0500 Subject: Tweak waypoints Thanks to Fluboxer for the suggestions! --- .../skyblock/crimson/kuudra/KuudraWaypoint.java | 15 ------- .../skyblock/crimson/kuudra/KuudraWaypoints.java | 52 ++++++++++++---------- 2 files changed, 28 insertions(+), 39 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoint.java (limited to 'src/main/java/de/hysky/skyblocker/skyblock/crimson') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoint.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoint.java deleted file mode 100644 index bba2689b..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoint.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.hysky.skyblocker.skyblock.crimson.kuudra; - -import java.util.function.Supplier; - -import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.utils.waypoint.Waypoint; -import net.minecraft.util.math.BlockPos; - -class KuudraWaypoint extends Waypoint { - private static final Supplier TYPE = () -> SkyblockerConfigManager.get().locations.crimsonIsle.kuudra.waypointType; - - KuudraWaypoint(BlockPos pos, float[] colorComponents) { - super(pos, TYPE, colorComponents, false); - } -} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoints.java index b1e9daa1..407ecca8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoints.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoints.java @@ -4,6 +4,7 @@ import java.io.BufferedReader; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Function; +import java.util.function.Supplier; import org.slf4j.Logger; @@ -18,6 +19,8 @@ import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.PosUtils; import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.waypoint.Waypoint; +import de.hysky.skyblocker.utils.waypoint.Waypoint.Type; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; @@ -30,17 +33,18 @@ public class KuudraWaypoints { private static final float[] FUEL_COLOR = { 250f / 255f, 217 / 255f, 2f / 255f }; private static final float[] PEARL_COLOR = { 57f / 255f, 117f / 255f, 125f / 255f }; private static final float[] SAFE_SPOT_COLOR = { 255f / 255f, 85f / 255f, 255f / 255f }; - private static final ObjectArrayList SAFE_SPOT_WAYPOINTS = new ObjectArrayList<>(); - private static final ObjectArrayList PEARL_WAYPOINTS = new ObjectArrayList<>(); - private static final Function>> CODEC = cc -> PosUtils.ALT_BLOCK_POS_CODEC.xmap( - pos -> new KuudraWaypoint(pos, cc), + private static final Supplier SUPPLIES_AND_FUEL_TYPE = () -> SkyblockerConfigManager.get().locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType; + private static final ObjectArrayList SAFE_SPOT_WAYPOINTS = new ObjectArrayList<>(); + private static final ObjectArrayList PEARL_WAYPOINTS = new ObjectArrayList<>(); + private static final Function>> CODEC = cc -> PosUtils.ALT_BLOCK_POS_CODEC.xmap( + pos -> new Waypoint(pos, Waypoint.Type.HIGHLIGHT, cc), waypoint -> waypoint.pos) .listOf(); //Use non final lists and swap them out to avoid ConcurrentModificationExceptions - private static ObjectArrayList supplyWaypoints = ObjectArrayList.of(); - private static ObjectArrayList supplyPileWaypoints = ObjectArrayList.of(); - private static ObjectArrayList fuelWaypoints = ObjectArrayList.of(); + private static ObjectArrayList supplyWaypoints = ObjectArrayList.of(); + private static ObjectArrayList ballistaBuildWaypoints = ObjectArrayList.of(); + private static ObjectArrayList fuelWaypoints = ObjectArrayList.of(); private static boolean loaded; static void load(MinecraftClient client) { @@ -50,14 +54,14 @@ public class KuudraWaypoints { CompletableFuture.allOf(safeSpots, pearls).whenComplete((_result, _throwable) -> loaded = true); } - private static CompletableFuture loadWaypoints(MinecraftClient client, Identifier file, ObjectArrayList list, float[] colorComponents) { + private static CompletableFuture loadWaypoints(MinecraftClient client, Identifier file, ObjectArrayList list, float[] colorComponents) { return CompletableFuture.supplyAsync(() -> { try (BufferedReader reader = client.getResourceManager().openAsReader(file)) { return CODEC.apply(colorComponents).parse(JsonOps.INSTANCE, getWaypoints(reader)).result().orElseThrow(); } catch (Exception e) { LOGGER.error("[Skyblocker Kuudra Waypoints] Failed to load kuudra waypoints from: {}", file, e); - return List.of(); + return List.of(); } }).thenAccept(list::addAll); } @@ -70,34 +74,34 @@ public class KuudraWaypoints { MinecraftClient client = MinecraftClient.getInstance(); SkyblockerConfig.Kuudra config = SkyblockerConfigManager.get().locations.crimsonIsle.kuudra; - if (Utils.isInKuudra() && (config.supplyWaypoints || config.fuelWaypoints || config.supplyPileWaypoints)) { + if (Utils.isInKuudra() && (config.supplyWaypoints || config.fuelWaypoints || config.ballistaBuildWaypoints)) { List armorStands = client.world.getEntitiesByClass(ArmorStandEntity.class, client.player.getBoundingBox().expand(500d), ArmorStandEntity::hasCustomName); - ObjectArrayList supplies = new ObjectArrayList<>(); - ObjectArrayList supplyPiles = new ObjectArrayList<>(); - ObjectArrayList fuelCells = new ObjectArrayList<>(); + ObjectArrayList supplies = new ObjectArrayList<>(); + ObjectArrayList ballistaBuildSpots = new ObjectArrayList<>(); + ObjectArrayList fuelCells = new ObjectArrayList<>(); for (ArmorStandEntity armorStand : armorStands) { String name = armorStand.getName().getString(); if (config.supplyWaypoints && name.contains("SUPPLIES")) { - supplies.add(new KuudraWaypoint(armorStand.getBlockPos(), SUPPLIES_COLOR)); + supplies.add(new Waypoint(armorStand.getBlockPos(), SUPPLIES_AND_FUEL_TYPE, SUPPLIES_COLOR)); continue; } - if (config.supplyPileWaypoints && name.contains("SNEAK + PUNCH")) { - supplyPiles.add(new KuudraWaypoint(armorStand.getBlockPos(), SUPPLIES_COLOR)); + if (config.ballistaBuildWaypoints && name.contains("SNEAK + PUNCH")) { + ballistaBuildSpots.add(new Waypoint(armorStand.getBlockPos(), Waypoint.Type.WAYPOINT, SUPPLIES_COLOR)); continue; } if (config.fuelWaypoints && name.contains("FUEL CELL")) { - fuelCells.add(new KuudraWaypoint(armorStand.getBlockPos(), FUEL_COLOR)); + fuelCells.add(new Waypoint(armorStand.getBlockPos(), SUPPLIES_AND_FUEL_TYPE, FUEL_COLOR)); } } supplyWaypoints = supplies; - supplyPileWaypoints = supplyPiles; + ballistaBuildWaypoints = ballistaBuildSpots; fuelWaypoints = fuelCells; } } @@ -107,32 +111,32 @@ public class KuudraWaypoints { if (Utils.isInKuudra() && loaded) { if (config.supplyWaypoints) { - for (KuudraWaypoint waypoint : supplyWaypoints) { + for (Waypoint waypoint : supplyWaypoints) { waypoint.render(context); } } - if (config.supplyPileWaypoints) { - for (KuudraWaypoint waypoint : supplyPileWaypoints) { + if (config.ballistaBuildWaypoints) { + for (Waypoint waypoint : ballistaBuildWaypoints) { waypoint.render(context); } } if (config.fuelWaypoints) { - for (KuudraWaypoint waypoint : fuelWaypoints) { + for (Waypoint waypoint : fuelWaypoints) { waypoint.render(context); } } if (config.safeSpotWaypoints) { - for (KuudraWaypoint waypoint : SAFE_SPOT_WAYPOINTS) { + for (Waypoint waypoint : SAFE_SPOT_WAYPOINTS) { waypoint.render(context); } } //TODO maybe have "dynamic" waypoints that draw a line to the actual spot if (config.pearlWaypoints) { - for (KuudraWaypoint waypoint : PEARL_WAYPOINTS) { + for (Waypoint waypoint : PEARL_WAYPOINTS) { waypoint.render(context); } } -- cgit