+ GlStateManager._depthFunc(GL11.GL_LEQUAL);
+ }
+
+ public static void drawSolidBox(Box box, VertexBuffer vertexBuffer) {
+ BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
+ bufferBuilder.begin(VertexFormat.DrawMode.QUADS,
+ VertexFormats.POSITION);
+
+ bufferBuilder.vertex(box.minX, box.minY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.minY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.minY, box.maxZ).next();
+ bufferBuilder.vertex(box.minX, box.minY, box.maxZ).next();
+
+ bufferBuilder.vertex(box.minX, box.maxY, box.minZ).next();
+ bufferBuilder.vertex(box.minX, box.maxY, box.maxZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.maxZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.minZ).next();
+
+ bufferBuilder.vertex(box.minX, box.minY, box.minZ).next();
+ bufferBuilder.vertex(box.minX, box.maxY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.minY, box.minZ).next();
+
+ bufferBuilder.vertex(box.maxX, box.minY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.minZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.maxZ).next();
+ bufferBuilder.vertex(box.maxX, box.minY, box.maxZ).next();
+
+ bufferBuilder.vertex(box.minX, box.minY, box.maxZ).next();
+ bufferBuilder.vertex(box.maxX, box.minY, box.maxZ).next();
+ bufferBuilder.vertex(box.maxX, box.maxY, box.maxZ).next();
+ bufferBuilder.vertex(box.minX, box.maxY, box.maxZ).next();
+
+ bufferBuilder.vertex(box.minX, box.minY, box.minZ).next();
+ bufferBuilder.vertex(box.minX, box.minY, box.maxZ).next();
+ bufferBuilder.vertex(box.minX, box.maxY, box.maxZ).next();
+ bufferBuilder.vertex(box.minX, box.maxY, box.minZ).next();
+
+ bufferBuilder.end();
+ vertexBuffer.upload(bufferBuilder);
+ }
+
+ public static void drawOutlinedBox(Box bb, VertexBuffer vertexBuffer) {
+ BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
+ bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES,
+ VertexFormats.POSITION);
+
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.minZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.minZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.minZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.minZ).next();
+
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.minZ).next();
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.minZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.minZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.minZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.minY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.minX, bb.minY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.minZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.minZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.minZ).next();
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.maxX, bb.maxY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.maxZ).next();
+
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.maxZ).next();
+ bufferBuilder.vertex(bb.minX, bb.maxY, bb.minZ).next();
+
+ bufferBuilder.end();
+ vertexBuffer.upload(bufferBuilder);
+ }
+
+ public static void applyRegionalRenderOffset(MatrixStack matrixStack)
+ {
+
+ int regionX = (((int) Camera.getX()) >> 9) << 9;
+ int regionZ = (((int) Camera.getZ()) >> 9) << 9;
+
+ matrixStack.translate(regionX - Camera.getX(), -Camera.getY(),
+ regionZ - Camera.getZ());