Dartcraft/src/main/java/ley/modding/dartcraft/client/renderer/block/BlockRenderer.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);
}
}