package io.github.jordandoyle.mcinject.helpers;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.Color;
public class RenderHelper {
public static void drawBoundingBox(Object o, int colour) {
double minX = 0, minY = 0, minZ = 0, maxX = 0, maxY = 0, maxZ = 0;
try {
minX = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minX")
.getMapping()).getDouble(o);
minY = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minY")
.getMapping()).getDouble(o);
minZ = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minZ")
.getMapping()).getDouble(o);
maxX = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxX")
.getMapping()).getDouble(o);
maxY = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxY")
.getMapping()).getDouble(o);
maxZ = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxZ")
.getMapping()).getDouble(o);
} catch (Exception e) {
e.printStackTrace();
}
glPushMatrix();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glEnable(GL_LINE_SMOOTH);
glDepthMask(false);
glLineWidth(1.8F);
Color c = new Color(colour);
glColor4f(c.r, c.g, c.b, c.a);
glBegin(GL_QUADS);
{
glVertex3d(minX, minY, minZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, maxY, maxZ);
}
glEnd();
glBegin(GL_QUADS);
{
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(minX, minY, minZ);
glVertex3d(minX, maxY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(maxX, minY, maxZ);
}
glEnd();
glBegin(GL_QUADS);
{
glVertex3d(minX, maxY, minZ);
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(minX, maxY, maxZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(minX, maxY, maxZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(maxX, maxY, minZ);
}
glEnd();
glBegin(GL_QUADS);
{
glVertex3d(minX, minY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, minY, minZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(maxX, minY, minZ);
}
glEnd();
glBegin(GL_QUADS);
{
glVertex3d(minX, minY, minZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, maxY, maxZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, maxY, minZ);
}
glEnd();
glBegin(GL_QUADS);
{
glVertex3d(minX, maxY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(minX, minY, minZ);
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(maxX, minY, maxZ);
}
glEnd();
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
glPopMatrix();
}
public static void drawOutlineBoundingBox(Object o, int colour) {
double minX = 0, minY = 0, minZ = 0, maxX = 0, maxY = 0, maxZ = 0;
try {
minX = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minX")
.getMapping()).getDouble(o);
minY = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minY")
.getMapping()).getDouble(o);
minZ = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "minZ")
.getMapping()).getDouble(o);
maxX = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxX")
.getMapping()).getDouble(o);
maxY = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxY")
.getMapping()).getDouble(o);
maxZ = o.getClass()
.getField(
new ObfuscatedMapping(
"net/minecraft/src/AxisAlignedBB", "maxZ")
.getMapping()).getDouble(o);
} catch (Exception e) {
e.printStackTrace();
}
glPushMatrix();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glEnable(GL_LINE_SMOOTH);
glDepthMask(false);
glLineWidth(1.8F);
Color c = new Color(colour);
glColor4f(c.r, c.g, c.b, c.a);
glBegin(GL_LINE_STRIP);
{
glVertex3d(minX, minY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, minY, minZ);
}
glEnd();
glBegin(GL_LINE_STRIP);
{
glVertex3d(minX, maxY, minZ);
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(minX, maxY, maxZ);
glVertex3d(minX, maxY, minZ);
}
glEnd();
glBegin(GL_LINES);
{
glVertex3d(minX, minY, minZ);
glVertex3d(minX, maxY, minZ);
glVertex3d(maxX, minY, minZ);
glVertex3d(maxX, maxY, minZ);
glVertex3d(maxX, minY, maxZ);
glVertex3d(maxX, maxY, maxZ);
glVertex3d(minX, minY, maxZ);
glVertex3d(minX, maxY, maxZ);
}
glEnd();
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
glPopMatrix();
}
public static String toHex(org.lwjgl.util.Color c) {
return getHexValue(c.getAlpha()) + getHexValue(c.getRed()) + getHexValue(c.getGreen()) + getHexValue(c.getBlue());
}
private static String getHexValue(int n) {
StringBuilder builder = new StringBuilder(Integer.toHexString(n & 0xff));
while (builder.length() < 2) {
builder.append("0");
}
return builder.toString().toUpperCase();
}
}