1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

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

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

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

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

    alexandrage Старожил Пользователь

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

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

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

    alexandrage Старожил Пользователь

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

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

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

    alexandrage Старожил Пользователь

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

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

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

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

    Баллы:
    96
    hasLineOfSight и getLineOfSight попробуй
    или
    Код:
        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
  9. Автор темы
    Exception_Prototype

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

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

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