Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как получить тип entity по взгляду [Решено]

Тема в разделе "Разработка плагинов для новичков", создана пользователем Exception_Prototype, 17 янв 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Требуется получить тип сущности (смотря на неё) при вводе определённой команды.
    Пока были попытки получать
    Код:
    getTargetBlock(null, 15);
    , но при (Entity) block = ClassCastException. Так всё же, как правильно получить entity по взгляду и её взять с неё тип и т.д.
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Нету такого в команде плагина только через forge, там есть.
     
  4. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    придется просчитывать куда смотрит игрок и потом от той локации куда сморит getNearblyEntity (метод чуть по другому называется, лень лезть в иде)
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    А еще проверять препятствие на пути. Чувак влип короче :D.
     
  6. Novichock

    Novichock Активный участник Пользователь

    Баллы:
    76
    Skype:
    pavel.batalov1
    Проверять не нужно,так как getTargetBlock(null, 15); вернёт доступный для взора.
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    И пройдет мима неписа, ок да.
     
  8. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    +1
     
  9. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    hasLineOfSight и getLineOfSight попробуй[DOUBLEPOST=1484661145,1484660663][/DOUBLEPOST]или
    Код:
        public static <T extends Entity> T getTarget(Entity entity,
               Iterable<T> entities) {
            if (entity == null)
                return null;
            T target = null;
            double threshold = 1;
            for (T other : entities) {
                Vector n = other.getLocation().toVector()
                        .subtract(entity.getLocation().toVector());
                if (entity.getLocation().getDirection().normalize().crossProduct(n)
                        .lengthSquared() < threshold
                        && n.normalize().dot(
                                entity.getLocation().getDirection().normalize()) >= 0) {
                    if (target == null
                            || target.getLocation().distanceSquared(
                                    entity.getLocation()) > other.getLocation()
                                    .distanceSquared(entity.getLocation()))
                        target = other;
                }
            }
            return target;
        }
    Iterable<T> entities = getNearByEntities
     
    Последнее редактирование: 17 янв 2017
  10. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Спасибо всем за ответы, но решил поставленную задачу по другому.
    Код:
    List<Entity> en = senderplayer.getNearbyEntities(x, x, x); //double
    for (Entity e : en) {
    //to do
    }
    
    В цикле уже можно делать всё что мне требуется. Получить тип, id и конечно уникальный id, а также удалить.
    P.S. Понял, что суть вопроса не соответствует решению, но решение оказалось проще.
     
Статус темы:
Закрыта.

Поделиться этой страницей