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

Помогите Как работает радиус getNearbyEntities

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

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

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

    Баллы:
    46
    По поводу player.getNearbyEntities(x, x, x);
    Может кто объяснить или нарисовать в паинте, как именно указанные координаты берут область вокруг игрока? Просто не понятно не много.
     
  2. Хостинг MineCraft
    <
  3. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Кругом
     
  4. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    В примере было сказано, что все аргументы вводятся одинаковые. Это правильно?
     
  5. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    ну первое это допустимое отклонение по X второе по Y третье по Z

    т.е. допустим есть локация 1 1 1 (xyz соответственно). теперь ты пишешь .getNearbyEntities(1 1 2)

    это значит что будут взяты все кто есть в промежутке от [0-2 по иксу (+-1), 0-2 по игрку (+-1) -1-3 по зед (+-2)]
     
  6. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    Допустим, если аргумент будет 200к, то у меня будет достаточно большой шанс получить достаточно большое количество существ?
     
  7. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Это получится шар с радиусом 200к, не все чанки будут прогружены (только 1% их этого примерно)
     
  8. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    А если я получу всех существ так:
    Код:
    Bukkit.getServer().getWorlds().get(0).getEntities();
    
    То всё равно это будет тоже самое? Так как не все чанки прогружены?
     
  9. AtomicInteger

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

    Баллы:
    46
    Иногда полезно смотреть документацию:
     
  10. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Попробуй
    Код:
    for (Chunk chunk : Bukkit.getServer().getWorld(world).getLoadedChunks()) {
    Entity[] entity = chunk.getEntities();
    }
    
     
  11. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    а потом пи*да серверу.
     
  12. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    А чё фигли, ему нужны были все энтити я ему и дал всех энтити
     
  13. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    вжух и нет сервера.
     
  14. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    new Thread(() -> {

    }).start();
    С помощью тредов можна попробовать.
     
  15. 0x1EE7C0DE

    0x1EE7C0DE Участник Пользователь

    Баллы:
    36
    Разве, из других тредов можно обращаться к баккитовским объектам?
     
  16. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Можно, иногда.
     
  17. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    А вот теперь такая задача.
    Требуется получить не просто всех entity со всех прогруженных чанков, но и не прогруженны.
    Ладно, из загруженных чанков панятно как.
    А вот допустим:
    1. Получить ВСЕ чанки.
    2. Проверить. загружен ли он на данный момент, если да, то получить entity и сделать то что нужно, в противном случае подгрузить чанк и сделать то что нужно и выгрузить.
    Как такое можно сделать и как правильно оформить это через потоки?

    P.S. Хотелось бы самому сделать. Прошу, просто дайте наводку на правильный путь в плане потоков и возможности проверки чанков на загружен ли или нет, ну и конечно же ручная загрузка и выгрузка чанка.[DOUBLEPOST=1484755717,1484755441][/DOUBLEPOST]
    Как это понять ? "Иногда" :D
     
  18. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    ChunkUnloadEvent[DOUBLEPOST=1484756072][/DOUBLEPOST]
    ArrayList<Chunk> chunks = Bukkit.getWorld("kek").getChunks().stream()
    .filter((chunk) -> {
    return !chunk.isLoaded();
    }).map((chunk) -> {
    return (Chunk) chunk;
    }).collect(Collectors.toCollection(ArrayList::new));
     
  19. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    Это к какому вопросу ответ?) Большому или "Иногда"?
    И как понятно из названия, это эвент при выгрузке чанка.
    Что можете подсказать по ручной загрузке и выгрузке?
     
  20. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Location loc = new Location(....);
    loc.getChunk().load(); // loc.getChunk().unload(true, true);
    1st true - сохранить чанк
    2 true - "безопасно" сорханить чанк
    Скорее всего чтобы сервер не крашнулся, в редких случаях такое наверное бывает
     
  21. Автор темы
    Exception_Prototype

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

    Баллы:
    46
    -> - Java 8, сервер Java 7. Не затруднит ли Вас переделать под java7?[DOUBLEPOST=1484756331,1484756298][/DOUBLEPOST]
    А можно ли загрузить чанк который как раз !chunk.isLoaded(); таким же способом?
     

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