package net.minecraft.block; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; import net.minecraft.world.World; public class BlockRailPowered extends BlockRailBase { @SideOnly(Side.CLIENT) protected Icon theIcon; protected BlockRailPowered(int par1) { super(par1, true); } @SideOnly(Side.CLIENT) /** * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata */ public Icon getIcon(int par1, int par2) { return (par2 & 8) == 0 ? this.blockIcon : this.theIcon; } @SideOnly(Side.CLIENT) /** * When this method is called, your block should register all the icons it needs with the given IconRegister. This * is the only chance you get to register icons. */ public void registerIcons(IconRegister par1IconRegister) { super.registerIcons(par1IconRegister); this.theIcon = par1IconRegister.registerIcon(this.getUnlocalizedName2() + "_powered"); } protected boolean func_94360_a(World par1World, int par2, int par3, int par4, int par5, boolean par6, int par7) { if (par7 >= 8) { return false; } else { int j1 = par5 & 7; boolean flag1 = true; switch (j1) { case 0: if (par6) { ++par4; } else { --par4; } break; case 1: if (par6) { --par2; } else { ++par2; } break; case 2: if (par6) { --par2; } else { ++par2; ++par3; flag1 = false; } j1 = 1; break; case 3: if (par6) { --par2; ++par3; flag1 = false; } else { ++par2; } j1 = 1; break; case 4: if (par6) { ++par4; } else { --par4; ++par3; flag1 = false; } j1 = 0; break; case 5: if (par6) { ++par4; ++par3; flag1 = false; } else { --par4; } j1 = 0; } return this.func_94361_a(par1World, par2, par3, par4, par6, par7, j1) ? true : flag1 && this.func_94361_a(par1World, par2, par3 - 1, par4, par6, par7, j1); } } protected boolean func_94361_a(World par1World, int par2, int par3, int par4, boolean par5, int par6, int par7) { int j1 = par1World.getBlockId(par2, par3, par4); if (j1 == this.blockID) { int k1 = par1World.getBlockMetadata(par2, par3, par4); int l1 = k1 & 7; if (par7 == 1 && (l1 == 0 || l1 == 4 || l1 == 5)) { return false; } if (par7 == 0 && (l1 == 1 || l1 == 2 || l1 == 3)) { return false; } if ((k1 & 8) != 0) { if (par1World.isBlockIndirectlyGettingPowered(par2, par3, par4)) { return true; } return this.func_94360_a(par1World, par2, par3, par4, k1, par5, par6 + 1); } } return false; } protected void func_94358_a(World par1World, int par2, int par3, int par4, int par5, int par6, int par7) { boolean flag = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4); flag = flag || this.func_94360_a(par1World, par2, par3, par4, par5, true, 0) || this.func_94360_a(par1World, par2, par3, par4, par5, false, 0); boolean flag1 = false; if (flag && (par5 & 8) == 0) { par1World.setBlockMetadataWithNotify(par2, par3, par4, par6 | 8, 3); flag1 = true; } else if (!flag && (par5 & 8) != 0) { par1World.setBlockMetadataWithNotify(par2, par3, par4, par6, 3); flag1 = true; } if (flag1) { par1World.notifyBlocksOfNeighborChange(par2, par3 - 1, par4, this.blockID); if (par6 == 2 || par6 == 3 || par6 == 4 || par6 == 5) { par1World.notifyBlocksOfNeighborChange(par2, par3 + 1, par4, this.blockID); } } } }