    001    package net.minecraft.src;
    002
    003    import java.util.List;
    004    import java.util.Random;
    005
    006    public class BlockEndPortalFrame extends Block
    007    {
    008        public BlockEndPortalFrame(int par1)
    009        {
    010            super(par1, 159, Material.rock);
    011        }
    012
    013        /**
    014         * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
    015         */
    016        public int getBlockTextureFromSideAndMetadata(int par1, int par2)
    017        {
    018            return par1 == 1 ? this.blockIndexInTexture - 1 : (par1 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture);
    019        }
    020
    021        /**
    022         * Is this block (a) opaque and (b) a full 1m cube?  This determines whether or not to render the shared face of two
    023         * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
    024         */
    025        public boolean isOpaqueCube()
    026        {
    027            return false;
    028        }
    029
    030        /**
    031         * The type of render function that is called for this block
    032         */
    033        public int getRenderType()
    034        {
    035            return 26;
    036        }
    037
    038        /**
    039         * Sets the block's bounds for rendering it as an item
    040         */
    041        public void setBlockBoundsForItemRender()
    042        {
    043            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F);
    044        }
    045
    046        /**
    047         * if the specified block is in the given AABB, add its collision bounding box to the given list
    048         */
    049        public void addCollidingBlockToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity)
    050        {
    051            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F);
    052            super.addCollidingBlockToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
    053            int var8 = par1World.getBlockMetadata(par2, par3, par4);
    054
    055            if (isEnderEyeInserted(var8))
    056            {
    057                this.setBlockBounds(0.3125F, 0.8125F, 0.3125F, 0.6875F, 1.0F, 0.6875F);
    058                super.addCollidingBlockToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity);
    059            }
    060
    061            this.setBlockBoundsForItemRender();
    062        }
    063
    064        /**
    065         * checks if an ender eye has been inserted into the frame block. parameters: metadata
    066         */
    067        public static boolean isEnderEyeInserted(int par0)
    068        {
    069            return (par0 & 4) != 0;
    070        }
    071
    072        /**
    073         * Returns the ID of the items to drop on destruction.
    074         */
    075        public int idDropped(int par1, Random par2Random, int par3)
    076        {
    077            return 0;
    078        }
    079
    080        /**
    081         * Called when the block is placed in the world.
    082         */
    083        public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving)
    084        {
    085            int var6 = ((MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) + 2) % 4;
    086            par1World.setBlockMetadataWithNotify(par2, par3, par4, var6);
    087        }
    088    }