Получить Entity из пересечения баундбокса и вектора

Sasha68

Каменная лига
Сообщения
38
Лучшие ответы
0
Симпатии
2
#1
Версия Minecraft
1.7.10
Подтверждение
Я максимально подробно описал проблему, включая исходный код файлов, краш лог, изображения и другую информацию, которая может помочь пользователям форума решить мой вопрос!
Суть такова: требуется получить на серверной стороне энтити, на которого направлен другой энтити на расстоянии меньше или равном условному (50.0D). Например я рулю лодкой и лодка должна получить допустим координаты зомби по курсу без участия игрока.
 

Sasha68

Каменная лига
Сообщения
38
Лучшие ответы
0
Симпатии
2
#2
Кое как решил проблему
Java:
Entity entity = null;

        List<Entity> list = worldObj.getLoadedEntityList();

        for (Entity entity1 : list)
        {
            if ((entity1 != this && entity1 != this.riddenByEntity))
            {
                Vec3 vec3 = this.getLook(2.0F).normalize();
                Vec3 vec31 = Vec3.createVectorHelper(entity1.posX - this.posX, entity1.posY - (this.posY + 1), entity1.posZ - this.posZ);
                double d0 = vec31.lengthVector();
                vec31 = vec31.normalize();
                double d1 = vec3.dotProduct(vec31);
                if ( d1 > 1.0D - 0.025D / d0 &&
                        this.worldObj.rayTraceBlocks(Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ), Vec3.createVectorHelper(entity1.posX, entity1.posY + ((entity1.boundingBox.maxY - entity1.boundingBox.minY) / 2), entity1.posZ)) == null &&
                        d0 < 128D)
                {entity = entity1;}

            }

        }
Возможно криво и не оптимально, зато работает
Безымянный.png Безымянный.png

p.s.: метод getLook(f) скопирован из EntityLivingBase т.к. он не распространяется на Entity
 
Последнее редактирование:
Сверху