aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-01-26 14:55:59 -0500
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-01-26 14:55:59 -0500
commit5c9eb5f77f85b221ee5c8ebedf44dd0a48bb8292 (patch)
tree9b31ff7721d801a9671c37ed75ddc8188fe9c33d /src/main
parent1ea5f54ab6d7edf7a7c5971db05e22667d3a9c93 (diff)
downloadSkyblocker-5c9eb5f77f85b221ee5c8ebedf44dd0a48bb8292.tar.gz
Skyblocker-5c9eb5f77f85b221ee5c8ebedf44dd0a48bb8292.tar.bz2
Skyblocker-5c9eb5f77f85b221ee5c8ebedf44dd0a48bb8292.zip
Tweak waypoints
Thanks to Fluboxer for the suggestions!
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java30
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoint.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/KuudraWaypoints.java52
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java4
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json3
6 files changed, 53 insertions, 61 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index 7234664d..b842ec27 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -926,19 +926,19 @@ public class SkyblockerConfig {
public boolean supplyWaypoints = true;
@SerialEntry
- public boolean supplyPileWaypoints = true;
+ public boolean fuelWaypoints = true;
@SerialEntry
- public boolean fuelWaypoints = true;
+ public Waypoint.Type suppliesAndFuelWaypointType = Waypoint.Type.WAYPOINT;
@SerialEntry
- public boolean safeSpotWaypoints = true;
+ public boolean ballistaBuildWaypoints = true;
@SerialEntry
- public boolean pearlWaypoints = true;
+ public boolean safeSpotWaypoints = true;
@SerialEntry
- public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT;
+ public boolean pearlWaypoints = true;
@SerialEntry
public boolean noArrowPoisonWarning = true;
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
index bd7d4c07..3c2dc3b6 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
@@ -28,19 +28,27 @@ public class CrimsonIsleCategory {
.controller(ConfigUtils::createBooleanController)
.build())
.option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.supplyPileWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.supplyPileWaypoints,
- () -> config.locations.crimsonIsle.kuudra.supplyPileWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.supplyPileWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.fuelWaypoints"))
.binding(defaults.locations.crimsonIsle.kuudra.fuelWaypoints,
() -> config.locations.crimsonIsle.kuudra.fuelWaypoints,
newValue -> config.locations.crimsonIsle.kuudra.fuelWaypoints = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Waypoint.Type>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.@Tooltip")))
+ .binding(defaults.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
+ () -> config.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
+ newValue -> config.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.ballistaBuildWaypoints"))
+ .binding(defaults.locations.crimsonIsle.kuudra.ballistaBuildWaypoints,
+ () -> config.locations.crimsonIsle.kuudra.ballistaBuildWaypoints,
+ newValue -> config.locations.crimsonIsle.kuudra.ballistaBuildWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.safeSpotWaypoints"))
.binding(defaults.locations.crimsonIsle.kuudra.safeSpotWaypoints,
@@ -55,14 +63,6 @@ public class CrimsonIsleCategory {
newValue -> config.locations.crimsonIsle.kuudra.pearlWaypoints = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
- .option(Option.<Waypoint.Type>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.@Tooltip")))
- .binding(defaults.locations.crimsonIsle.kuudra.waypointType,
- () -> config.locations.crimsonIsle.kuudra.waypointType,
- newValue -> config.locations.crimsonIsle.kuudra.waypointType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning"))
.description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning.@Tooltip")))
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> 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<KuudraWaypoint> SAFE_SPOT_WAYPOINTS = new ObjectArrayList<>();
- private static final ObjectArrayList<KuudraWaypoint> PEARL_WAYPOINTS = new ObjectArrayList<>();
- private static final Function<float[], Codec<List<KuudraWaypoint>>> CODEC = cc -> PosUtils.ALT_BLOCK_POS_CODEC.xmap(
- pos -> new KuudraWaypoint(pos, cc),
+ private static final Supplier<Type> SUPPLIES_AND_FUEL_TYPE = () -> SkyblockerConfigManager.get().locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType;
+ private static final ObjectArrayList<Waypoint> SAFE_SPOT_WAYPOINTS = new ObjectArrayList<>();
+ private static final ObjectArrayList<Waypoint> PEARL_WAYPOINTS = new ObjectArrayList<>();
+ private static final Function<float[], Codec<List<Waypoint>>> 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<KuudraWaypoint> supplyWaypoints = ObjectArrayList.of();
- private static ObjectArrayList<KuudraWaypoint> supplyPileWaypoints = ObjectArrayList.of();
- private static ObjectArrayList<KuudraWaypoint> fuelWaypoints = ObjectArrayList.of();
+ private static ObjectArrayList<Waypoint> supplyWaypoints = ObjectArrayList.of();
+ private static ObjectArrayList<Waypoint> ballistaBuildWaypoints = ObjectArrayList.of();
+ private static ObjectArrayList<Waypoint> 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<Void> loadWaypoints(MinecraftClient client, Identifier file, ObjectArrayList<KuudraWaypoint> list, float[] colorComponents) {
+ private static CompletableFuture<Void> loadWaypoints(MinecraftClient client, Identifier file, ObjectArrayList<Waypoint> 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.<KuudraWaypoint>of();
+ return List.<Waypoint>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<ArmorStandEntity> armorStands = client.world.getEntitiesByClass(ArmorStandEntity.class, client.player.getBoundingBox().expand(500d), ArmorStandEntity::hasCustomName);
- ObjectArrayList<KuudraWaypoint> supplies = new ObjectArrayList<>();
- ObjectArrayList<KuudraWaypoint> supplyPiles = new ObjectArrayList<>();
- ObjectArrayList<KuudraWaypoint> fuelCells = new ObjectArrayList<>();
+ ObjectArrayList<Waypoint> supplies = new ObjectArrayList<>();
+ ObjectArrayList<Waypoint> ballistaBuildSpots = new ObjectArrayList<>();
+ ObjectArrayList<Waypoint> 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);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
index 2f9c9f63..7f3d4eda 100644
--- a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
+++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
@@ -1,13 +1,14 @@
package de.hysky.skyblocker.utils.waypoint;
import de.hysky.skyblocker.utils.render.RenderHelper;
+import de.hysky.skyblocker.utils.render.Renderable;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import java.util.function.Supplier;
-public class Waypoint {
+public class Waypoint implements Renderable {
protected static final float DEFAULT_HIGHLIGHT_ALPHA = 0.5f;
protected static final float DEFAULT_LINE_WIDTH = 5f;
public final BlockPos pos;
@@ -74,6 +75,7 @@ public class Waypoint {
return colorComponents;
}
+ @Override
public void render(WorldRenderContext context) {
switch (typeSupplier.get()) {
case WAYPOINT -> RenderHelper.renderFilledWithBeaconBeam(context, pos, getColorComponents(), alpha, throughWalls);
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 7fb898b1..7a1bc8e2 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -167,8 +167,9 @@
"text.autoconfig.skyblocker.category.crimsonIsle": "Crimson Isle",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra": "Kuudra",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.supplyWaypoints": "Supply Waypoints",
- "text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.supplyPileWaypoints": "Supply Pile Waypoints",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.fuelWaypoints": "Fuel Waypoints",
+ "text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType": "Supplies/Fuel Waypoint Type",
+ "text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.ballistaBuildWaypoints": "Ballista Build Spot Waypoints",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.safeSpotWaypoints": "Safe Spot Waypoints",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.pearlWaypoints": "Pearl Waypoints",
"text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning": "No Arrow Poison Warning",