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

Вот тебе ещё код класса GenericAttributes:
Java:
    static {
        maxHealth = (new AttributeRanged((IAttribute)null, "generic.maxHealth", 20.0D, 0.1D, SpigotConfig.maxHealth)).a("Max Health").a(true);
        FOLLOW_RANGE = (new AttributeRanged((IAttribute)null, "generic.followRange", 32.0D, 0.0D, 2048.0D)).a("Follow Range");
        c = (new AttributeRanged((IAttribute)null, "generic.knockbackResistance", 0.0D, 0.0D, 1.0D)).a("Knockback Resistance");
        MOVEMENT_SPEED = (new AttributeRanged((IAttribute)null, "generic.movementSpeed", 0.699999988079071D, 0.0D, SpigotConfig.movementSpeed)).a("Movement Speed").a(true);
        ATTACK_DAMAGE = new AttributeRanged((IAttribute)null, "generic.attackDamage", 2.0D, 0.0D, SpigotConfig.attackDamage);
    }
Это уже уровень абстракции пониже, чем выше.Конечно, остались и непонятные названия переменных, но глянув на логику работы с ними, понять как это работает не так уж и сложно.
Спасибо, еще вопрос, под каждого моба делать класс?
 
Самое херовое то, что такую нмс хрен ты под рефлексию сам переделаешь. А без неё придётся твой плагин под каждую версию обновлять.
 
Самое херовое то, что такую нмс хрен ты под рефлексию сам переделаешь. А без неё придётся твой плагин под каждую версию обновлять.
Переделать то легко, но вот скорость работы...Приходится чем-то жертвовать, что поделать.
 
Самое херовое то, что такую нмс хрен ты под рефлексию сам переделаешь. А без неё придётся твой плагин под каждую версию обновлять.
Да я уже с NMS доигрался, есть альтернативы? С мин. нагрузкой, кроме NMS, с шедуллером не вариант, хотя, попробую ка я
 
Хотя, возможно в 9 нас обрадуют на счёт рефлексии, я где-то читал об этом.
 
Пока делаю шудуллером, возник вопрос, мне каждые 10 тик, перебирать игроков? Или каждую минуту, в отдельном шудуллере, добавлять в коллецию (которую тоже потом придется перебирать )
 
Пока делаю шудуллером, возник вопрос, мне каждые 10 тик, перебирать игроков? Или каждую минуту, в отдельном шудуллере, добавлять в коллецию (которую тоже потом придется перебирать )
Будешь перебирать каждого игрока и getNearbyEntities в шедулере?Плохое решение...
 
Пока делаю шудуллером, возник вопрос, мне каждые 10 тик, перебирать игроков? Или каждую минуту, в отдельном шудуллере, добавлять в коллецию (которую тоже потом придется перебирать )
Сделай хешсет, в него заноси игроков при входе и убирай при выходе. В цикле бери игроков только из этого шедулера.
Будешь перебирать каждого игрока и getNearbyEntities в шедулере?Плохое решение...
Есть лучше?
 
Сделай хешсет, в него заноси игроков при выходе и убирай при выходе. В цикле бери игроков только из этого шедулера.
Тоже хотел написать это:) + Можешь модифицировать алгоритм перебора сущностей, что бы они только по горизонтали перебирались, так нагрузки будет меньше.Хотя, мобы перестанут трогать тебя на +1 блоке по у :)
 
С нмс проблема будет в том, что ты будешь наследоваться от нмс класса при переопределении метода / поля, который тебе нужен. Такую штуку тоже под рефлексию можно запилить, но, крайне проблематично.
Шедулер - костыль, но, наиболее выгоден в твоём варианте.
Либо жди, пока кто-нибудь из местных не скинет тебе готовый рабочий код.
 
Тоже хотел написать это:) + Можешь модифицировать алгоритм перебора сущностей, что бы они только по горизонтали перебирались, так нагрузки будет меньше.Хотя, мобы перестанут трогать тебя на +1 блоке по у :)
Код:
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;
    }
М?)
С нмс проблема будет в том, что ты будешь наследоваться от нмс класса при переопределении метода / поля, который тебе нужен. Такую штуку тоже под рефлексию можно запилить, но, крайне проблематично.
Шедулер - костыль, но, наиболек выгоден в твоём варианте.
Либо жди, пока кто-нибудь из местных не скинет тебе готовый рабочий код.
А смысл в коде, если я его не понимаю? Хотя, может будет потом время, покопаюсь с NMS
 
Назад
Верх