Beispiel #1
0
        public virtual List getCollidingBoundingBoxes(Entity entity, AxisAlignedBB axisalignedbb)
        {
            field_9207_I.clear();
            int i = MathHelper.floor_double(axisalignedbb.minX);
            int j = MathHelper.floor_double(axisalignedbb.maxX + 1.0D);
            int k = MathHelper.floor_double(axisalignedbb.minY);
            int l = MathHelper.floor_double(axisalignedbb.maxY + 1.0D);
            int i1 = MathHelper.floor_double(axisalignedbb.minZ);
            int j1 = MathHelper.floor_double(axisalignedbb.maxZ + 1.0D);
            for (int k1 = i; k1 < j; k1++)
            {
                for (int l1 = i1; l1 < j1; l1++)
                {
                    if (!blockExists(k1, 64, l1))
                    {
                        continue;
                    }
                    for (int i2 = k - 1; i2 < l; i2++)
                    {
                        Block block = Block.blocksList[getBlockId(k1, i2, l1)];
                        if (block != null)
                        {
                            block.getCollidingBoundingBoxes(this, k1, i2, l1, axisalignedbb, field_9207_I);
                        }
                    }
                }
            }

            double d = 0.25D;
            List list = getEntitiesWithinAABBExcludingEntity(entity, axisalignedbb.expand(d, d, d));
            for (int j2 = 0; j2 < list.size(); j2++)
            {
                AxisAlignedBB axisalignedbb1 = ((Entity) list.get(j2)).getBoundingBox();
                if (axisalignedbb1 != null && axisalignedbb1.intersectsWith(axisalignedbb))
                {
                    field_9207_I.add(axisalignedbb1);
                }
                axisalignedbb1 = entity.func_89_d((Entity) list.get(j2));
                if (axisalignedbb1 != null && axisalignedbb1.intersectsWith(axisalignedbb))
                {
                    field_9207_I.add(axisalignedbb1);
                }
            }

            return field_9207_I;
        }