Files
Chisel/src/main/java/com/cricketcraft/chisel/client/render/RenderBlocksEldritch.java
T
tterrag1098 4cfcc874dc The great format and clean up. IMPORTANT: Read below.
All devs and contributors should use the provided formatter settings. 
If your IDE does not support the format, the rules are simple, it is the
default java formatting rules, with 200char line lengths and 1 extra
line after class definitions.
2015-01-07 19:50:18 -05:00

295 lines
8.4 KiB
Java

package com.cricketcraft.chisel.client.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
public class RenderBlocksEldritch extends RenderBlocks {
RenderBlocksEldritch() {
super();
}
static double displacementMap[] = { +0.1165, -0.0352, -0.1208, +0.0906, -0.0295, +0.0302, -0.0973, +0.0548, -0.1077, +0.0662, -0.0932, -0.0925, -0.1161, +0.0073, -0.1084, +0.1136, +0.0307,
+0.0316, -0.1066, -0.0237, +0.0614, -0.0864, +0.0837, +0.1218, +0.0502, -0.0529, -0.0942, +0.1209, -0.0418, +0.1035, +0.0066, -0.0255, +0.0830, -0.0361, +0.0965, +0.0646, +0.1124,
+0.0890, -0.0037, +0.0467, +0.1025, +0.1161, +0.0014, +0.0365, +0.0755, -0.0025, +0.0739, +0.0656, +0.0571, -0.0813, -0.0062, -0.0904, -0.0005, +0.0612, -0.0227, +0.0138, -0.0899,
-0.0019, -0.1047, +0.1191, -0.1197, -0.1123, +0.0999, +0.0638, +0.0865, +0.0029, -0.0084, +0.1132, -0.0433, +0.0115, +0.0850, +0.0439, +0.0748, +0.0460, -0.0441, +0.0839, +0.0162,
-0.0229, +0.0774, -0.0647, -0.0636, -0.0709, -0.0719, -0.0194, +0.1070, -0.0466, -0.1200, -0.0996, -0.0298, -0.1035, -0.0006, +0.0530, -0.0939, -0.1210, +0.0176, +0.0924, +0.0343,
-0.0777, +0.1050, -0.0729, -0.0062, -0.1107, -0.0434, -0.0042, +0.0232, +0.0269, +0.0709, -0.0388, +0.0342, +0.0240, -0.0192, +0.0491, +0.0017, -0.1240, +0.0687, -0.1160, +0.1123,
-0.0332, -0.0260, +0.0476, -0.0049, -0.0893, -0.0243, -0.0371, -0.0230, +0.0656, +0.1080, +0.0781, -0.0648, +0.0082, -0.1086, -0.0451, -0.0594, -0.1155, -0.0623, -0.0152, +0.0131,
-0.0754, +0.0607, +0.0876, -0.0657, +0.0366, -0.0981, +0.1164, -0.0623, +0.0181, -0.0475, +0.0722, -0.0293, +0.0486, -0.0195, +0.1041, +0.1011, +0.0042, -0.0045, -0.1031, +0.0110,
+0.0058, +0.0083, -0.0782, -0.1003, -0.0082, -0.0304, -0.0971, -0.0097, -0.0208, -0.1059, -0.0239, -0.0385, +0.0505, +0.0537, -0.1098, -0.0022, -0.0165, -0.0027, -0.0208, +0.0305,
+0.0592, +0.0301, +0.0055, +0.1138, -0.0338, -0.0901, +0.1015, +0.0061, +0.0861, -0.1057, -0.0889, -0.0972, +0.0783, -0.1052, -0.0932, -0.1103, +0.0497, +0.1222, -0.0146, +0.0632,
-0.0240, -0.0193, +0.0676, -0.1128, -0.0886, +0.0926, +0.0538, -0.0175, -0.0966, -0.0369, +0.1124, -0.0820, -0.1013, -0.0836, -0.0981, -0.0502, +0.0573, +0.0616, -0.0458, +0.0294,
+0.0108, -0.0782, +0.0692, +0.0234, -0.0178, -0.0171, -0.0505, -0.0313, +0.0538, +0.0462, -0.0758, +0.0556, -0.0023, -0.1086, -0.0100, -0.0897, -0.0409, -0.1161, +0.0212, +0.1229,
-0.0945, +0.0341, +0.1238, +0.0893, -0.1189, -0.1098, -0.0125, +0.1137, -0.0202, +0.0239, -0.0408, +0.0920, +0.0777, -0.0085, -0.0572, -0.0293, -0.0131, +0.0272, +0.0991, };
static int dmap1 = displacementMap.length * 1 / 6;
static int dmap2 = displacementMap.length * 2 / 6;
static int dmap3 = displacementMap.length * 3 / 6;
static int dmap4 = displacementMap.length * 4 / 6;
static int dmap5 = displacementMap.length * 5 / 6;
static int dmap = displacementMap.length;
Tessellator tessellator;
double[] X = new double[14];
double[] Y = new double[14];
double[] Z = new double[14];
double[] U = new double[14];
double[] V = new double[14];
int[] L = new int[14];
float[] R = new float[14];
float[] G = new float[14];
float[] B = new float[14];
@Override
public boolean renderStandardBlock(Block block, int x, int y, int z) {
int index = x + y * 34573 + z * 32465781;
if (index < 0)
index = -index;
X[0] = x;
Z[0] = z;
Y[0] = y;
X[1] = x;
Z[1] = z;
Y[1] = y + 1;
X[2] = x + 1;
Z[2] = z;
Y[2] = y + 1;
X[3] = x + 1;
Z[3] = z;
Y[3] = y;
X[4] = x;
Z[4] = z + 1;
Y[4] = y;
X[5] = x;
Z[5] = z + 1;
Y[5] = y + 1;
X[6] = x + 1;
Z[6] = z + 1;
Y[6] = y + 1;
X[7] = x + 1;
Z[7] = z + 1;
Y[7] = y;
X[8] = x + 0.5 + displacementMap[(index + 0) % dmap];
Z[8] = z - displacementMap[(index + 10) % dmap];
Y[8] = y + 0.5 + displacementMap[(index + 20) % dmap];
X[9] = x - displacementMap[(index + 0 + dmap1) % dmap];
Z[9] = z + 0.5 + displacementMap[(index + 10 + dmap1) % dmap];
Y[9] = y + 0.5 + displacementMap[(index + 20 + dmap1) % dmap];
X[10] = x + 0.5 + displacementMap[(index + 0 + dmap2) % dmap];
Z[10] = z + 1 + displacementMap[(index + 10 + dmap2) % dmap];
Y[10] = y + 0.5 + displacementMap[(index + 20 + dmap2) % dmap];
X[11] = x + 1 + displacementMap[(index + 0 + dmap3) % dmap];
Z[11] = z + 0.5 + displacementMap[(index + 10 + dmap3) % dmap];
Y[11] = y + 0.5 + displacementMap[(index + 20 + dmap3) % dmap];
X[12] = x + 0.5 + displacementMap[(index + 0 + dmap4) % dmap];
Z[12] = z + 0.5 + displacementMap[(index + 10 + dmap4) % dmap];
Y[12] = y + 1;// +displacementMap[(index+20+dmap4)%dmap];
X[13] = x + 0.5 + displacementMap[(index + 0 + dmap5) % dmap];
Z[13] = z + 0.5 + displacementMap[(index + 10 + dmap5) % dmap];
Y[13] = y + 0;// +displacementMap[(index+20+dmap5)%dmap];
tessellator = Tessellator.instance;
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
return super.renderStandardBlock(block, x, y, z);
}
void setupSides(IIcon icon, int a, int b, int c, int d, int e, int ta, int tb, int tc, int td) {
L[a] = brightnessBottomLeft;
L[b] = brightnessBottomRight;
L[c] = brightnessTopRight;
L[d] = brightnessTopLeft;
L[e] = (brightnessBottomLeft + brightnessTopLeft + brightnessTopRight + brightnessBottomRight) / 4;
R[a] = colorRedBottomLeft;
R[b] = colorRedBottomRight;
R[c] = colorRedTopRight;
R[d] = colorRedTopLeft;
R[e] = (colorRedBottomLeft + colorRedTopLeft + colorRedTopRight + colorRedBottomRight) / 4;
G[a] = colorGreenBottomLeft;
G[b] = colorGreenBottomRight;
G[c] = colorGreenTopRight;
G[d] = colorGreenTopLeft;
G[e] = (colorGreenBottomLeft + colorGreenTopLeft + colorGreenTopRight + colorGreenBottomRight) / 4;
B[a] = colorBlueBottomLeft;
B[b] = colorBlueBottomRight;
B[c] = colorBlueTopRight;
B[d] = colorBlueTopLeft;
B[e] = (colorBlueBottomLeft + colorBlueTopLeft + colorBlueTopRight + colorBlueBottomRight) / 4;
double u0 = icon.getMaxU();
double u1 = icon.getMinU();
double v0 = icon.getMaxV();
double v1 = icon.getMinV();
U[ta] = u0;
U[tb] = u0;
U[tc] = u1;
U[td] = u1;
U[e] = icon.getInterpolatedU(8.0D);
V[ta] = v0;
V[tb] = v1;
V[tc] = v1;
V[td] = v0;
V[e] = icon.getInterpolatedV(8.0D);
}
void vert(int index) {
if (enableAO) {
tessellator.setColorOpaque_F(R[index], G[index], B[index]);
tessellator.setBrightness(L[index]);
}
tessellator.addVertexWithUV(X[index], Y[index], Z[index], U[index], V[index]);
}
@Override
public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 1, 0, 4, 5, 9, 4, 5, 1, 0);
vert(1);
vert(0);
vert(9);
vert(9);
vert(0);
vert(4);
vert(9);
vert(9);
vert(4);
vert(5);
vert(9);
vert(9);
vert(5);
vert(1);
vert(9);
vert(9);
}
@Override
public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 3, 2, 6, 7, 11, 3, 2, 6, 7);
vert(6);
vert(7);
vert(11);
vert(11);
vert(7);
vert(3);
vert(11);
vert(11);
vert(3);
vert(2);
vert(11);
vert(11);
vert(2);
vert(6);
vert(11);
vert(11);
}
@Override
public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 2, 3, 0, 1, 8, 0, 1, 2, 3);
vert(0);
vert(1);
vert(8);
vert(8);
vert(1);
vert(2);
vert(8);
vert(8);
vert(2);
vert(3);
vert(8);
vert(8);
vert(3);
vert(0);
vert(8);
vert(8);
}
@Override
public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 4, 7, 6, 5, 10, 7, 6, 5, 4);
vert(5);
vert(4);
vert(10);
vert(10);
vert(6);
vert(5);
vert(10);
vert(10);
vert(7);
vert(6);
vert(10);
vert(10);
vert(4);
vert(7);
vert(10);
vert(10);
}
@Override
public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 0, 3, 7, 4, 13, 0, 3, 7, 4);
vert(0);
vert(3);
vert(13);
vert(13);
vert(3);
vert(7);
vert(13);
vert(13);
vert(7);
vert(4);
vert(13);
vert(13);
vert(4);
vert(0);
vert(13);
vert(13);
}
@Override
public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) {
setupSides(icon, 2, 1, 5, 6, 12, 2, 1, 5, 6);
vert(2);
vert(1);
vert(12);
vert(12);
vert(1);
vert(5);
vert(12);
vert(12);
vert(5);
vert(6);
vert(12);
vert(12);
vert(6);
vert(2);
vert(12);
vert(12);
}
}