Explosion

Версия Minecraft
1.12.2

sk9zist :l

Исправился
981
18
157
как создать взрыв при ударе по мобу? я планирую это делать в эвенте а ещё чтобы у игрока в инвентаре был спец.предмет
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157
который есть в динамите
А в эвенте это можно сделать?
Метод один? Ща гляну
А ещё если по мобу нанесёться сам урон удара предметом, то дополнительный взрыв и так как он не нанесёт вреда местности, он же нанесёт доп. урон мобу? Верно?
 
145
7
31
А ещё если по мобу нанесёться сам урон удара предметом, то дополнительный взрыв и так как он не нанесёт вреда местности, он же нанесёт доп. урон мобу?
доп урона не будет, потому что урон каждые 10 тиков получать можно. (hurtResistanceTime)
 
7,099
324
1,509
Эта штука любой урон блочит? Если да, то можно абузить: дамажить чем-нить самого себя непосредственно перед тем как по лицу прилетит супер-пупер меч пвп-противника


как создать взрыв при ударе по мобу?
Чисто визуальный? Тогда спауни частицы World#spawnParticle
 

sk9zist :l

Исправился
981
18
157
7,099
324
1,509
Звук тоже можно отдельно воспроизвести, смотри метод класса World, название точное не помню)
 

tox1cozZ

aka Agravaine
8,454
598
2,890
дополнительный взрыв и так как он не нанесёт вреда местности, он же нанесёт доп. урон мобу? Верно?
Чел, пожалуйста, открой динамит и посмотри метод взрыва. Там все есть.
 

sk9zist :l

Исправился
981
18
157
Да я уже посмотрел
только вот щас пытаюсь сделать чтобы взрывался ударяемый моб а не игрок
Java:
if (e.getEntity() instanceof EntityPlayer)
{
    EntityPlayer player = (EntityPlayer) e.getEntity();
    e.getEntityLiving().world.createExplosion(e.getEntityLiving(), e.getEntityLiving().posX, e.getEntityLiving().posY, e.getEntityLiving().posZ, 4.0F, true);
}
я хочу пытаться проверить на то что тот кто ударяет - это есть игрок, ведь просто entity это тот кто бьёт потому что entityLiving это living - тоесть тот у кого уменьшаеться хп я так думаю

пробовал менять местами так как когда тестировал не как игрок бьёт моба а переходил в гм 0 и заагривал моба то потом я взрывался и проваливался в пустоту
Java:
if (e.getEntityLiving() instanceof EntityPlayer)
{
    EntityPlayer player = (EntityPlayer) e.getEntityLiving();
    e.getEntity().world.createExplosion(e.getEntity(), e.getEntity().posX, e.getEntity().posY, e.getEntity().posZ, 4.0F, true);
}
это как получаеться? я забыл как всё в эвентах делаеться или нет? 😥
 

sk9zist :l

Исправился
981
18
157
Java:
@SubscribeEvent
public void LivingAttack(LivingAttackEvent e)
{
    if (e.getEntity() instanceof EntityPlayer)
    {
        EntityPlayer player = (EntityPlayer) e.getEntity();
        e.getEntityLiving().world.createExplosion(e.getEntityLiving(), e.getEntityLiving().posX, e.getEntityLiving().posY, e.getEntityLiving().posZ, 4.0F, true);
    }
}

обычный
 

sk9zist :l

Исправился
981
18
157
а e.getEntityLiving() тогда что? это же вроде отнимаемая сущность судя по слову living в названии эвента тоже livingAttackEvent это слово поэтому
 

sk9zist :l

Исправился
981
18
157
чо за immediate? близайший? ох уж эти новые механики не пойму я их:
@SubscribeEvent
public void LivingAttack(LivingAttackEvent e)
{
    if (e.getSource().getImmediateSource() instanceof EntityPlayer)
    {
        EntityPlayer player = (EntityPlayer) e.getSource().getImmediateSource();
        e.getEntity().world.createExplosion(e.getEntity(), e.getEntity().posX, e.getEntity().posY, e.getEntity().posZ, 4.0F, true);
    }
}
сделал, так и знал сработало ток с обычным Entity. Так вот кароче взрыв добротный получаеться,
2020-03-22_14.51.07.png
только вот пока играл с курами они от меня убегали, а я застревал в блоках и вообще двинуться не мог пока не взлечу. Эт опять серверная часть да... Так и знал на клиенте взрыв не вызовешь
А ещё почему-то при взрыве меня убивает и пишет типо убит курицей это как, фича такая? Обычно я таких надписей без мода на агрессивных свиней и коров не встречал
там ещё пару нюансов было но я забыл
 

tox1cozZ

aka Agravaine
8,454
598
2,890
Взрыв нужно создавать только на сервере - !world.isRemote.

А ещё почему-то при взрыве меня убивает и пишет типо убит курицей это как
Видать из-за того что передаешь во взрыв курицу - createExplosion(e.getEntity().
 

sk9zist :l

Исправился
981
18
157
Сверху