package com.prupe.mcpatcher.ctm;
import com.prupe.mcpatcher.Config;
import com.prupe.mcpatcher.TessellatorUtils;
import java.util.Arrays;
import net.minecraft.src.Block;
import net.minecraft.src.Icon;
import net.minecraft.src.RenderBlocks;
import net.minecraft.src.Tessellator;
//Spout Start
import org.spoutcraft.client.config.Configuration;
//Spout End
public class GlassPaneRenderer {
private static final boolean enable = Config.getBoolean("Connected Textures", "glassPane", true);
public static boolean active;
private static final Icon[] icons = new Icon[6];
private static Tessellator tessellator;
private static double u0;
private static double uM;
private static double u1;
private static double v0;
private static double v1;
public static void render(RenderBlocks renderBlocks, Block blockPane, Icon origIcon, int i, int j, int k, boolean connectNorth, boolean connectSouth, boolean connectWest, boolean connectEast) {
if (!Configuration.isConnectedTextures()) {
active = false;
} else {
active = true;
for (int i0 = 2; i0 <= 5; ++i0) {
icons[i0] = CTMUtils.getTile(renderBlocks, blockPane, i, j, k, i0, origIcon, Tessellator.instance);
if (icons[i0] == null) {
active = RenderPassAPI.instance.skipDefaultRendering(blockPane);
return;
}
}
double var27 = (double)i;
double iM = var27 + 0.5D;
double i1 = var27 + 1.0D;
double j0 = (double)j;
double j1 = j0 + 1.0D;
double k0 = (double)k;
double kM = k0 + 0.5D;
double k1 = k0 + 1.0D;
boolean connectAny = connectWest || connectEast || connectNorth || connectSouth;
if ((!connectEast || !connectWest) && connectAny) {
if (connectWest && !connectEast) {
setupTileCoords(3);
tessellator.addVertexWithUV(var27, j1, kM, uM, v0);
tessellator.addVertexWithUV(var27, j0, kM, uM, v1);
tessellator.addVertexWithUV(iM, j0, kM, u1, v1);
tessellator.addVertexWithUV(iM, j1, kM, u1, v0);
setupTileCoords(2);
tessellator.addVertexWithUV(iM, j1, kM, u0, v0);
tessellator.addVertexWithUV(iM, j0, kM, u0, v1);
tessellator.addVertexWithUV(var27, j0, kM, uM, v1);
tessellator.addVertexWithUV(var27, j1, kM, uM, v0);
} else if (!connectWest && connectEast) {
setupTileCoords(3);
tessellator.addVertexWithUV(iM, j1, kM, u0, v0);
tessellator.addVertexWithUV(iM, j0, kM, u0, v1);
tessellator.addVertexWithUV(i1, j0, kM, uM, v1);
tessellator.addVertexWithUV(i1, j1, kM, uM, v0);
setupTileCoords(2);
tessellator.addVertexWithUV(i1, j1, kM, uM, v0);
tessellator.addVertexWithUV(i1, j0, kM, uM, v1);
tessellator.addVertexWithUV(iM, j0, kM, u1, v1);
tessellator.addVertexWithUV(iM, j1, kM, u1, v0);
}
} else {
setupTileCoords(3);
tessellator.addVertexWithUV(var27, j1, kM, u0, v0);
tessellator.addVertexWithUV(var27, j0, kM, u0, v1);
tessellator.addVertexWithUV(i1, j0, kM, u1, v1);
tessellator.addVertexWithUV(i1, j1, kM, u1, v0);
setupTileCoords(2);
tessellator.addVertexWithUV(i1, j1, kM, u0, v0);
tessellator.addVertexWithUV(i1, j0, kM, u0, v1);
tessellator.addVertexWithUV(var27, j0, kM, u1, v1);
tessellator.addVertexWithUV(var27, j1, kM, u1, v0);
}
if ((!connectNorth || !connectSouth) && connectAny) {
if (connectNorth && !connectSouth) {
setupTileCoords(4);
tessellator.addVertexWithUV(iM, j1, k0, uM, v0);
tessellator.addVertexWithUV(iM, j0, k0, uM, v1);
tessellator.addVertexWithUV(iM, j0, kM, u1, v1);
tessellator.addVertexWithUV(iM, j1, kM, u1, v0);
setupTileCoords(5);
tessellator.addVertexWithUV(iM, j1, kM, u0, v0);
tessellator.addVertexWithUV(iM, j0, kM, u0, v1);
tessellator.addVertexWithUV(iM, j0, k0, uM, v1);
tessellator.addVertexWithUV(iM, j1, k0, uM, v0);
} else if (!connectNorth && connectSouth) {
setupTileCoords(4);
tessellator.addVertexWithUV(iM, j1, kM, u0, v0);
tessellator.addVertexWithUV(iM, j0, kM, u0, v1);
tessellator.addVertexWithUV(iM, j0, k1, uM, v1);
tessellator.addVertexWithUV(iM, j1, k1, uM, v0);
setupTileCoords(5);
tessellator.addVertexWithUV(iM, j1, k1, uM, v0);
tessellator.addVertexWithUV(iM, j0, k1, uM, v1);
tessellator.addVertexWithUV(iM, j0, kM, u1, v1);
tessellator.addVertexWithUV(iM, j1, kM, u1, v0);
}
} else {
setupTileCoords(4);
tessellator.addVertexWithUV(iM, j1, k0, u0, v0);
tessellator.addVertexWithUV(iM, j0, k0, u0, v1);
tessellator.addVertexWithUV(iM, j0, k1, u1, v1);
tessellator.addVertexWithUV(iM, j1, k1, u1, v0);
setupTileCoords(5);
tessellator.addVertexWithUV(iM, j1, k1, u0, v0);
tessellator.addVertexWithUV(iM, j0, k1, u0, v1);
tessellator.addVertexWithUV(iM, j0, k0, u1, v1);
tessellator.addVertexWithUV(iM, j1, k0, u1, v0);
}
Arrays.fill(icons, (Object)null);
tessellator = null;
}
}
private static void setupTileCoords(int face) {
Icon icon = icons[face];
tessellator = TessellatorUtils.getTessellator(Tessellator.instance, icons[face]);
u0 = (double)icon.getMinU();
uM = (double)icon.getInterpolatedU(8.0D);
u1 = (double)icon.getMaxU();
v0 = (double)icon.getMinV();
v1 = (double)icon.getMaxV();
}
}