1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Установить радиус tnt

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

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

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

    Баллы:
    76
    Добрый день.
    Нужно установить радиус взрыва для нужного мне TNT.
    Допустим, есть у меня лист локаций. Если в этом листе есть локация, на которой расположен TNT, тогда мне нужно изменять ему радиус взрыва.
    Пробовал через ExplosionPrimeEvent, но там я не могу достать локацию, поэтому мои идеи иссякли.
    Прошу помощи у шарящих :confused:
     
  2. kungermu

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

    Баллы:
    66
    Имя в Minecraft:
    kungermu
    Парси состояние блока, если тнт с метой explosion = 1 - создавай через пару секунд взрыв нужной тебе мощности...
     
  3. Автор темы
    Kurumi

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

    Баллы:
    76
    upload_2019-9-22_15-8-9.png
    Это все, что я могу получить из данного ивента. Ни о какой мете речи быть не может
     
  4. Автор темы
    Kurumi

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

    Баллы:
    76
    Никто не сталкивался???
     
  5. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    вон на скрине event.setRadius, оно не работает?
     
  6. Автор темы
    Kurumi

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

    Баллы:
    76
    Читайте, пожалуйста, тему.
    Проблема в том, что мне нужно проверить, тот ли тнт взрывается. Есть ли этот тнт в моем листе
     
  7. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    event.getEntity().getLocation() ?
     
  8. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    а, ну да
    тогда вот. на скрине у тебя только прямые методы класса, а наследники ниже
     
  9. alexandrage

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

    Баллы:
    173
    Повесь на ентити тнт метадату.
     
  10. Автор темы
    Kurumi

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

    Баллы:
    76
    А проверять то её как в ивенте
     
  11. alexandrage

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

    Баллы:
    173
    event.getEntity().getMetadata(string)
     
  12. Автор темы
    Kurumi

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

    Баллы:
    76
    Хм, а как мне в blockplace повесить на энтити tnt метадату? Точнее, как получить его как энтити. Я могу повесить метадату на блок, но когда его подожгут, это будет уже другой тнт
     
  13. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Попробуй так:
    Block sourceBlock = event.getEntity().getOrigin().getBlock();

    Другой вопрос в том, что NBT затирается при замене блока ТНТ на блок воздуха. Но скорее всего это происходит уже после вызова эвента (т.к. он отменяемый), так что данные достать сможешь.

    Если же не сможешь - можно использовать что-то по типу
    HashMap<Integer, ExplosionData>,
    где ключ - хешкод блока (координаты + мир),
    а значение - данные твоего ТНТ (сила взрыва, например)
    Ну и заносить в мапу значения при установке блока, допустим.
    Вместо хешкода можно использовать что угодно - тут уж как тебе удобно. Суть ты понял.
     
    Последнее редактирование: 22 сен 2019
  14. alexandrage

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

    Баллы:
    173
    А никак. Вести запись локации. А потом подписываешь уже метой ентити.
     
  15. Автор темы
    Kurumi

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

    Баллы:
    76
    Спасибо! Работает!!
    Но есть еще один неприятный момент. Мне нужно, чтобы данное сообщение не появлялось upload_2019-9-22_23-49-35.png
    Возможно ли такое?
     
  16. Автор темы
    Kurumi

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

    Баллы:
    76
    Пробовал разрешать DamageEntityEvent, но он сообщение не отменяет.
    Может, как-то можно отменять данное сообщение?
     
  17. alexandrage

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

    Баллы:
    173
    В ивенте wg setResult(Result.ALLOW);
     
    Последнее редактирование: 23 сен 2019
  18. Автор темы
    Kurumi

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

    Баллы:
    76
    Я про него и говорю
     
  19. alexandrage

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

    Баллы:
    173
    Ну значит не в том ивенте сменил, или приоритет не тот.
     
  20. Автор темы
    Kurumi

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

    Баллы:
    76
    Да лол
    я попробовал ивенты отсюда upload_2019-9-23_15-39-9.png
    Максимум, вызывается damage entity event, потому что взрыв тнт дамажит соседние блоки. Пробовал отменять все эти ивенты, ставить result#allow, не робит, сообщение все равно выводится.
    Приоритет lowest.
    Что за хрень?)
     
Статус темы:
Закрыта.

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