aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils/render
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-07-26 15:15:00 +0800
committerGitHub <noreply@github.com>2024-07-26 15:15:00 +0800
commitf53edcc01a94be3da0e83d2fc0fe4d13f58f13da (patch)
tree9d8a07764036b23e906547445152940c762e7361 /src/main/java/de/hysky/skyblocker/utils/render
parent192b16d5d5ec2baf0f561dcbaa8e1edad2fcd1b0 (diff)
parentc314749a48affe7d1ddc74aa0b5772cdc1afdf0e (diff)
downloadSkyblocker-f53edcc01a94be3da0e83d2fc0fe4d13f58f13da.tar.gz
Skyblocker-f53edcc01a94be3da0e83d2fc0fe4d13f58f13da.tar.bz2
Skyblocker-f53edcc01a94be3da0e83d2fc0fe4d13f58f13da.zip
Merge pull request #726 from LifeIsAParadox/use_boundingbox
use bounding box instead of block size
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils/render')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java31
1 files changed, 22 insertions, 9 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 1b16b138..20d8157a 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -5,6 +5,7 @@ import com.mojang.logging.LogUtils;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.mixins.accessors.BeaconBlockEntityRendererInvoker;
import de.hysky.skyblocker.mixins.accessors.DrawContextInvoker;
+import de.hysky.skyblocker.utils.Boxes;
import de.hysky.skyblocker.utils.render.culling.OcclusionCulling;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
@@ -30,7 +31,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.ColorHelper;
import net.minecraft.util.math.Vec3d;
-
import org.joml.Matrix3f;
import org.joml.Matrix4f;
import org.joml.Vector3f;
@@ -61,6 +61,10 @@ public class RenderHelper {
renderBeaconBeam(context, pos, colorComponents);
}
+ public static void renderFilled(WorldRenderContext context, Box box, float[] colorComponents, float alpha, boolean throughWalls) {
+ renderFilled(context, box.getMinPos(), Boxes.getLengthVec(box), colorComponents, alpha, throughWalls);
+ }
+
public static void renderFilled(WorldRenderContext context, BlockPos pos, float[] colorComponents, float alpha, boolean throughWalls) {
renderFilled(context, Vec3d.of(pos), ONE, colorComponents, alpha, throughWalls);
}
@@ -72,11 +76,11 @@ public class RenderHelper {
public static void renderFilled(WorldRenderContext context, Vec3d pos, Vec3d dimensions, float[] colorComponents, float alpha, boolean throughWalls) {
if (throughWalls) {
if (FrustumUtils.isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + dimensions.x, pos.getY() + dimensions.y, pos.getZ() + dimensions.z)) {
- renderFilledInternal(context, pos, dimensions, colorComponents, alpha, true);
+ renderFilledInternal(context, pos, dimensions, colorComponents, alpha, true);
}
} else {
if (OcclusionCulling.getRegularCuller().isVisible(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + dimensions.x, pos.getY() + dimensions.y, pos.getZ() + dimensions.z)) {
- renderFilledInternal(context, pos, dimensions, colorComponents, alpha, false);
+ renderFilledInternal(context, pos, dimensions, colorComponents, alpha, false);
}
}
}
@@ -228,7 +232,7 @@ public class RenderHelper {
Vector3f normal = new Vector3f((float) offset.x, (float) offset.y, (float) offset.z);
buffer
- .vertex(positionMatrix, (float) cameraPoint.x , (float) cameraPoint.y, (float) cameraPoint.z)
+ .vertex(positionMatrix, (float) cameraPoint.x, (float) cameraPoint.y, (float) cameraPoint.z)
.color(colorComponents[0], colorComponents[1], colorComponents[2], alpha)
.normal(normal.x, normal.y, normal.z);
@@ -298,9 +302,9 @@ public class RenderHelper {
scale *= 0.025f;
positionMatrix
- .translate((float) (pos.getX() - cameraPos.getX()), (float) (pos.getY() - cameraPos.getY()), (float) (pos.getZ() - cameraPos.getZ()))
- .rotate(camera.getRotation())
- .scale(scale, -scale, scale);
+ .translate((float) (pos.getX() - cameraPos.getX()), (float) (pos.getY() - cameraPos.getY()), (float) (pos.getZ() - cameraPos.getZ()))
+ .rotate(camera.getRotation())
+ .scale(scale, -scale, scale);
float xOffset = -textRenderer.getWidth(text) / 2f;
@@ -336,6 +340,13 @@ public class RenderHelper {
}
}
+ /**
+ * Retrieves the bounding box of a block in the world.
+ *
+ * @param world The client world.
+ * @param pos The position of the block.
+ * @return The bounding box of the block.
+ */
public static Box getBlockBoundingBox(ClientWorld world, BlockPos pos) {
return getBlockBoundingBox(world, world.getBlockState(pos), pos);
}
@@ -383,8 +394,9 @@ public class RenderHelper {
if (width == 0 || height == 0) {
return;
}
- ((DrawContextInvoker) context).invokeDrawTexturedQuad(sprite.getAtlasId(), x, x + width, y, y + height, z, sprite.getFrameU((float)k / (float)i), sprite.getFrameU((float)(k + width) / (float)i), sprite.getFrameV((float)l / (float)j), sprite.getFrameV((float)(l + height) / (float)j), red, green, blue, alpha);
+ ((DrawContextInvoker) context).invokeDrawTexturedQuad(sprite.getAtlasId(), x, x + width, y, y + height, z, sprite.getFrameU((float) k / (float) i), sprite.getFrameU((float) (k + width) / (float) i), sprite.getFrameV((float) l / (float) j), sprite.getFrameV((float) (l + height) / (float) j), red, green, blue, alpha);
}
+
private static void drawSpriteTiled(DrawContext context, Sprite sprite, int x, int y, int z, int width, int height, int i, int j, int tileWidth, int tileHeight, int k, int l, float red, float green, float blue, float alpha) {
if (width <= 0 || height <= 0) {
return;
@@ -440,9 +452,10 @@ public class RenderHelper {
}
private static final float[] colorBuffer = new float[4];
+
public static void renderNineSliceColored(DrawContext context, Identifier texture, int x, int y, int width, int height, Color color) {
color.getComponents(colorBuffer);
- renderNineSliceColored(context, texture, x, y, width, height, colorBuffer[0],colorBuffer[1],colorBuffer[2],colorBuffer[3]);
+ renderNineSliceColored(context, texture, x, y, width, height, colorBuffer[0], colorBuffer[1], colorBuffer[2], colorBuffer[3]);
}
// TODO Get rid of reflection once the new Sodium is released