001    package net.minecraft.block;
002    
003    import java.util.Random;
004    import net.minecraft.block.material.Material;
005    import net.minecraft.creativetab.CreativeTabs;
006    import net.minecraft.entity.Entity;
007    import net.minecraft.item.Item;
008    import net.minecraft.util.AxisAlignedBB;
009    import net.minecraft.world.World;
010    
011    public class BlockWeb extends Block
012    {
013        public BlockWeb(int par1, int par2)
014        {
015            super(par1, par2, Material.web);
016            this.setCreativeTab(CreativeTabs.tabDecorations);
017        }
018    
019        /**
020         * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity
021         */
022        public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity)
023        {
024            par5Entity.setInWeb();
025        }
026    
027        /**
028         * Is this block (a) opaque and (b) a full 1m cube?  This determines whether or not to render the shared face of two
029         * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
030         */
031        public boolean isOpaqueCube()
032        {
033            return false;
034        }
035    
036        /**
037         * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been
038         * cleared to be reused)
039         */
040        public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
041        {
042            return null;
043        }
044    
045        /**
046         * The type of render function that is called for this block
047         */
048        public int getRenderType()
049        {
050            return 1;
051        }
052    
053        /**
054         * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
055         */
056        public boolean renderAsNormalBlock()
057        {
058            return false;
059        }
060    
061        /**
062         * Returns the ID of the items to drop on destruction.
063         */
064        public int idDropped(int par1, Random par2Random, int par3)
065        {
066            return Item.silk.itemID;
067        }
068    
069        /**
070         * Return true if a player with Silk Touch can harvest this block directly, and not its normal drops.
071         */
072        protected boolean canSilkHarvest()
073        {
074            return true;
075        }
076    }