2014-12-15 00:11:48 +00:00
|
|
|
package com.cricketcraft.chisel.client.render;
|
2014-04-21 19:13:15 +01:00
|
|
|
|
|
|
|
|
import net.minecraft.block.Block;
|
|
|
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
|
|
|
import net.minecraft.util.IIcon;
|
|
|
|
|
import net.minecraft.world.IBlockAccess;
|
|
|
|
|
|
2015-01-07 19:50:18 -05:00
|
|
|
public class RenderBlocksColumn extends RenderBlocks {
|
|
|
|
|
|
|
|
|
|
TextureSubmap submap;
|
|
|
|
|
IIcon iconTop;
|
|
|
|
|
IIcon sides[] = new IIcon[6];
|
|
|
|
|
|
|
|
|
|
RenderBlocksColumn() {
|
|
|
|
|
super();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean connected(IBlockAccess world, int x, int y, int z, Block block, int meta) {
|
2015-01-31 14:38:50 -05:00
|
|
|
Block inWorld = CTM.getBlockOrFacade(world, x, y, z, -1);
|
|
|
|
|
return inWorld != null && inWorld.equals(block) && CTM.getBlockOrFacadeMetadata(world, x, y, z, -1) == meta;
|
2015-01-07 19:50:18 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean renderStandardBlock(Block block, int x, int y, int z) {
|
|
|
|
|
int metadata = blockAccess.getBlockMetadata(x, y, z);
|
|
|
|
|
|
|
|
|
|
boolean yp = connected(blockAccess, x, y + 1, z, block, metadata);
|
|
|
|
|
boolean yn = connected(blockAccess, x, y - 1, z, block, metadata);
|
|
|
|
|
|
|
|
|
|
if (yp || yn) {
|
|
|
|
|
sides[0] = iconTop;
|
|
|
|
|
sides[1] = iconTop;
|
|
|
|
|
|
|
|
|
|
if (yp && yn)
|
|
|
|
|
sides[2] = submap.icons[2];
|
|
|
|
|
else if (yp)
|
|
|
|
|
sides[2] = submap.icons[3];
|
|
|
|
|
else
|
|
|
|
|
sides[2] = submap.icons[1];
|
|
|
|
|
|
|
|
|
|
sides[3] = sides[4] = sides[5] = sides[2];
|
|
|
|
|
} else {
|
|
|
|
|
boolean xp = connected(blockAccess, x + 1, y, z, block, metadata);
|
|
|
|
|
boolean xn = connected(blockAccess, x - 1, y, z, block, metadata);
|
|
|
|
|
|
|
|
|
|
if (xp && (connected(blockAccess, x + 1, y + 1, z, block, metadata) || connected(blockAccess, x + 1, y - 1, z, block, metadata)))
|
|
|
|
|
xp = false;
|
|
|
|
|
if (xn && (connected(blockAccess, x - 1, y + 1, z, block, metadata) || connected(blockAccess, x - 1, y - 1, z, block, metadata)))
|
|
|
|
|
xn = false;
|
|
|
|
|
|
|
|
|
|
if (xp || xn) {
|
|
|
|
|
uvRotateEast = 2;
|
|
|
|
|
uvRotateWest = 1;
|
|
|
|
|
uvRotateTop = 1;
|
|
|
|
|
uvRotateBottom = 1;
|
|
|
|
|
|
|
|
|
|
sides[4] = iconTop;
|
|
|
|
|
sides[5] = iconTop;
|
|
|
|
|
|
2015-01-24 16:25:24 -05:00
|
|
|
// for some reason along the x axis the bottom texture on the ends is backwards. This flips it around.
|
|
|
|
|
if (xp && xn) {
|
|
|
|
|
sides[1] = submap.icons[2];
|
|
|
|
|
sides[0] = sides[1];
|
|
|
|
|
} else if (xp) {
|
|
|
|
|
sides[1] = submap.icons[3];
|
2015-01-07 19:50:18 -05:00
|
|
|
sides[0] = submap.icons[1];
|
2015-01-24 16:25:24 -05:00
|
|
|
} else {
|
|
|
|
|
sides[1] = submap.icons[1];
|
|
|
|
|
sides[0] = submap.icons[3];
|
|
|
|
|
}
|
|
|
|
|
sides[2] = sides[3] = sides[1];
|
2015-01-07 19:50:18 -05:00
|
|
|
} else {
|
|
|
|
|
boolean zp = connected(blockAccess, x, y, z + 1, block, metadata);
|
|
|
|
|
boolean zn = connected(blockAccess, x, y, z - 1, block, metadata);
|
|
|
|
|
|
|
|
|
|
if (zp && (connected(blockAccess, x, y + 1, z + 1, block, metadata) || connected(blockAccess, x, y - 1, z + 1, block, metadata)))
|
|
|
|
|
zp = false;
|
|
|
|
|
if (zp && (connected(blockAccess, x + 1, y, z + 1, block, metadata) || connected(blockAccess, x - 1, y, z + 1, block, metadata)))
|
|
|
|
|
zp = false;
|
|
|
|
|
if (zn && (connected(blockAccess, x, y + 1, z - 1, block, metadata) || connected(blockAccess, x, y - 1, z - 1, block, metadata)))
|
|
|
|
|
zn = false;
|
|
|
|
|
if (zn && (connected(blockAccess, x + 1, y, z - 1, block, metadata) || connected(blockAccess, x - 1, y, z - 1, block, metadata)))
|
|
|
|
|
zn = false;
|
|
|
|
|
|
|
|
|
|
if (zp || zn) {
|
|
|
|
|
uvRotateSouth = 1;
|
|
|
|
|
uvRotateNorth = 2;
|
|
|
|
|
|
|
|
|
|
sides[2] = iconTop;
|
|
|
|
|
sides[3] = iconTop;
|
|
|
|
|
|
|
|
|
|
if (zp && zn)
|
|
|
|
|
sides[0] = submap.icons[2];
|
|
|
|
|
else if (zp)
|
|
|
|
|
sides[0] = submap.icons[1];
|
|
|
|
|
else
|
|
|
|
|
sides[0] = submap.icons[3];
|
|
|
|
|
|
|
|
|
|
sides[1] = sides[4] = sides[5] = sides[0];
|
|
|
|
|
} else {
|
|
|
|
|
sides[0] = sides[1] = iconTop;
|
|
|
|
|
sides[2] = sides[3] = sides[4] = sides[5] = submap.icons[0];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean flag = super.renderStandardBlock(block, x, y, z);
|
|
|
|
|
|
|
|
|
|
uvRotateSouth = 0;
|
|
|
|
|
uvRotateEast = 0;
|
|
|
|
|
uvRotateWest = 0;
|
|
|
|
|
uvRotateNorth = 0;
|
|
|
|
|
uvRotateTop = 0;
|
|
|
|
|
uvRotateBottom = 0;
|
|
|
|
|
|
|
|
|
|
return flag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceXNeg(block, x, y, z, sides[4]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceXPos(block, x, y, z, sides[5]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceZNeg(block, x, y, z, sides[2]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceZPos(block, x, y, z, sides[3]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceYNeg(block, x, y, z, sides[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) {
|
|
|
|
|
super.renderFaceYPos(block, x, y, z, sides[1]);
|
|
|
|
|
}
|
2014-04-21 19:13:15 +01:00
|
|
|
|
|
|
|
|
}
|