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

Проверка на возможность установки блока

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

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

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

    Баллы:
    31
    Имя в Minecraft:
    Lignium
    Здравствуйте! Как проверить, можно ли блок поставить над другим блоком? Например, факел на горшке поставить нельзя, он дропется.
     
    Последнее редактирование: 17 мар 2017
  2. Хостинг MineCraft
    <
  3. Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Поподробнее, для чего тебе это надо, если в ядре уже есть эта проверка.
    И насколько мне известно, блоки вообще не ставятся.
    Если факелом нажать пкм на ступеньки например - ничего не произойдет
     
  4. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Никак, только костыли.
     
  5. Dymeth

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

    Баллы:
    76
    Это скорее всего на клиенте проверяется, а не на сервере
     
  6. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    +
     
  7. Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    всетаки какая-то проверка на сервере есть, если через set поставить например кнопку в воздухе или на блок, на который обычным кликом она не ставится, после пкм или лкм по ней, и она дропнется (тоесть то что и описал автор, только ставить не рукой и дропается только после клика)
     
  8. Dymeth

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

    Баллы:
    76
    А, ну да, логично
     
  9. Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    вот один из них)

    cord* - координаты точки в трехмерном пространстве, тип - float/double
    AxisAlignedBB - кубоид , в примере задается двумя парами координат XYZ

    World xWorld = player.getWorld();
    WorldServer Wser =((CraftWorld)xWorld).getHandle();
    AxisAlignedBB bb= AxisAlignedBB.a(cordX, cordY, cordZ, cordX, cordY, cordZ);
    List mega = Wser.a(bb);
    if(!mega.isEmpty()){
    p.sendMessage("Лист не пустой, в данной точке есть какой-то блок!");
    }[
    /SPOILER]
    Вместо cord* подставить координаты плоскости за проверяемым блоком, паралельно одной из граней.
     
  10. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    чел, это проверка на наличие физической части блока в некоем объеме пространства, но это никак не проверка возможности установки блока.
     
  11. Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    это проверка на кубоид, который прорисовывается когда смотришь на блок[DOUBLEPOST=1490251360,1490251224][/DOUBLEPOST]Все равно автор так и не ответил для чего это ему. И почему именно над блоком
     
  12. Blc_Dragon

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    ну и как ты с помощью своей проверки узнаешь, получится ли поставить факел над ступенькой. или кактус рядом с блоком?
     
  13. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Проорал в голос, зачем проверять то, чего и так нельзя?
     
  14. Автор темы
    Lignium

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

    Баллы:
    31
    Имя в Minecraft:
    Lignium
    В моём плагине при разрушении земли, одно из действий - это размещение цветочного горшка вместо этой земли. Этот горшок особым образом регистрируется в плагине... Если он сам по себе дропнется, при конфликте с нижним блоком, программа не обработает это, в итоге выливаются производные баги, типа горшка нет, а указатель Block остался во множестве блоков.
     
  15. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    В чем проблема проверять наличие блока под горшком?
     
  16. Dymeth

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

    Баллы:
    76
    В множестве несовместимых комбинаций:
    горшок - воздух, факел - ступеньки, кактус - вода
     
  17. Автор темы
    Lignium

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

    Баллы:
    31
    Имя в Minecraft:
    Lignium
    В общем я решил эту проблему (не идеально, но решил). Для проверки блока использовал метод Material.isOccluding(). Как я понял, он проверяет является блок (его материал) целостным, то есть становится ли блок частью геометрии мира, когда невидимые грани блоков удаляются. Например, если поставить тропу (дорожка) поверх блока земли и посмотреть внутренности этой конструкции с помощью режима наблюдателя, можно заметить, что невидимая сторона блока земли не удалена, так как тропа не является "occluding". А вот если тропу заменить другим целостным блоком, той же землей, верхняя поверхность нижнего блока исчезнет, как и нижняя верхнего блока.
    Получается горшок не будет конфликтовать с этим классом блоков.[DOUBLEPOST=1497966584,1497966463][/DOUBLEPOST]Возможно я ошибаюсь, исправьте кто знает :)
     
Статус темы:
Закрыта.

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