aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-11-18 20:33:32 -0500
committerGitHub <noreply@github.com>2023-11-18 20:33:32 -0500
commit5e27a5cc104e5a891f122eb5bb1f01704b0470f3 (patch)
tree969eeded1e66aa0887e8df66082084597b4df902 /src/main/java/de/hysky/skyblocker/utils
parent4d005095cf9af283ad9ded0e726657c6fdaaf340 (diff)
parent8ac3fd07f712ddc45cc8477a5de9bd543a29e166 (diff)
downloadSkyblocker-5e27a5cc104e5a891f122eb5bb1f01704b0470f3.tar.gz
Skyblocker-5e27a5cc104e5a891f122eb5bb1f01704b0470f3.tar.bz2
Skyblocker-5e27a5cc104e5a891f122eb5bb1f01704b0470f3.zip
Merge pull request #418 from kevinthegreat1/waypoint
Waypoint API
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java22
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypoint.java44
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java40
3 files changed, 78 insertions, 28 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
index 3d8213fe..43d595a5 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -46,20 +46,20 @@ public class RenderHelper {
WorldRenderEvents.AFTER_TRANSLUCENT.register(TRANSLUCENT_DRAW, RenderHelper::drawTranslucents);
}
- public static void renderFilledThroughWallsWithBeaconBeam(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) {
- renderFilledThroughWalls(context, pos, colorComponents, alpha);
+ public static void renderFilledWithBeaconBeam(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha, boolean throughWalls) {
+ renderFilled(context, pos, colorComponents, alpha, throughWalls);
renderBeaconBeam(context, pos, colorComponents);
}
- public static void renderFilledThroughWalls(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) {
- if (FrustumUtils.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, true);
- }
- }
-
- public static void renderFilledIfVisible(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) {
- if (OcclusionCulling.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, false);
+ public static void renderFilled(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha, boolean throughWalls) {
+ if (throughWalls) {
+ if (FrustumUtils.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
+ renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, true);
+ }
+ } else {
+ if (OcclusionCulling.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
+ renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, false);
+ }
}
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypoint.java b/src/main/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypoint.java
new file mode 100644
index 00000000..7aa99d14
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypoint.java
@@ -0,0 +1,44 @@
+package de.hysky.skyblocker.utils.waypoint;
+
+import de.hysky.skyblocker.utils.Utils;
+import net.minecraft.util.math.BlockPos;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Supplier;
+
+public class ProfileAwareWaypoint extends Waypoint {
+ public final Set<String> foundProfiles = new HashSet<>();
+ private final float[] missingColor;
+ private final float[] foundColor;
+
+ public ProfileAwareWaypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] missingColor, float[] foundColor) {
+ super(pos, typeSupplier, null);
+ this.missingColor = missingColor;
+ this.foundColor = foundColor;
+ }
+
+ @Override
+ public boolean shouldRender() {
+ return !foundProfiles.contains(Utils.getProfile());
+ }
+
+ @Override
+ public void setFound() {
+ foundProfiles.add(Utils.getProfile());
+ }
+
+ public void setFound(String profile) {
+ foundProfiles.add(profile);
+ }
+
+ @Override
+ public void setMissing() {
+ foundProfiles.remove(Utils.getProfile());
+ }
+
+ @Override
+ protected float[] getColorComponents() {
+ return foundProfiles.contains(Utils.getProfile()) ? foundColor : missingColor;
+ }
+}
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 e7858f05..eb30cf8d 100644
--- a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
+++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java
@@ -11,30 +11,30 @@ public class Waypoint {
protected static final float DEFAULT_HIGHLIGHT_ALPHA = 0.5f;
protected static final float DEFAULT_LINE_WIDTH = 5f;
public final BlockPos pos;
- private final Box box;
- private final Supplier<Type> typeSupplier;
- private final float[] colorComponents;
- private final float alpha;
- private final float lineWidth;
- private final boolean throughWalls;
+ final Box box;
+ final Supplier<Type> typeSupplier;
+ final float[] colorComponents;
+ final float alpha;
+ final float lineWidth;
+ final boolean throughWalls;
private boolean shouldRender;
protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents) {
- this(pos, typeSupplier, colorComponents, DEFAULT_HIGHLIGHT_ALPHA);
+ this(pos, typeSupplier, colorComponents, DEFAULT_HIGHLIGHT_ALPHA, DEFAULT_LINE_WIDTH);
}
protected Waypoint(BlockPos pos, Type type, float[] colorComponents, float alpha) {
- this(pos, () -> type, colorComponents, alpha);
- }
-
- protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha) {
- this(pos, typeSupplier, colorComponents, alpha, DEFAULT_LINE_WIDTH);
+ this(pos, () -> type, colorComponents, alpha, DEFAULT_LINE_WIDTH);
}
protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha, float lineWidth) {
this(pos, typeSupplier, colorComponents, alpha, lineWidth, true);
}
+ public Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, boolean throughWalls) {
+ this(pos, typeSupplier, colorComponents, DEFAULT_HIGHLIGHT_ALPHA, DEFAULT_LINE_WIDTH, throughWalls);
+ }
+
protected Waypoint(BlockPos pos, Supplier<Type> typeSupplier, float[] colorComponents, float alpha, float lineWidth, boolean throughWalls) {
this(pos, typeSupplier, colorComponents, alpha, lineWidth, throughWalls, true);
}
@@ -62,19 +62,25 @@ public class Waypoint {
this.shouldRender = true;
}
+ protected float[] getColorComponents() {
+ return colorComponents;
+ }
+
public void render(WorldRenderContext context) {
switch (typeSupplier.get()) {
- case WAYPOINT -> RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, pos, colorComponents, alpha);
+ case WAYPOINT -> RenderHelper.renderFilledWithBeaconBeam(context, pos, getColorComponents(), alpha, throughWalls);
case OUTLINED_WAYPOINT -> {
- RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, pos, colorComponents, alpha);
+ float[] colorComponents = getColorComponents();
+ RenderHelper.renderFilledWithBeaconBeam(context, pos, colorComponents, alpha, throughWalls);
RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
}
- case HIGHLIGHT -> RenderHelper.renderFilledThroughWalls(context, pos, colorComponents, alpha);
+ case HIGHLIGHT -> RenderHelper.renderFilled(context, pos, getColorComponents(), alpha, throughWalls);
case OUTLINED_HIGHLIGHT -> {
- RenderHelper.renderFilledThroughWalls(context, pos, colorComponents, alpha);
+ float[] colorComponents = getColorComponents();
+ RenderHelper.renderFilled(context, pos, colorComponents, alpha, throughWalls);
RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
}
- case OUTLINE -> RenderHelper.renderOutline(context, box, colorComponents, lineWidth, throughWalls);
+ case OUTLINE -> RenderHelper.renderOutline(context, box, getColorComponents(), lineWidth, throughWalls);
}
}