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

Помогите Поле зрения игрока.

Тема в разделе "Разработка плагинов для новичков", создана пользователем FAQCoder, 20 июл 2019.

  1. Автор темы
    FAQCoder

    FAQCoder Новичок

    Баллы:
    6
    Здравствуйте, недавно у меня возник вопрос как получить всех энтитей в поле зрения игрока. Пробовал .getLineOfSight(null, 50); но особо ничего не выходило. Можно ли получить энтитей включая невидимые и видимые армор стенды в поле зрения игрока, или просто как получить название энтити на которого игрок смотрит?
     
  2. Mr Hosting
  3. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    Получаешь лист блоков, находящихся на прицеле игрока.

    По вопросу же.. Как вариант - циклом парсить всех сущностей в мире; считать квадратное расстояние между игроком и сущностью; проверять не превышает ли требуемое; считать горизонтальный угол между ними; проверять его; считать вертикальный угол между ними; проверять его; добавить в лист.
    Однако, полагаю, это будет довольно ресурсоёмко, особенно если такой игрок будет не один. К тому же для всех игроков будет просчет одного и того же поля зрения, например, на 90гр., когда как у них может стоять там какой-нибудь quake-pro.
    Может есть и иной вариант.
     
  4. Автор темы
    FAQCoder

    FAQCoder Новичок

    Баллы:
    6
    Возможно ли получить ентити на которого смотрит игрок, не используя поле зрения? Возможно ли получить невидимый или видимый арморстенд на который смотрит игрок? Если, да то как?
     
  5. imDaniX

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

    Баллы:
    76
    Имя в Minecraft:
    imDaniX
    В интернетах есть такой вариант. Полагаю, в какой-то мере он подойдет и для поиска сущностей в поле зрения.
     
  6. SimMiMo

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

    Баллы:
    76
    Я использовал в своих задачах это. Вполне удобная вещь, можно под свои нужды модифицирвоать также.
     
  7. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Дарю.
    Использование: 1 метод это игрок, а радиус это дальность действия метода. Вернет ближайшего ентити на прицеле игрока, но не дальше радиуса.
    PHP:
        public static Entity getNearestEntityInSight(Player playerint range) {
            
    ArrayList<Entityentities = (ArrayList<Entity>) player.getNearbyEntities(rangerangerange);
            
    ArrayList<BlocksightBlock = (ArrayList<Block>) player.getLineOfSight( (Set<Material>) nullrange);
            
    ArrayList<Locationsight = new ArrayList<Location>();
            for (
    int i 0sightBlock.size(); i++)
                
    sight.add(sightBlock.get(i).getLocation());
            for (
    int i 0sight.size(); i++) {
                for (
    int k 0entities.size(); k++) {
                    if (
    Math.abs(entities.get(k).getLocation().getX() - sight.get(i).getX()) < 1.3) {
                        if (
    Math.abs(entities.get(k).getLocation().getY() - sight.get(i).getY()) < 1.5) {
                            if (
    Math.abs(entities.get(k).getLocation().getZ() - sight.get(i).getZ()) < 1.3) {
                                if(
    entities.get(k) instanceof Player) {
                                    return 
    entities.get(k);
                                } else {
                                    return 
    null;
                                }
                            }
                        }
                    }
                }
            }
            return 
    null;
        }
     
  8. Dymeth

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

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
  9. alexandrage

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

    Баллы:
    173
  10. Автор темы
    FAQCoder

    FAQCoder Новичок

    Баллы:
    6
    Версия 1.12.2 как получить невидимый армор стенд, пробовал изменить instanceof Player на ArmorStand, видимые арморстенды он получает, невидимые игнорирует.
     
  11. alexandrage

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

    Баллы:
    173
    Значит они фейковые на пакетах онли.
     
  12. Luminate_

    Luminate_ Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Luminate_
    Никак, если он фейковый.
     

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