Explosion

Версия Minecraft
1.12.2

sk9zist :l

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


как создать взрыв при ударе по мобу?
Чисто визуальный? Тогда спауни частицы World#spawnParticle
 
Звук тоже можно отдельно воспроизвести, смотри метод класса World, название точное не помню)
 
дополнительный взрыв и так как он не нанесёт вреда местности, он же нанесёт доп. урон мобу? Верно?
Чел, пожалуйста, открой динамит и посмотри метод взрыва. Там все есть.
 
Да я уже посмотрел
только вот щас пытаюсь сделать чтобы взрывался ударяемый моб а не игрок
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);
}
это как получаеться? я забыл как всё в эвентах делаеться или нет? 😥
 
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);
    }
}

обычный
 
а e.getEntityLiving() тогда что? это же вроде отнимаемая сущность судя по слову living в названии эвента тоже livingAttackEvent это слово поэтому
 
чо за 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
только вот пока играл с курами они от меня убегали, а я застревал в блоках и вообще двинуться не мог пока не взлечу. Эт опять серверная часть да... Так и знал на клиенте взрыв не вызовешь
А ещё почему-то при взрыве меня убивает и пишет типо убит курицей это как, фича такая? Обычно я таких надписей без мода на агрессивных свиней и коров не встречал
там ещё пару нюансов было но я забыл
 
Взрыв нужно создавать только на сервере - !world.isRemote.

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