Крупный БАГ.

sk9zist :l

Исправился
981
18
157
когда получаю ентити через findNearestEntityWithinAABB в world (незнаю зависит ли от этого или нет),
но ЭНтити я могу получить только с двух сторон - севера и востока. Почему так?
 

sk9zist :l

Исправился
981
18
157
И так понятно, что не зависит. Вот только когда я стою на месте и пытаюсь получить какой-нибудь энтити - я могу его получить только с двух сторон! А их четыре!! лево право впереди сзади

т.е. если зомби будет стоять сзади - я его никак не получу. Смогу получить только с переди и справа
 

sk9zist :l

Исправился
981
18
157
Что дебажить,-то если не секрет?
Кстати, я думаю проблема с сервер-клиент, но какие только мог манипуляции с !world.isRemote я сделал.

P.S. В Логах, когда ещё выводил полученную сущность из findNearestEnti... я видел, что с оставшихся двух сторон я получаю только EntityPlayerSP и на этих сторонах как раз таки я не могу получить сущность. Вопрос как с этим быть?
 

sk9zist :l

Исправился
981
18
157
Не могу понять, что здесь может пойти не так...

World.class:
@Nullable
public <T extends Entity> T findNearestEntityWithinAABB(Class <? extends T > entityType, AxisAlignedBB aabb, T closestTo)
{
    List<T> list = this.<T>getEntitiesWithinAABB(entityType, aabb);
    T t = null;
    double d0 = Double.MAX_VALUE;

    for (int j2 = 0; j2 < list.size(); ++j2)
    {
        T t1 = list.get(j2);

        if (t1 != closestTo && EntitySelectors.NOT_SPECTATING.apply(t1))
        {
            double d1 = closestTo.getDistanceSq(t1);

            if (d1 <= d0)
            {
                t = t1;
                d0 = d1;
            }
        }
    }

    return t;
}
Ну ладно, буду дебажить.. (первым способом)
 

sk9zist :l

Исправился
981
18
157
Переписал ванильный код:
Java:
            List<EntityPlayer> list = fb.world.<EntityPlayer>getEntitiesWithinAABB(EntityPlayer.class, fb.getEntityBoundingBox().expand(r, r, r));
            EntityPlayer t = null;
            double d0 = Double.MAX_VALUE;
            
            for (int j2 = 0; j2 < list.size(); ++j2)
            {
                EntityPlayer t1 = list.get(j2);
                
                if (t1 != null && EntitySelectors.NOT_SPECTATING.apply(t1))
                {
                    double d1 = fb.getDistanceSq(t1);
                    
                    if (d1 <= d0)
                    {
                        t = t1;
                        d0 = d1;
                        
                        targetEntity = t; // вместо return
                    }
                }
            }
выводит всё как надо. Только с двух сторон опять же не обнаружает энтити - и на клиенте и на сервере сущность не получаеться и равна null.
 

sk9zist :l

Исправился
981
18
157
Точно посмотрел с каких сторон не получает сущность: (стоял вблизи энтити)
South, east - true
West, north - false

P.S. обыскал весь форум, неужели ни у кого такой проблемы еще не было?
 

GoogleTan

Картошка :3
1,354
43
310
проверь что AABB правильный
 
917
22
332
Скажи, на каких координатах ты проводишь тесты?
И скинь полный код метода из сообщения #10 (вместе с сигнатурой)
 

sk9zist :l

Исправился
981
18
157
проверь что AABB правильный
Как раз таки пали подозрения на BoundingBox сущности. (т.к. правильность того, что я написал в метод я проверил и то, что должно там писаться я знаю)

UPD: Только что (буквально) сделал другой боундинг (AxisAlignedBB box = new AxisAlignedBB..)
И проверил всё. Вообщем - оказалось .expand(x, y, z) работает как-то по-идиотски, заменив его на .grow(5) у меня всё Заработало.
Незнаю с чем это связано, но если я поставлю .expand(-5, 5, -5) заместо .expand(5, 5, 5) - то у меня получает сущность как раз таки с тех сторон, с которых не получалось изначально. А те стороны, с какими получалось - с них я теперь не могу получить сущность (при минусовом значении у expand). Я до сих пор не понимаю как это работает.
 
Сверху