001    package net.minecraft.util;
002    
003    import net.minecraft.entity.Entity;
004    
005    public class MovingObjectPosition
006    {
007        /** What type of ray trace hit was this? 0 = block, 1 = entity */
008        public EnumMovingObjectType typeOfHit;
009    
010        /** x coordinate of the block ray traced against */
011        public int blockX;
012    
013        /** y coordinate of the block ray traced against */
014        public int blockY;
015    
016        /** z coordinate of the block ray traced against */
017        public int blockZ;
018    
019        /**
020         * Which side was hit. If its -1 then it went the full length of the ray trace. Bottom = 0, Top = 1, East = 2, West
021         * = 3, North = 4, South = 5.
022         */
023        public int sideHit;
024    
025        /** The vector position of the hit */
026        public Vec3 hitVec;
027    
028        /** The hit entity */
029        public Entity entityHit;
030        
031        /** Used to determine what sub-segment is hit */
032        public int subHit = -1;
033    
034        public MovingObjectPosition(int par1, int par2, int par3, int par4, Vec3 par5Vec3)
035        {
036            this.typeOfHit = EnumMovingObjectType.TILE;
037            this.blockX = par1;
038            this.blockY = par2;
039            this.blockZ = par3;
040            this.sideHit = par4;
041            this.hitVec = par5Vec3.myVec3LocalPool.getVecFromPool(par5Vec3.xCoord, par5Vec3.yCoord, par5Vec3.zCoord);
042        }
043    
044        public MovingObjectPosition(Entity par1Entity)
045        {
046            this.typeOfHit = EnumMovingObjectType.ENTITY;
047            this.entityHit = par1Entity;
048            this.hitVec = par1Entity.worldObj.getWorldVec3Pool().getVecFromPool(par1Entity.posX, par1Entity.posY, par1Entity.posZ);
049        }
050    }