Merge branch 'development' of https://github.com/aidancbrady/Mekanism into development

This commit is contained in:
Aidan C. Brady 2015-03-18 07:48:59 -04:00
commit 1b813b4142
20 changed files with 134 additions and 129 deletions

View file

@ -81,14 +81,14 @@ public class CTM
{}, {},
}; };
public static int[] getSubmapIndices(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas) public static int[] getSubmapIndices(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas, boolean convexConnections)
{ {
int index = getTexture(world, x, y, z, side, blockMetas); int index = getTexture(world, x, y, z, side, blockMetas, convexConnections);
return submaps[index]; return submaps[index];
} }
public static int getTexture(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas) public static int getTexture(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas, boolean convexConnections)
{ {
if(world == null) if(world == null)
{ {
@ -101,97 +101,79 @@ public class CTM
if(side <= 1) if(side <= 1)
{ {
b[0] = isConnected(world, x - 1, y, z, side, blockMetas); b[0] = isConnected(world, x - 1, y, z, side, blockMetas, convexConnections);
b[1] = isConnected(world, x + 1, y, z, side, blockMetas); b[1] = isConnected(world, x + 1, y, z, side, blockMetas, convexConnections);
b[2] = isConnected(world, x, y, z + 1, side, blockMetas); b[2] = isConnected(world, x, y, z + 1, side, blockMetas, convexConnections);
b[3] = isConnected(world, x, y, z - 1, side, blockMetas); b[3] = isConnected(world, x, y, z - 1, side, blockMetas, convexConnections);
} } else if(side == 2)
else if(side == 2)
{ {
b[0] = isConnected(world, x + 1, y, z, side, blockMetas); b[0] = isConnected(world, x + 1, y, z, side, blockMetas, convexConnections);
b[1] = isConnected(world, x - 1, y, z, side, blockMetas); b[1] = isConnected(world, x - 1, y, z, side, blockMetas, convexConnections);
b[2] = isConnected(world, x, y - 1, z, side, blockMetas); b[2] = isConnected(world, x, y - 1, z, side, blockMetas, convexConnections);
b[3] = isConnected(world, x, y + 1, z, side, blockMetas); b[3] = isConnected(world, x, y + 1, z, side, blockMetas, convexConnections);
} } else if(side == 3)
else if(side == 3)
{ {
b[0] = isConnected(world, x - 1, y, z, side, blockMetas); b[0] = isConnected(world, x - 1, y, z, side, blockMetas, convexConnections);
b[1] = isConnected(world, x + 1, y, z, side, blockMetas); b[1] = isConnected(world, x + 1, y, z, side, blockMetas, convexConnections);
b[2] = isConnected(world, x, y - 1, z, side, blockMetas); b[2] = isConnected(world, x, y - 1, z, side, blockMetas, convexConnections);
b[3] = isConnected(world, x, y + 1, z, side, blockMetas); b[3] = isConnected(world, x, y + 1, z, side, blockMetas, convexConnections);
} } else if(side == 4)
else if(side == 4)
{ {
b[0] = isConnected(world, x, y, z - 1, side, blockMetas); b[0] = isConnected(world, x, y, z - 1, side, blockMetas, convexConnections);
b[1] = isConnected(world, x, y, z + 1, side, blockMetas); b[1] = isConnected(world, x, y, z + 1, side, blockMetas, convexConnections);
b[2] = isConnected(world, x, y - 1, z, side, blockMetas); b[2] = isConnected(world, x, y - 1, z, side, blockMetas, convexConnections);
b[3] = isConnected(world, x, y + 1, z, side, blockMetas); b[3] = isConnected(world, x, y + 1, z, side, blockMetas, convexConnections);
} } else if(side == 5)
else if(side == 5)
{ {
b[0] = isConnected(world, x, y, z + 1, side, blockMetas); b[0] = isConnected(world, x, y, z + 1, side, blockMetas, convexConnections);
b[1] = isConnected(world, x, y, z - 1, side, blockMetas); b[1] = isConnected(world, x, y, z - 1, side, blockMetas, convexConnections);
b[2] = isConnected(world, x, y - 1, z, side, blockMetas); b[2] = isConnected(world, x, y - 1, z, side, blockMetas, convexConnections);
b[3] = isConnected(world, x, y + 1, z, side, blockMetas); b[3] = isConnected(world, x, y + 1, z, side, blockMetas, convexConnections);
} }
if(b[0] & !b[1] & !b[2] & !b[3]) if(b[0] & !b[1] & !b[2] & !b[3])
{ {
texture = 3; texture = 3;
} } else if(!b[0] & b[1] & !b[2] & !b[3])
else if(!b[0] & b[1] & !b[2] & !b[3])
{ {
texture = 1; texture = 1;
} } else if(!b[0] & !b[1] & b[2] & !b[3])
else if(!b[0] & !b[1] & b[2] & !b[3])
{ {
texture = 16; texture = 16;
} } else if(!b[0] & !b[1] & !b[2] & b[3])
else if(!b[0] & !b[1] & !b[2] & b[3])
{ {
texture = 48; texture = 48;
} } else if(b[0] & b[1] & !b[2] & !b[3])
else if(b[0] & b[1] & !b[2] & !b[3])
{ {
texture = 2; texture = 2;
} } else if(!b[0] & !b[1] & b[2] & b[3])
else if(!b[0] & !b[1] & b[2] & b[3])
{ {
texture = 32; texture = 32;
} } else if(b[0] & !b[1] & b[2] & !b[3])
else if(b[0] & !b[1] & b[2] & !b[3])
{ {
texture = 19; texture = 19;
} } else if(b[0] & !b[1] & !b[2] & b[3])
else if(b[0] & !b[1] & !b[2] & b[3])
{ {
texture = 51; texture = 51;
} } else if(!b[0] & b[1] & b[2] & !b[3])
else if(!b[0] & b[1] & b[2] & !b[3])
{ {
texture = 17; texture = 17;
} } else if(!b[0] & b[1] & !b[2] & b[3])
else if(!b[0] & b[1] & !b[2] & b[3])
{ {
texture = 49; texture = 49;
} } else if(!b[0] & b[1] & b[2] & b[3])
else if(!b[0] & b[1] & b[2] & b[3])
{ {
texture = 33; texture = 33;
} } else if(b[0] & !b[1] & b[2] & b[3])
else if(b[0] & !b[1] & b[2] & b[3])
{ {
texture = 35; texture = 35;
} } else if(b[0] & b[1] & !b[2] & b[3])
else if(b[0] & b[1] & !b[2] & b[3])
{ {
texture = 50; texture = 50;
} } else if(b[0] & b[1] & b[2] & !b[3])
else if(b[0] & b[1] & b[2] & !b[3])
{ {
texture = 18; texture = 18;
} } else if(b[0] & b[1] & b[2] & b[3])
else if(b[0] & b[1] & b[2] & b[3])
{ {
texture = 34; texture = 34;
} }
@ -200,38 +182,34 @@ public class CTM
if(side <= 1) if(side <= 1)
{ {
b2[0] = !isConnected(world, x + 1, y, z + 1, side, blockMetas); b2[0] = !isConnected(world, x + 1, y, z + 1, side, blockMetas, convexConnections);
b2[1] = !isConnected(world, x - 1, y, z + 1, side, blockMetas); b2[1] = !isConnected(world, x - 1, y, z + 1, side, blockMetas, convexConnections);
b2[2] = !isConnected(world, x + 1, y, z - 1, side, blockMetas); b2[2] = !isConnected(world, x + 1, y, z - 1, side, blockMetas, convexConnections);
b2[3] = !isConnected(world, x - 1, y, z - 1, side, blockMetas); b2[3] = !isConnected(world, x - 1, y, z - 1, side, blockMetas, convexConnections);
} } else if(side == 2)
else if(side == 2)
{ {
b2[0] = !isConnected(world, x - 1, y - 1, z, side, blockMetas); b2[0] = !isConnected(world, x - 1, y - 1, z, side, blockMetas, convexConnections);
b2[1] = !isConnected(world, x + 1, y - 1, z, side, blockMetas); b2[1] = !isConnected(world, x + 1, y - 1, z, side, blockMetas, convexConnections);
b2[2] = !isConnected(world, x - 1, y + 1, z, side, blockMetas); b2[2] = !isConnected(world, x - 1, y + 1, z, side, blockMetas, convexConnections);
b2[3] = !isConnected(world, x + 1, y + 1, z, side, blockMetas); b2[3] = !isConnected(world, x + 1, y + 1, z, side, blockMetas, convexConnections);
} } else if(side == 3)
else if(side == 3)
{ {
b2[0] = !isConnected(world, x + 1, y - 1, z, side, blockMetas); b2[0] = !isConnected(world, x + 1, y - 1, z, side, blockMetas, convexConnections);
b2[1] = !isConnected(world, x - 1, y - 1, z, side, blockMetas); b2[1] = !isConnected(world, x - 1, y - 1, z, side, blockMetas, convexConnections);
b2[2] = !isConnected(world, x + 1, y + 1, z, side, blockMetas); b2[2] = !isConnected(world, x + 1, y + 1, z, side, blockMetas, convexConnections);
b2[3] = !isConnected(world, x - 1, y + 1, z, side, blockMetas); b2[3] = !isConnected(world, x - 1, y + 1, z, side, blockMetas, convexConnections);
} } else if(side == 4)
else if(side == 4)
{ {
b2[0] = !isConnected(world, x, y - 1, z + 1, side, blockMetas); b2[0] = !isConnected(world, x, y - 1, z + 1, side, blockMetas, convexConnections);
b2[1] = !isConnected(world, x, y - 1, z - 1, side, blockMetas); b2[1] = !isConnected(world, x, y - 1, z - 1, side, blockMetas, convexConnections);
b2[2] = !isConnected(world, x, y + 1, z + 1, side, blockMetas); b2[2] = !isConnected(world, x, y + 1, z + 1, side, blockMetas, convexConnections);
b2[3] = !isConnected(world, x, y + 1, z - 1, side, blockMetas); b2[3] = !isConnected(world, x, y + 1, z - 1, side, blockMetas, convexConnections);
} } else if(side == 5)
else if(side == 5)
{ {
b2[0] = !isConnected(world, x, y - 1, z - 1, side, blockMetas); b2[0] = !isConnected(world, x, y - 1, z - 1, side, blockMetas, convexConnections);
b2[1] = !isConnected(world, x, y - 1, z + 1, side, blockMetas); b2[1] = !isConnected(world, x, y - 1, z + 1, side, blockMetas, convexConnections);
b2[2] = !isConnected(world, x, y + 1, z - 1, side, blockMetas); b2[2] = !isConnected(world, x, y + 1, z - 1, side, blockMetas, convexConnections);
b2[3] = !isConnected(world, x, y + 1, z + 1, side, blockMetas); b2[3] = !isConnected(world, x, y + 1, z + 1, side, blockMetas, convexConnections);
} }
if(texture == 17 && b2[0]) if(texture == 17 && b2[0])
@ -391,7 +369,7 @@ public class CTM
return texture; return texture;
} }
public static boolean isConnected(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas) public static boolean isConnected(IBlockAccess world, int x, int y, int z, int side, HashMap<Block, List<Integer>> blockMetas, boolean convexConnections)
{ {
int x2 = x, y2 = y, z2 = z; int x2 = x, y2 = y, z2 = z;
@ -430,7 +408,7 @@ public class CTM
{ {
validBlockMeta1 |= block1.equals(entry.getKey()) && entry.getValue().contains(meta1); validBlockMeta1 |= block1.equals(entry.getKey()) && entry.getValue().contains(meta1);
invalidBlockMeta2 &= !(block2.equals(entry.getKey()) && entry.getValue().contains(meta2)); invalidBlockMeta2 &= convexConnections || !(block2.equals(entry.getKey()) && entry.getValue().contains(meta2));
} }
return validBlockMeta1 && invalidBlockMeta2; return validBlockMeta1 && invalidBlockMeta2;

View file

@ -149,7 +149,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(0.0, 1.0, 1.0, i.getMaxU(), i.getMinV()); tessellator.addVertexWithUV(0.0, 1.0, 1.0, i.getMaxU(), i.getMinV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 4, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 4, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(1, 0, 4, 5, 14, 19, 17, 23, 9); setupSides(1, 0, 4, 5, 14, 19, 17, 23, 9);
side(1, 14, 9, 23, tex[0], false, 4); side(1, 14, 9, 23, tex[0], false, 4);
@ -172,7 +172,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(1.0, 1.0, 0.0, i.getMinU(), i.getMinV()); tessellator.addVertexWithUV(1.0, 1.0, 0.0, i.getMinU(), i.getMinV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 5, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 5, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(3, 2, 6, 7, 15, 25, 16, 21, 11); setupSides(3, 2, 6, 7, 15, 25, 16, 21, 11);
side(11, 21, 3, 15, tex[3], false, 5); side(11, 21, 3, 15, tex[3], false, 5);
@ -195,7 +195,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(0.0, 1.0, 0.0, i.getMinU(), i.getMinV()); tessellator.addVertexWithUV(0.0, 1.0, 0.0, i.getMinU(), i.getMinV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 2, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 2, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(2, 3, 0, 1, 15, 18, 14, 22, 8); setupSides(2, 3, 0, 1, 15, 18, 14, 22, 8);
side(2, 15, 8, 22, tex[0], false, 2); side(2, 15, 8, 22, tex[0], false, 2);
@ -219,7 +219,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(1.0, 1.0, 1.0, i.getMaxU(), i.getMinV()); tessellator.addVertexWithUV(1.0, 1.0, 1.0, i.getMaxU(), i.getMinV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 3, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 3, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(4, 7, 6, 5, 20, 16, 24, 17, 10); setupSides(4, 7, 6, 5, 20, 16, 24, 17, 10);
side(17, 4, 20, 10, tex[2], false, 3); side(17, 4, 20, 10, tex[2], false, 3);
@ -242,7 +242,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(1.0, 0.0, 1.0, i.getMaxU(), i.getMaxV()); tessellator.addVertexWithUV(1.0, 0.0, 1.0, i.getMaxU(), i.getMaxV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 0, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 0, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(0, 3, 7, 4, 18, 21, 20, 19, 13); setupSides(0, 3, 7, 4, 18, 21, 20, 19, 13);
side(13, 21, 7, 20, tex[3], true, 0); side(13, 21, 7, 20, tex[3], true, 0);
@ -265,7 +265,7 @@ public class RenderBlocksCTM extends RenderBlocks
tessellator.addVertexWithUV(1.0, 1.0, 0.0, i.getMaxU(), i.getMinV()); tessellator.addVertexWithUV(1.0, 1.0, 0.0, i.getMaxU(), i.getMinV());
} }
else { else {
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 1, dataCTM.acceptableBlockMetas); int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 1, dataCTM.acceptableBlockMetas, dataCTM.renderConvexConnections);
setupSides(2, 1, 5, 6, 22, 23, 24, 25, 12); setupSides(2, 1, 5, 6, 22, 23, 24, 25, 12);
side(12, 24, 6, 25, tex[3], false, 1); side(12, 24, 6, 25, tex[3], false, 1);

View file

@ -27,6 +27,8 @@ public class CTMData
public int facing; public int facing;
public boolean renderConvexConnections = false;
public CTMData(String textureName, Block block, List<Integer> connectableMeta) public CTMData(String textureName, Block block, List<Integer> connectableMeta)
{ {
mainTextureData = new CTMTextureData(textureName); mainTextureData = new CTMTextureData(textureName);
@ -113,6 +115,12 @@ public class CTMData
return this; return this;
} }
public CTMData setRenderConvexConnections()
{
renderConvexConnections = true;
return this;
}
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public boolean shouldRenderSide(IBlockAccess world, int x, int y, int z, int side) public boolean shouldRenderSide(IBlockAccess world, int x, int y, int z, int side)
{ {

View file

@ -91,7 +91,7 @@ public class BlockBasic extends Block implements IBlockCTM, ICustomBlockIcon
{ {
public IIcon[][] icons = new IIcon[16][6]; public IIcon[][] icons = new IIcon[16][6];
public CTMData[][] ctms = new CTMData[16][2]; public CTMData[][] ctms = new CTMData[16][4];
public BasicBlock blockType; public BasicBlock blockType;
@ -181,20 +181,28 @@ public class BlockBasic extends Block implements IBlockCTM, ICustomBlockIcon
ctms[1][0] = new CTMData("ctm/InductionCasing", this, Arrays.asList(1, 2)).registerIcons(register); ctms[1][0] = new CTMData("ctm/InductionCasing", this, Arrays.asList(1, 2)).registerIcons(register);
ctms[2][0] = new CTMData("ctm/InductionPortInput", this, Arrays.asList(1, 2)).registerIcons(register); ctms[2][0] = new CTMData("ctm/InductionPortInput", this, Arrays.asList(1, 2)).registerIcons(register);
ctms[2][1] = new CTMData("ctm/InductionPortOutput", this, Arrays.asList(1, 2)).registerIcons(register); ctms[2][1] = new CTMData("ctm/InductionPortOutput", this, Arrays.asList(1, 2)).registerIcons(register);
ctms[3][0] = new CTMData("ctm/InductionCellBasic", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[3][1] = new CTMData("ctm/InductionCellAdvanced", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[3][2] = new CTMData("ctm/InductionCellElite", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[3][3] = new CTMData("ctm/InductionCellUltimate", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[4][0] = new CTMData("ctm/InductionProviderBasic", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[4][1] = new CTMData("ctm/InductionProviderAdvanced", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[4][2] = new CTMData("ctm/InductionProviderElite", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
ctms[4][3] = new CTMData("ctm/InductionProviderUltimate", this, Arrays.asList(3, 4)).registerIcons(register).setRenderConvexConnections();
//TODO @unpairedbracket, mind fixing this? //TODO @unpairedbracket, mind fixing this?
icons[0][0] = ctms[0][0].mainTextureData.icon; icons[0][0] = ctms[0][0].mainTextureData.icon;
icons[1][0] = ctms[1][0].mainTextureData.icon; icons[1][0] = ctms[1][0].mainTextureData.icon;
icons[2][0] = ctms[2][0].mainTextureData.icon; icons[2][0] = ctms[2][0].mainTextureData.icon;
icons[2][1] = ctms[2][1].mainTextureData.icon; icons[2][1] = ctms[2][1].mainTextureData.icon;
icons[3][0] = register.registerIcon("mekanism:InductionCellBasic"); icons[3][0] = ctms[3][0].mainTextureData.icon;
icons[3][1] = register.registerIcon("mekanism:InductionCellAdvanced"); icons[3][1] = ctms[3][1].mainTextureData.icon;
icons[3][2] = register.registerIcon("mekanism:InductionCellElite"); icons[3][2] = ctms[3][2].mainTextureData.icon;
icons[3][3] = register.registerIcon("mekanism:InductionCellUltimate"); icons[3][3] = ctms[3][3].mainTextureData.icon;
icons[4][0] = register.registerIcon("mekanism:InductionProviderBasic"); icons[4][0] = ctms[4][0].mainTextureData.icon;
icons[4][1] = register.registerIcon("mekanism:InductionProviderAdvanced"); icons[4][1] = ctms[4][1].mainTextureData.icon;
icons[4][2] = register.registerIcon("mekanism:InductionProviderElite"); icons[4][2] = ctms[4][2].mainTextureData.icon;
icons[4][3] = register.registerIcon("mekanism:InductionProviderUltimate"); icons[4][3] = ctms[4][3].mainTextureData.icon;
break; break;
} }
} }
@ -1049,6 +1057,17 @@ public class BlockBasic extends Block implements IBlockCTM, ICustomBlockIcon
return ctms[meta][1]; return ctms[meta][1];
} }
if(meta == 3)
{
TileEntityInductionCell tileEntity = (TileEntityInductionCell)world.getTileEntity(x, y, z);
return ctms[meta][tileEntity.tier.ordinal()];
}
if(meta == 4)
{
TileEntityInductionProvider tileEntity = (TileEntityInductionProvider)world.getTileEntity(x, y, z);
return ctms[meta][tileEntity.tier.ordinal()];
}
return ctms[meta][0]; return ctms[meta][0];
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 903 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B