Files
TinkersConstruct/src/main/java/tconstruct/blocks/GlassPaneConnected.java
T

697 lines
22 KiB
Java
Raw Normal View History

package tconstruct.blocks;
2013-10-01 19:44:04 -07:00
import tconstruct.util.config.PHConstruct;
2013-09-17 20:00:54 +10:00
import java.util.List;
import tconstruct.client.block.PaneConnectedRender;
import net.minecraft.block.Block;
2013-12-31 11:26:08 -05:00
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
2014-01-01 09:30:55 -05:00
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
2013-12-31 11:26:08 -05:00
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
2013-12-31 11:26:08 -05:00
import net.minecraftforge.common.util.ForgeDirection;
2013-11-10 13:57:35 -08:00
public class GlassPaneConnected extends GlassBlockConnected
{
2013-12-31 11:26:08 -05:00
private IIcon theIcon;
2013-11-10 13:57:35 -08:00
2014-01-11 05:29:27 -05:00
public GlassPaneConnected(String location, boolean hasAlpha)
2013-11-10 13:57:35 -08:00
{
2014-01-11 05:29:27 -05:00
super(location, hasAlpha);
2013-11-10 13:57:35 -08:00
}
@Override
public int getRenderType ()
{
return PaneConnectedRender.model;
// return 0;
}
@Override
2014-01-01 08:54:06 -05:00
public IIcon getBlockTexture (IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
2013-11-10 13:57:35 -08:00
{
if (par5 == 0 || par5 == 1)
{
2014-01-11 05:29:27 -05:00
return par1IBlockAccess.func_147439_a(par2, par3 - 1, par4) == this && par5 == 0 ? icons[15]
: par1IBlockAccess.func_147439_a(par2, par3 + 1, par4) == this && par5 == 1 ? icons[15] : getSideTextureIndex();
2013-11-10 13:57:35 -08:00
}
else
{
return super.getBlockTexture(par1IBlockAccess, par2, par3, par4, par5);
}
}
@Override
2014-01-01 08:54:06 -05:00
public IIcon getConnectedBlockTexture (IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5, IIcon[] icons)
2013-11-10 13:57:35 -08:00
{
if (par5 == 0 || par5 == 1)
{
return getSideTextureIndex();
}
if (PHConstruct.connectedTexturesMode == 0)
{
return icons[0];
}
boolean isOpenUp = false, isOpenDown = false, isOpenLeft = false, isOpenRight = false;
switch (par5)
{
case 0:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 - 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 + 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 - 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 + 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[11];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[12];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[13];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[14];
}
else if (isOpenDown && isOpenUp)
{
return icons[5];
}
else if (isOpenLeft && isOpenRight)
{
return icons[6];
}
else if (isOpenDown && isOpenLeft)
{
return icons[8];
}
else if (isOpenDown && isOpenRight)
{
return icons[10];
}
else if (isOpenUp && isOpenLeft)
{
return icons[7];
}
else if (isOpenUp && isOpenRight)
{
return icons[9];
}
else if (isOpenDown)
{
return icons[3];
}
else if (isOpenUp)
{
return icons[4];
}
else if (isOpenLeft)
{
return icons[2];
}
else if (isOpenRight)
{
return icons[1];
}
break;
case 1:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 - 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 + 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 - 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 + 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[11];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[12];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[13];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[14];
}
else if (isOpenDown && isOpenUp)
{
return icons[5];
}
else if (isOpenLeft && isOpenRight)
{
return icons[6];
}
else if (isOpenDown && isOpenLeft)
{
return icons[8];
}
else if (isOpenDown && isOpenRight)
{
return icons[10];
}
else if (isOpenUp && isOpenLeft)
{
return icons[7];
}
else if (isOpenUp && isOpenRight)
{
return icons[9];
}
else if (isOpenDown)
{
return icons[3];
}
else if (isOpenUp)
{
return icons[4];
}
else if (isOpenLeft)
{
return icons[2];
}
else if (isOpenRight)
{
return icons[1];
}
break;
case 2:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 - 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 + 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 - 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 + 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[13];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[14];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[11];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[12];
}
else if (isOpenDown && isOpenUp)
{
return icons[6];
}
else if (isOpenLeft && isOpenRight)
{
return icons[5];
}
else if (isOpenDown && isOpenLeft)
{
return icons[9];
}
else if (isOpenDown && isOpenRight)
{
return icons[10];
}
else if (isOpenUp && isOpenLeft)
{
return icons[7];
}
else if (isOpenUp && isOpenRight)
{
return icons[8];
}
else if (isOpenDown)
{
return icons[1];
}
else if (isOpenUp)
{
return icons[2];
}
else if (isOpenLeft)
{
return icons[4];
}
else if (isOpenRight)
{
return icons[3];
}
break;
case 3:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 - 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 + 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 - 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 - 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2 + 1, par3, par4), par1IBlockAccess.getBlockMetadata(par2 + 1, par3, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[14];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[13];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[11];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[12];
}
else if (isOpenDown && isOpenUp)
{
return icons[6];
}
else if (isOpenLeft && isOpenRight)
{
return icons[5];
}
else if (isOpenDown && isOpenLeft)
{
return icons[10];
}
else if (isOpenDown && isOpenRight)
{
return icons[9];
}
else if (isOpenUp && isOpenLeft)
{
return icons[8];
}
else if (isOpenUp && isOpenRight)
{
return icons[7];
}
else if (isOpenDown)
{
return icons[1];
}
else if (isOpenUp)
{
return icons[2];
}
else if (isOpenLeft)
{
return icons[3];
}
else if (isOpenRight)
{
return icons[4];
}
break;
case 4:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 - 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 + 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 - 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 + 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[14];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[13];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[11];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[12];
}
else if (isOpenDown && isOpenUp)
{
return icons[6];
}
else if (isOpenLeft && isOpenRight)
{
return icons[5];
}
else if (isOpenDown && isOpenLeft)
{
return icons[10];
}
else if (isOpenDown && isOpenRight)
{
return icons[9];
}
else if (isOpenUp && isOpenLeft)
{
return icons[8];
}
else if (isOpenUp && isOpenRight)
{
return icons[7];
}
else if (isOpenDown)
{
return icons[1];
}
else if (isOpenUp)
{
return icons[2];
}
else if (isOpenLeft)
{
return icons[3];
}
else if (isOpenRight)
{
return icons[4];
}
break;
case 5:
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 - 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 - 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenDown = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3 + 1, par4), par1IBlockAccess.getBlockMetadata(par2, par3 + 1, par4)))
2013-11-10 13:57:35 -08:00
{
isOpenUp = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 - 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 - 1)))
2013-11-10 13:57:35 -08:00
{
isOpenLeft = true;
}
2014-01-11 05:29:27 -05:00
if (shouldConnectToBlock(par1IBlockAccess, par2, par3, par4, par1IBlockAccess.func_147439_a(par2, par3, par4 + 1), par1IBlockAccess.getBlockMetadata(par2, par3, par4 + 1)))
2013-11-10 13:57:35 -08:00
{
isOpenRight = true;
}
if (isOpenUp && isOpenDown && isOpenLeft && isOpenRight)
{
return icons[15];
}
else if (isOpenUp && isOpenDown && isOpenLeft)
{
return icons[13];
}
else if (isOpenUp && isOpenDown && isOpenRight)
{
return icons[14];
}
else if (isOpenUp && isOpenLeft && isOpenRight)
{
return icons[11];
}
else if (isOpenDown && isOpenLeft && isOpenRight)
{
return icons[12];
}
else if (isOpenDown && isOpenUp)
{
return icons[6];
}
else if (isOpenLeft && isOpenRight)
{
return icons[5];
}
else if (isOpenDown && isOpenLeft)
{
return icons[9];
}
else if (isOpenDown && isOpenRight)
{
return icons[10];
}
else if (isOpenUp && isOpenLeft)
{
return icons[7];
}
else if (isOpenUp && isOpenRight)
{
return icons[8];
}
else if (isOpenDown)
{
return icons[1];
}
else if (isOpenUp)
{
return icons[2];
}
else if (isOpenLeft)
{
return icons[4];
}
else if (isOpenRight)
{
return icons[3];
}
break;
}
return icons[0];
}
@Override
public void addCollisionBoxesToList (World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity)
{
boolean flag = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.NORTH);
boolean flag1 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.SOUTH);
boolean flag2 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.WEST);
boolean flag3 = this.canPaneConnectTo(par1World, par2, par3, par4, ForgeDirection.EAST);
if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1))
{
if (flag2 && !flag3)
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.0F, 0.0F, 0.4375F, 0.5F, 1.0F, 0.5625F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
else if (!flag2 && flag3)
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.5F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
}
else
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1))
{
if (flag && !flag1)
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 0.5F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
else if (!flag && flag1)
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.4375F, 0.0F, 0.5F, 0.5625F, 1.0F, 1.0F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
}
else
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F);
2013-11-10 13:57:35 -08:00
super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
}
}
@Override
public void setBlockBoundsForItemRender ()
{
2014-01-16 01:36:18 -05:00
this.func_149676_a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
2013-11-10 13:57:35 -08:00
}
@Override
2014-01-16 01:36:18 -05:00
public void func_149719_a (IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
2013-11-10 13:57:35 -08:00
{
float f = 0.4375F;
float f1 = 0.5625F;
float f2 = 0.4375F;
float f3 = 0.5625F;
boolean flag = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.NORTH);
boolean flag1 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.SOUTH);
boolean flag2 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.WEST);
boolean flag3 = this.canPaneConnectTo(par1IBlockAccess, par2, par3, par4, ForgeDirection.EAST);
if ((!flag2 || !flag3) && (flag2 || flag3 || flag || flag1))
{
if (flag2 && !flag3)
{
f = 0.0F;
}
else if (!flag2 && flag3)
{
f1 = 1.0F;
}
}
else
{
f = 0.0F;
f1 = 1.0F;
}
if ((!flag || !flag1) && (flag2 || flag3 || flag || flag1))
{
if (flag && !flag1)
{
f2 = 0.0F;
}
else if (!flag && flag1)
{
f3 = 1.0F;
}
}
else
{
f2 = 0.0F;
f3 = 1.0F;
}
2014-01-16 01:36:18 -05:00
this.func_149676_a(f, 0.0F, f2, f1, 1.0F, f3);
2013-11-10 13:57:35 -08:00
}
2013-12-31 11:58:36 -05:00
public IIcon getSideTextureIndex ()
2013-11-10 13:57:35 -08:00
{
return this.theIcon;
}
2014-01-07 13:50:35 -05:00
public final boolean canThisPaneConnectToThisBlock (Block b)
2013-11-10 13:57:35 -08:00
{
2014-01-07 13:50:35 -05:00
return Block.opaqueCubeLookup[b] || b == (Block) this || b == Blocks.glass;
2013-11-10 13:57:35 -08:00
}
2014-01-18 02:52:49 -05:00
public void func_149651_a (IIconRegister par1IconRegister)
2013-11-10 13:57:35 -08:00
{
2014-01-18 02:52:49 -05:00
super.func_149651_a(par1IconRegister);
2013-11-10 13:57:35 -08:00
this.theIcon = par1IconRegister.registerIcon("tinker:glass/" + folder + "/glass_side");
}
public boolean canPaneConnectTo (IBlockAccess access, int x, int y, int z, ForgeDirection dir)
{
2014-01-11 05:29:27 -05:00
return canThisPaneConnectToThisBlock(access.func_147439_a(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ))
2014-01-15 23:19:27 -05:00
|| access.isSideSolid(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.getOpposite(), false);
2013-11-10 13:57:35 -08:00
}
@Override
2014-01-15 23:19:27 -05:00
public boolean func_149646_a (IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
2013-11-10 13:57:35 -08:00
{
// if(par5 == 0 || par5 == 1){
2014-01-11 05:29:27 -05:00
// return par1IBlockAccess.func_147439_a(par2, par3, par4) != this.blockID;
2013-11-10 13:57:35 -08:00
// }else{
// return true;
// }
return true;
}
}