aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-06-26 19:39:18 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-06-26 19:39:18 +0800
commit5764eed4cfd41e78a8cc1bb6ceb51fc0f5b84d9c (patch)
tree8195c0571b22d986103be9a31d40f51c639ad5d7 /src/main/java
parent384f75a5aec98713d719f01662fc95464bed84f3 (diff)
downloadSkyblocker-5764eed4cfd41e78a8cc1bb6ceb51fc0f5b84d9c.tar.gz
Skyblocker-5764eed4cfd41e78a8cc1bb6ceb51fc0f5b84d9c.tar.bz2
Skyblocker-5764eed4cfd41e78a8cc1bb6ceb51fc0f5b84d9c.zip
Refactor MirrorverseWaypoints
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java12
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java73
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java12
4 files changed, 51 insertions, 51 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
index f086b9e5..108a7344 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/accessor/FrustumInvoker.java
@@ -1,17 +1,15 @@
package me.xmrvizzy.skyblocker.mixin.accessor;
+import me.xmrvizzy.skyblocker.utils.FrustumUtils;
+import net.minecraft.client.render.Frustum;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
-import net.minecraft.client.render.Frustum;
-
/**
- * For the purpose of avoiding object allocations!
- *
+ * Use {@link FrustumUtils#isVisible(double, double, double, double, double, double) FrustumUtils#isVisible} which is shorter. For the purpose of avoiding object allocations!
*/
@Mixin(Frustum.class)
public interface FrustumInvoker {
-
- @Invoker("isVisible")
- public boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
+ @Invoker("isVisible")
+ boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java
index c0493d18..630d953b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java
@@ -1,74 +1,68 @@
package me.xmrvizzy.skyblocker.skyblock.rift;
-import java.awt.Color;
-import java.io.BufferedReader;
-import java.io.IOException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-
-import me.x150.renderer.render.Renderer3d;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-import me.xmrvizzy.skyblocker.mixin.accessor.FrustumInvoker;
-import me.xmrvizzy.skyblocker.utils.FrustumUtils;
+import me.xmrvizzy.skyblocker.utils.RenderHelper;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.minecraft.client.MinecraftClient;
import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.Vec3d;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
public class MirrorverseWaypoints {
private static final Logger LOGGER = LoggerFactory.getLogger("skyblocker");
private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
- private static final Identifier WAYPOINTS_JSON = new Identifier("skyblocker", "mirrorverse_waypoints.json");
+ private static final Identifier WAYPOINTS_JSON = new Identifier(SkyblockerMod.NAMESPACE, "mirrorverse_waypoints.json");
private static final BlockPos[] LAVA_PATH_WAYPOINTS = new BlockPos[107];
private static final BlockPos[] UPSIDE_DOWN_WAYPOINTS = new BlockPos[66];
private static final BlockPos[] TURBULATOR_WAYPOINTS = new BlockPos[27];
private static final float[] COLOR_COMPONENTS = DyeColor.RED.getColorComponents();
- private static final Vec3d ONE = new Vec3d(1, 1, 1);
-
+
static {
loadWaypoints();
}
-
+
/**
* Loads the waypoint locations into memory
*/
public static void loadWaypoints() {
- try(BufferedReader reader = CLIENT.getResourceManager().openAsReader(WAYPOINTS_JSON)) {
+ try (BufferedReader reader = CLIENT.getResourceManager().openAsReader(WAYPOINTS_JSON)) {
JsonObject file = JsonParser.parseReader(reader).getAsJsonObject();
JsonArray sections = file.get("sections").getAsJsonArray();
-
+
/// Lava Path
JsonArray lavaPathWaypoints = sections.get(0).getAsJsonObject().get("waypoints").getAsJsonArray();
-
- for(int i = 0; i < lavaPathWaypoints.size(); i++) {
+
+ for (int i = 0; i < lavaPathWaypoints.size(); i++) {
JsonObject point = lavaPathWaypoints.get(i).getAsJsonObject();
LAVA_PATH_WAYPOINTS[i] = new BlockPos(point.get("x").getAsInt(), point.get("y").getAsInt(), point.get("z").getAsInt());
}
-
+
/// Upside Down Parkour
JsonArray upsideDownParkourWaypoints = sections.get(1).getAsJsonObject().get("waypoints").getAsJsonArray();
-
- for(int i = 0; i < upsideDownParkourWaypoints.size(); i++) {
+
+ for (int i = 0; i < upsideDownParkourWaypoints.size(); i++) {
JsonObject point = upsideDownParkourWaypoints.get(i).getAsJsonObject();
UPSIDE_DOWN_WAYPOINTS[i] = new BlockPos(point.get("x").getAsInt(), point.get("y").getAsInt(), point.get("z").getAsInt());
}
-
+
/// Turbulator Parkour
JsonArray turbulatorParkourWaypoints = sections.get(2).getAsJsonObject().get("waypoints").getAsJsonArray();
-
- for(int i = 0; i < turbulatorParkourWaypoints.size(); i++) {
+
+ for (int i = 0; i < turbulatorParkourWaypoints.size(); i++) {
JsonObject point = turbulatorParkourWaypoints.get(i).getAsJsonObject();
TURBULATOR_WAYPOINTS[i] = new BlockPos(point.get("x").getAsInt(), point.get("y").getAsInt(), point.get("z").getAsInt());
}
-
+
} catch (IOException e) {
LOGGER.info("[Skyblocker] Mirrorverse Waypoints failed to load ;(");
e.printStackTrace();
@@ -76,25 +70,18 @@ public class MirrorverseWaypoints {
}
public static void render(WorldRenderContext wrc) {
- FrustumInvoker frustum = ((FrustumInvoker) FrustumUtils.getFrustum());
//I would also check for the mirrorverse location but the scoreboard stuff is not performant at all...
- if(Utils.getLocationRaw().equals(TheRift.LOCATION) && SkyblockerConfig.get().locations.rift.mirrorverseWaypoints) {
- for(BlockPos pos : LAVA_PATH_WAYPOINTS) {
- if(frustum.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- Renderer3d.renderFilled(wrc.matrixStack(), new Color(COLOR_COMPONENTS[0], COLOR_COMPONENTS[1], COLOR_COMPONENTS[2], 0.5f), Vec3d.of(pos), ONE);
- };
+ if (Utils.getLocationRaw().equals(TheRift.LOCATION) && SkyblockerConfig.get().locations.rift.mirrorverseWaypoints) {
+ for (BlockPos pos : LAVA_PATH_WAYPOINTS) {
+ RenderHelper.renderFilledIfVisible(wrc, pos, COLOR_COMPONENTS, 0.5f);
}
-
- for(BlockPos pos : UPSIDE_DOWN_WAYPOINTS) {
- if(frustum.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- Renderer3d.renderFilled(wrc.matrixStack(), new Color(COLOR_COMPONENTS[0], COLOR_COMPONENTS[1], COLOR_COMPONENTS[2], 0.5f), Vec3d.of(pos), ONE);
- };
+
+ for (BlockPos pos : UPSIDE_DOWN_WAYPOINTS) {
+ RenderHelper.renderFilledIfVisible(wrc, pos, COLOR_COMPONENTS, 0.5f);
}
-
- for(BlockPos pos : TURBULATOR_WAYPOINTS) {
- if(frustum.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) {
- Renderer3d.renderFilled(wrc.matrixStack(), new Color(COLOR_COMPONENTS[0], COLOR_COMPONENTS[1], COLOR_COMPONENTS[2], 0.5f), Vec3d.of(pos), ONE);
- };
+
+ for (BlockPos pos : TURBULATOR_WAYPOINTS) {
+ RenderHelper.renderFilledIfVisible(wrc, pos, COLOR_COMPONENTS, 0.5f);
}
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
index 6973aa1e..9ea90c16 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/FrustumUtils.java
@@ -1,6 +1,7 @@
package me.xmrvizzy.skyblocker.utils;
import me.xmrvizzy.skyblocker.mixin.AccessorWorldRenderer;
+import me.xmrvizzy.skyblocker.mixin.accessor.FrustumInvoker;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.Frustum;
import net.minecraft.util.math.Box;
@@ -14,4 +15,8 @@ public class FrustumUtils {
public static boolean isBoxVisible(Box box) {
return getFrustum().isVisible(box);
}
+
+ public static boolean isVisible(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
+ return ((FrustumInvoker) getFrustum()).isVisible(minX, minY, minZ, maxX, maxY, maxZ);
+ }
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
index 79308dc3..c843dc43 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderHelper.java
@@ -17,10 +17,20 @@ public class RenderHelper {
public static void renderFilledThroughWalls(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) {
Renderer3d.renderThroughWalls();
- Renderer3d.renderFilled(context.matrixStack(), new Color(colorComponents[0], colorComponents[1], colorComponents[2], alpha), Vec3d.of(pos), new Vec3d(1, 1, 1));
+ renderFilled(context, pos, colorComponents, alpha);
Renderer3d.stopRenderThroughWalls();
}
+ public static void renderFilledIfVisible(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, pos, colorComponents, alpha);
+ }
+ }
+
+ public static void renderFilled(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha) {
+ Renderer3d.renderFilled(context.matrixStack(), new Color(colorComponents[0], colorComponents[1], colorComponents[2], alpha), Vec3d.of(pos), new Vec3d(1, 1, 1));
+ }
+
public static void renderBeaconBeam(WorldRenderContext context, BlockPos pos, float[] colorComponents) {
context.matrixStack().push();
context.matrixStack().translate(pos.getX() - context.camera().getPos().x, pos.getY() - context.camera().getPos().y, pos.getZ() - context.camera().getPos().z);