171 lines
5.8 KiB
Java
171 lines
5.8 KiB
Java
package ley.modding.dartcraft.client.renderer.block;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.renderer.EntityRenderer;
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
public class BlockRenderer {
|
|
protected static float W1 = 0.0625F;
|
|
|
|
protected static float W2 = 0.125F;
|
|
|
|
protected static float W3 = 0.1875F;
|
|
|
|
protected static float W4 = 0.25F;
|
|
|
|
protected static float W5 = 0.3125F;
|
|
|
|
protected static float W6 = 0.375F;
|
|
|
|
protected static float W7 = 0.4375F;
|
|
|
|
protected static float W8 = 0.5F;
|
|
|
|
protected static float W9 = 0.5625F;
|
|
|
|
protected static float W10 = 0.625F;
|
|
|
|
protected static float W11 = 0.6875F;
|
|
|
|
protected static float W12 = 0.75F;
|
|
|
|
protected static float W13 = 0.8125F;
|
|
|
|
protected static float W15 = 0.9375F;
|
|
|
|
public static void
|
|
DrawFaces(RenderBlocks renderblocks, Block block, IIcon i, boolean st) {
|
|
DrawFaces(renderblocks, block, i, i, i, i, i, i, st);
|
|
}
|
|
|
|
public static void DrawFaces(
|
|
RenderBlocks renderblocks,
|
|
Block block,
|
|
IIcon i1,
|
|
IIcon i2,
|
|
IIcon i3,
|
|
IIcon i4,
|
|
IIcon i5,
|
|
IIcon i6,
|
|
boolean solidtop
|
|
) {
|
|
Tessellator tessellator = Tessellator.instance;
|
|
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0F, -1.0F, 0.0F);
|
|
renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, i1);
|
|
tessellator.draw();
|
|
if (solidtop)
|
|
GL11.glDisable(3008);
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
|
renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, i2);
|
|
tessellator.draw();
|
|
if (solidtop)
|
|
GL11.glEnable(3008);
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
|
renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, i3);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(0.0F, 0.0F, -1.0F);
|
|
renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, i4);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
|
renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, i5);
|
|
tessellator.draw();
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
|
|
renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, i6);
|
|
tessellator.draw();
|
|
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
|
}
|
|
|
|
public static int
|
|
setBrightness(IBlockAccess blockAccess, int i, int j, int k, Block block) {
|
|
Tessellator tessellator = Tessellator.instance;
|
|
int mb = block.getMixedBrightnessForBlock(blockAccess, i, j, k);
|
|
tessellator.setBrightness(mb);
|
|
float f = 1.0F;
|
|
int l = block.colorMultiplier(blockAccess, i, j, k);
|
|
float f1 = (l >> 16 & 0xFF) / 255.0F;
|
|
float f2 = (l >> 8 & 0xFF) / 255.0F;
|
|
float f3 = (l & 0xFF) / 255.0F;
|
|
if (EntityRenderer.anaglyphEnable) {
|
|
float f6 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
|
|
float f4 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
|
|
float f7 = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
|
|
f1 = f6;
|
|
f2 = f4;
|
|
f3 = f7;
|
|
}
|
|
tessellator.setColorOpaque_F(f * f1, f * f2, f * f3);
|
|
return mb;
|
|
}
|
|
|
|
protected static void renderAllSides(
|
|
IBlockAccess world,
|
|
int x,
|
|
int y,
|
|
int z,
|
|
Block block,
|
|
RenderBlocks renderer,
|
|
IIcon tex
|
|
) {
|
|
renderAllSides(world, x, y, z, block, renderer, tex, true);
|
|
}
|
|
|
|
public static void renderAllSides(
|
|
IBlockAccess world,
|
|
int x,
|
|
int y,
|
|
int z,
|
|
Block block,
|
|
RenderBlocks renderer,
|
|
IIcon tex,
|
|
boolean allsides
|
|
) {
|
|
if (allsides || block.shouldSideBeRendered(world, x + 1, y, z, 6))
|
|
renderer.renderFaceXPos(block, x, y, z, tex);
|
|
if (allsides || block.shouldSideBeRendered(world, x - 1, y, z, 6))
|
|
renderer.renderFaceXNeg(block, x, y, z, tex);
|
|
if (allsides || block.shouldSideBeRendered(world, x, y, z + 1, 6))
|
|
renderer.renderFaceZPos(block, x, y, z, tex);
|
|
if (allsides || block.shouldSideBeRendered(world, x, y, z - 1, 6))
|
|
renderer.renderFaceZNeg(block, x, y, z, tex);
|
|
if (allsides || block.shouldSideBeRendered(world, x, y + 1, z, 6))
|
|
renderer.renderFaceYPos(block, x, y, z, tex);
|
|
if (allsides || block.shouldSideBeRendered(world, x, y - 1, z, 6))
|
|
renderer.renderFaceYNeg(block, x, y, z, tex);
|
|
}
|
|
|
|
protected static void renderAllSidesInverted(
|
|
IBlockAccess world,
|
|
int x,
|
|
int y,
|
|
int z,
|
|
Block block,
|
|
RenderBlocks renderer,
|
|
IIcon tex,
|
|
boolean allsides
|
|
) {
|
|
if (allsides || !block.shouldSideBeRendered(world, x - 1, y, z, 6))
|
|
renderer.renderFaceXPos(block, (x - 1), y, z, tex);
|
|
if (allsides || !block.shouldSideBeRendered(world, x + 1, y, z, 6))
|
|
renderer.renderFaceXNeg(block, (x + 1), y, z, tex);
|
|
if (allsides || !block.shouldSideBeRendered(world, x, y, z - 1, 6))
|
|
renderer.renderFaceZPos(block, x, y, (z - 1), tex);
|
|
if (allsides || !block.shouldSideBeRendered(world, x, y, z + 1, 6))
|
|
renderer.renderFaceZNeg(block, x, y, (z + 1), tex);
|
|
if (allsides || !block.shouldSideBeRendered(world, x, y - 1, z, 6))
|
|
renderer.renderFaceYPos(block, x, (y - 1), z, tex);
|
|
if (allsides || !block.shouldSideBeRendered(world, x, y + 1, z, 6))
|
|
renderer.renderFaceYNeg(block, x, (y + 1), z, tex);
|
|
}
|
|
}
|