Еще 1 проблема с EntityBullet

Проблема заключается в том что Entity бьет мобов только с близкого расстояния и может убить игрока.

Вот часть когда которая отвечает за столкновения. 

 protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
    {
        if (par1MovingObjectPosition.entityHit != null)
        {
            byte b0 = 0;

            if (par1MovingObjectPosition.entityHit instanceof EntityBlaze)
            {
                b0 = 3;
            }

            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float)b0);
        }

        for (int i = 0; i < 8; ++i)
        {
            this.worldObj.spawnParticle("snowballpoof", this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D);
           
        }

        if (!this.worldObj.isRemote)
        {
            this.setDead();
            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
        }

    }
Весь код не поместился на форуме так что его можно скачать от сюда

https://yadi.sk/d/9srGkcmvf8w8V
 
Так само-собой, этот код даст урон всем ентити, в размере 10

Код:
if (!this.worldObj.isRemote)
        {
            this.setDead();
            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
        }
А этот, дополнительно 3, блайзу.

Код:
if (par1MovingObjectPosition.entityHit != null)
        {
            byte b0 = 0;
            if (par1MovingObjectPosition.entityHit instanceof EntityBlaze)
            {
                b0 = 3;
            }
            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float)b0);
        }
[merge_posts_bbcode]Добавлено: 10.03.2015 11:52:17[/merge_posts_bbcode]

И под идее краш долен быть, так-как нет проверки на нул у 2 части кода
 
AgravaineInstanceof проверяет на нулл, знаток.
Да нет, тут другое нелогично.
Вот тут проверяется entityHit на null
Код:
 if (par1MovingObjectPosition.entityHit != null)
        {
     ...
     }

А следом идет кусок кода, в котором уже предполагается, что entityHit != null. Но если так, то зачем вообще было проверять?

Код:
        if (!this.worldObj.isRemote)
        {
            this.setDead();
            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
        }
 
Инстенс вроде бы проверяет на супер класс(наследует ли). А на нул надо отдельно проверить
 
Dovakin написал(а):
Инстенс вроде бы проверяет на супер класс(наследует ли). А на нул надо отдельно проверить
Не надо.
(null instanceof SomeClass) == false.
[merge_posts_bbcode]Добавлено: 10.03.2015 18:24:20[/merge_posts_bbcode]

И этот человек еще предлагает каждому первому выучить Джаву... :D
 
svk написал(а):
YouUBegammer написал(а):
И что же мне делать ?
Вообще java не знаешь что-ль? 0_0
Если менять код на правильный  то при попадании в моба клиент крашит   

protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
    {
        if (par1MovingObjectPosition.entityHit != null)
        {
            byte b0 = 0;

            if (par1MovingObjectPosition.entityHit instanceof EntityBlaze)
            {
                b0 = 3;
            }

            //par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float)b0);
        }

        for (int i = 0; i < 8; ++i)
        {
            this.worldObj.spawnParticle("snowballpoof", this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D);
            par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
        
        }

        if (!this.worldObj.isRemote)
        {
            this.setDead();
        }
    }
 
GloomyFolken написал(а):
Dovakin написал(а):
Инстенс вроде бы проверяет на супер класс(наследует ли). А на нул надо отдельно проверить
Не надо.
(null instanceof SomeClass) == false.
[merge_posts_bbcode]Добавлено: 10.03.2015 18:24:20[/merge_posts_bbcode]

И этот человек еще предлагает каждому первому выучить Джаву... :D
Эм. Это ты так решил,потому что тебе агравейн сказал? Тут,ему надо проверять. В других случаях можно и не делать
[merge_posts_bbcode]Добавлено: 10.03.2015 21:48:28[/merge_posts_bbcode]

Дай краш то
 
Dovakin написал(а):
GloomyFolken написал(а):
Dovakin написал(а):
Инстенс вроде бы проверяет на супер класс(наследует ли). А на нул надо отдельно проверить
Не надо.
(null instanceof SomeClass) == false.
[merge_posts_bbcode]Добавлено: 10.03.2015 18:24:20[/merge_posts_bbcode]

И этот человек еще предлагает каждому первому выучить Джаву... :D
Эм. Это ты так решил,потому что тебе агравейн сказал?
[merge_posts_bbcode]Добавлено: 10.03.2015 21:48:28[/merge_posts_bbcode]

Дай краш то
Вот https://yadi.sk/i/8FM1RHY-f9u3B
 
https:/ahaalaysmahalayjdncn.net/djidje+8+jj. У кого странней ссылка? Давай сюда или pastebin.com . У тебя кстати нулл
 
Эмм вот  par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
 
Код:
for (int i = 0; i < 8; ++i) {
 worldObj.spawnParticle("snowballpoof", posX, posY, posZ, 0.0D, 0.0D, 0.0D);
 movingObjectPosition.entityHit.attackEntityFrom(DamageSource.generic, 10.0F);
}

Вас не смущает, что здесь нет проверки на null?
 
Назад
Сверху