Получить ближайшего моба и выполнить действие

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.7.10
34
0
Java:
List entities = player.worldObj.getLoadedEntityList();
        for (int i = 0; i < entities.size(); i++) {
            if (entities.get(i) instanceof EntityMyMob && entities.get(i) != player) {
                if (player.getDistanceToEntity((EntityMyMob) entities.get(i)) <= radius) {
                    //действие с мобом допустим
                }
            }
        }
использую такой код чтобы сделать действие, делаю со своим мобом, да это работает, но когда моба в радиусе 2 то выполняется сразу с обоими, как сделать чтобы выполнялось с ближайшим (который ближе к игроку)
 
Решение
Ты таким кодом сервер убьёшь. Что если допустим лист entities будет содержать 1к+ индексов? Цикл будет идти долго.

Вернёмся к вопросу, делается это подобным кодом:
СимплКод:
        int range = 2;
        List<Entity> entities = player.worldObj.getEntitiesWithinAABB(Класс твоего Entity, AxisAlignedBB.getBoundingBox(player.posX - range, player.posY - range, player.posZ - range, player.posX + range, player.posY + range, player.posZ + range));
        if (!entities.isEmpty()) {
            entities.sort(Comparator.comparing(player::getDistanceToEntity));
            Entity entity = entities.get(0);
            // Дальше делай чо хочешь со своим entity
        }
345
25
94
Ты таким кодом сервер убьёшь. Что если допустим лист entities будет содержать 1к+ индексов? Цикл будет идти долго.

Вернёмся к вопросу, делается это подобным кодом:
СимплКод:
        int range = 2;
        List<Entity> entities = player.worldObj.getEntitiesWithinAABB(Класс твоего Entity, AxisAlignedBB.getBoundingBox(player.posX - range, player.posY - range, player.posZ - range, player.posX + range, player.posY + range, player.posZ + range));
        if (!entities.isEmpty()) {
            entities.sort(Comparator.comparing(player::getDistanceToEntity));
            Entity entity = entities.get(0);
            // Дальше делай чо хочешь со своим entity
        }
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху