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

  • Автор темы Автор темы Kurumi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Добрый день.
Нужно установить радиус взрыва для нужного мне TNT.
Допустим, есть у меня лист локаций. Если в этом листе есть локация, на которой расположен TNT, тогда мне нужно изменять ему радиус взрыва.
Пробовал через ExplosionPrimeEvent, но там я не могу достать локацию, поэтому мои идеи иссякли.
Прошу помощи у шарящих 😕
 
Парси состояние блока, если тнт с метой explosion = 1 - создавай через пару секунд взрыв нужной тебе мощности...
 
Парси состояние блока, если тнт с метой explosion = 1 - создавай через пару секунд взрыв нужной тебе мощности...
upload_2019-9-22_15-8-9.png
Это все, что я могу получить из данного ивента. Ни о какой мете речи быть не может
 
вон на скрине event.setRadius, оно не работает?
Читайте, пожалуйста, тему.
Проблема в том, что мне нужно проверить, тот ли тнт взрывается. Есть ли этот тнт в моем листе
 
Добрый день.
Нужно установить радиус взрыва для нужного мне TNT.
Допустим, есть у меня лист локаций. Если в этом листе есть локация, на которой расположен TNT, тогда мне нужно изменять ему радиус взрыва.
Пробовал через ExplosionPrimeEvent, но там я не могу достать локацию, поэтому мои идеи иссякли.
Прошу помощи у шарящих 😕
event.getEntity().getLocation() ?
 
event.getEntity().getMetadata(string)
Хм, а как мне в blockplace повесить на энтити tnt метадату? Точнее, как получить его как энтити. Я могу повесить метадату на блок, но когда его подожгут, это будет уже другой тнт
 
Хм, а как мне в blockplace повесить на энтити tnt метадату? Точнее, как получить его как энтити. Я могу повесить метадату на блок, но когда его подожгут, это будет уже другой тнт
Попробуй так:
Block sourceBlock = event.getEntity().getOrigin().getBlock();

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

Если же не сможешь - можно использовать что-то по типу
HashMap<Integer, ExplosionData>,
где ключ - хешкод блока (координаты + мир),
а значение - данные твоего ТНТ (сила взрыва, например)
Ну и заносить в мапу значения при установке блока, допустим.
Вместо хешкода можно использовать что угодно - тут уж как тебе удобно. Суть ты понял.
 
Последнее редактирование:
Хм, а как мне в blockplace повесить на энтити tnt метадату? Точнее, как получить его как энтити. Я могу повесить метадату на блок, но когда его подожгут, это будет уже другой тнт
А никак. Вести запись локации. А потом подписываешь уже метой ентити.
 
Попробуй так:
Block sourceBlock = event.getEntity().getOrigin().getBlock();

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

Если же не сможешь - можно использовать что-то по типу
HashMap<Integer, ExplosionData>,
где ключ - хешкод блока (координаты + мир),
а значение - данные твоего ТНТ (сила взрыва, например)
Ну и заносить в мапу значения при установке блока, допустим.
Вместо хешкода можно использовать что угодно - тут уж как тебе удобно. Суть ты понял.
Спасибо! Работает!!
Но есть еще один неприятный момент. Мне нужно, чтобы данное сообщение не появлялосьupload_2019-9-22_23-49-35.png
Возможно ли такое?
 
Спасибо! Работает!!
Но есть еще один неприятный момент. Мне нужно, чтобы данное сообщение не появлялосьПосмотреть вложение 54887
Возможно ли такое?
Пробовал разрешать DamageEntityEvent, но он сообщение не отменяет.
Может, как-то можно отменять данное сообщение?
 
Ну значит не в том ивенте сменил, или приоритет не тот.
Да лол
я попробовал ивенты отсюдаupload_2019-9-23_15-39-9.png
Максимум, вызывается damage entity event, потому что взрыв тнт дамажит соседние блоки. Пробовал отменять все эти ивенты, ставить result#allow, не робит, сообщение все равно выводится.
Приоритет lowest.
Что за хрень?)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх