コード例 #1
0
        public MovingObjectPosition func_706_a(Vec3D vec3d, Vec3D vec3d1)
        {
            Vec3D vec3d2 = vec3d.getIntermediateWithXValue(vec3d1, minX);
            Vec3D vec3d3 = vec3d.getIntermediateWithXValue(vec3d1, maxX);
            Vec3D vec3d4 = vec3d.getIntermediateWithYValue(vec3d1, minY);
            Vec3D vec3d5 = vec3d.getIntermediateWithYValue(vec3d1, maxY);
            Vec3D vec3d6 = vec3d.getIntermediateWithZValue(vec3d1, minZ);
            Vec3D vec3d7 = vec3d.getIntermediateWithZValue(vec3d1, maxZ);

            if (!isVecInYZ(vec3d2))
            {
                vec3d2 = null;
            }
            if (!isVecInYZ(vec3d3))
            {
                vec3d3 = null;
            }
            if (!isVecInXZ(vec3d4))
            {
                vec3d4 = null;
            }
            if (!isVecInXZ(vec3d5))
            {
                vec3d5 = null;
            }
            if (!isVecInXY(vec3d6))
            {
                vec3d6 = null;
            }
            if (!isVecInXY(vec3d7))
            {
                vec3d7 = null;
            }
            Vec3D vec3d8 = null;

            if (vec3d2 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d2) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d2;
            }
            if (vec3d3 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d3) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d3;
            }
            if (vec3d4 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d4) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d4;
            }
            if (vec3d5 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d5) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d5;
            }
            if (vec3d6 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d6) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d6;
            }
            if (vec3d7 != null && (vec3d8 == null || vec3d.squareDistanceTo(vec3d7) < vec3d.squareDistanceTo(vec3d8)))
            {
                vec3d8 = vec3d7;
            }
            if (vec3d8 == null)
            {
                return(null);
            }
            sbyte byte0 = -1;

            if (vec3d8 == vec3d2)
            {
                byte0 = 4;
            }
            if (vec3d8 == vec3d3)
            {
                byte0 = 5;
            }
            if (vec3d8 == vec3d4)
            {
                byte0 = 0;
            }
            if (vec3d8 == vec3d5)
            {
                byte0 = 1;
            }
            if (vec3d8 == vec3d6)
            {
                byte0 = 2;
            }
            if (vec3d8 == vec3d7)
            {
                byte0 = 3;
            }
            return(new MovingObjectPosition(0, 0, 0, byte0, vec3d8));
        }
コード例 #2
0
        public virtual MovingObjectPosition collisionRayTrace(World world, int i, int j, int k, Vec3D vec3d,
                                                              Vec3D vec3d1)
        {
            setBlockBoundsBasedOnState(world, i, j, k);
            vec3d  = vec3d.addVector(-i, -j, -k);
            vec3d1 = vec3d1.addVector(-i, -j, -k);
            Vec3D vec3d2 = vec3d.getIntermediateWithXValue(vec3d1, minX);
            Vec3D vec3d3 = vec3d.getIntermediateWithXValue(vec3d1, maxX);
            Vec3D vec3d4 = vec3d.getIntermediateWithYValue(vec3d1, minY);
            Vec3D vec3d5 = vec3d.getIntermediateWithYValue(vec3d1, maxY);
            Vec3D vec3d6 = vec3d.getIntermediateWithZValue(vec3d1, minZ);
            Vec3D vec3d7 = vec3d.getIntermediateWithZValue(vec3d1, maxZ);

            if (!isVecInsideYZBounds(vec3d2))
            {
                vec3d2 = null;
            }
            if (!isVecInsideYZBounds(vec3d3))
            {
                vec3d3 = null;
            }
            if (!isVecInsideXZBounds(vec3d4))
            {
                vec3d4 = null;
            }
            if (!isVecInsideXZBounds(vec3d5))
            {
                vec3d5 = null;
            }
            if (!isVecInsideXYBounds(vec3d6))
            {
                vec3d6 = null;
            }
            if (!isVecInsideXYBounds(vec3d7))
            {
                vec3d7 = null;
            }
            Vec3D vec3d8 = null;

            if (vec3d2 != null && (vec3d8 == null || vec3d.distanceTo(vec3d2) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d2;
            }
            if (vec3d3 != null && (vec3d8 == null || vec3d.distanceTo(vec3d3) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d3;
            }
            if (vec3d4 != null && (vec3d8 == null || vec3d.distanceTo(vec3d4) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d4;
            }
            if (vec3d5 != null && (vec3d8 == null || vec3d.distanceTo(vec3d5) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d5;
            }
            if (vec3d6 != null && (vec3d8 == null || vec3d.distanceTo(vec3d6) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d6;
            }
            if (vec3d7 != null && (vec3d8 == null || vec3d.distanceTo(vec3d7) < vec3d.distanceTo(vec3d8)))
            {
                vec3d8 = vec3d7;
            }
            if (vec3d8 == null)
            {
                return(null);
            }
            sbyte byte0 = -1;

            if (vec3d8 == vec3d2)
            {
                byte0 = 4;
            }
            if (vec3d8 == vec3d3)
            {
                byte0 = 5;
            }
            if (vec3d8 == vec3d4)
            {
                byte0 = 0;
            }
            if (vec3d8 == vec3d5)
            {
                byte0 = 1;
            }
            if (vec3d8 == vec3d6)
            {
                byte0 = 2;
            }
            if (vec3d8 == vec3d7)
            {
                byte0 = 3;
            }
            return(new MovingObjectPosition(i, j, k, byte0, vec3d8.addVector(i, j, k)));
        }