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

Помогите Отслеживание энтити в радиусе, наиболее оптимальное решение

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Спасибо, еще вопрос, под каждого моба делать класс?
     
  2. Хостинг MineCraft
    <
  3. AtomicInteger

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

    Баллы:
    46
    Это, я бы сказал, вопрос архитектуры.Я бы согласно парадигмам ООП делал так: 1 объект = 1 класс.
     
  4. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Самое херовое то, что такую нмс хрен ты под рефлексию сам переделаешь. А без неё придётся твой плагин под каждую версию обновлять.
     
  5. AtomicInteger

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

    Баллы:
    46
    Переделать то легко, но вот скорость работы...Приходится чем-то жертвовать, что поделать.
     
  6. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Да я уже с NMS доигрался, есть альтернативы? С мин. нагрузкой, кроме NMS, с шедуллером не вариант, хотя, попробую ка я
     
  7. AtomicInteger

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

    Баллы:
    46
    Хотя, возможно в 9 нас обрадуют на счёт рефлексии, я где-то читал об этом.
     
  8. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Пока делаю шудуллером, возник вопрос, мне каждые 10 тик, перебирать игроков? Или каждую минуту, в отдельном шудуллере, добавлять в коллецию (которую тоже потом придется перебирать )
     
  9. AtomicInteger

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

    Баллы:
    46
    Будешь перебирать каждого игрока и getNearbyEntities в шедулере?Плохое решение...
     
  10. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Сделай хешсет, в него заноси игроков при входе и убирай при выходе. В цикле бери игроков только из этого шедулера.[DOUBLEPOST=1486666977,1486666944][/DOUBLEPOST]
    Есть лучше?
     
  11. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    А если NMS до меня вообще не допирает, наверное, потому что, нету времени
     
  12. AtomicInteger

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

    Баллы:
    46
    Тоже хотел написать это:) + Можешь модифицировать алгоритм перебора сущностей, что бы они только по горизонтали перебирались, так нагрузки будет меньше.Хотя, мобы перестанут трогать тебя на +1 блоке по у :)
     
  13. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    С нмс проблема будет в том, что ты будешь наследоваться от нмс класса при переопределении метода / поля, который тебе нужен. Такую штуку тоже под рефлексию можно запилить, но, крайне проблематично.
    Шедулер - костыль, но, наиболее выгоден в твоём варианте.
    Либо жди, пока кто-нибудь из местных не скинет тебе готовый рабочий код.
     
  14. AtomicInteger

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

    Баллы:
    46
    NMS, как по мне, однозначно лучше.
     
  15. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Код:
    public static List<Entity> entityLocationRange(Location locAt, int range){
            List<Entity> ent = new ArrayList<Entity>();
            for(Entity e : locAt.getWorld().getEntities()){
                if(e.getLocation().add(0, 2, 0).distanceSquared(locAt) <= range){
                    ent.add(e);
                }
            }
            return ent;
        }
    М?)[DOUBLEPOST=1486667206,1486667148][/DOUBLEPOST]
    А смысл в коде, если я его не понимаю? Хотя, может будет потом время, покопаюсь с NMS
     
  16. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Так и я об этом, там такое есть в кастомнпс.
     

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