Свой предмет в руке у моба и дроп с моба.

Код:
public boolean attackEntityAsMob(Entity p_70652_1_)
    {
        if (super.attackEntityAsMob(p_70652_1_))
        {
            if (p_70652_1_ instanceof EntityLivingBase)
            {
                byte b0 = 0;

                if (this.worldObj.difficultySetting == EnumDifficulty.NORMAL)
                {
                    b0 = 7;
                }
                else if (this.worldObj.difficultySetting == EnumDifficulty.HARD)
                {
                    b0 = 15;
                }

                if (b0 > 0)
                {
                    ((EntityLivingBase)p_70652_1_).addPotionEffect(new PotionEffect(Potion.poison.id, b0 * 20, 0));
                }
            }

            return true;
        }
        else
        {
            return false;
        }
    }

Что убрать, чтобы эффект всегда накладывался?
 
Dragon2488 написал(а):
Хохсерг, тебе самому надо язык учить.
Вот я по крайней мере могу понять, что такое метод и java в целом знаю хорошо)
 
attackEntityAsMob. Тебе даётся энтити. Проверяешь на instance и делаешь,что хотел с мобом. Например
Method{
if(entitty instanceof EntittPlayer){
System.out.println("удар по игроку");
}
 
Только вот @EventHandler никакого отношения к методам энтити не имеет.
 
Немного по-другому сделал:

Код:
@Override
    public boolean attackEntityAsMob(Entity par1Entity)
    {
        if (super.attackEntityAsMob(par1Entity))
        {
            ((EntityLivingBase)par1Entity).addPotionEffect(new PotionEffect(20, 15 * 20, 0));
            return true;
        }
        
        return false;
    }
:)
 
Че за бред? Тебе всех надо дамагать? Если да,то просто наложить эффект и вернуть true
 
Код взял из исходника одного мода
вот

подправленный код

Код:
 @Override
    public boolean attackEntityAsMob(Entity par1Entity)
    {
        if (super.attackEntityAsMob(par1Entity))
        {
            ((EntityLivingBase)par1Entity).addPotionEffect(new PotionEffect(20, 15 * 20, 0));
            
        }
        
        return true;
    }
 
Нуок,а зачем проверка на иф? Может её не надо. Просто давай баф и возвращай,то что у тебя в блоке
 
Код:
@Override
    public boolean attackEntityAsMob(Entity par1Entity)
    {
        
        
            ((EntityLivingBase)par1Entity).addPotionEffect(new PotionEffect(20, 15 * 20, 0));
             return true;
    }
этот код дает наложение эффекта,когда я близко к мобу подхожу, а оно мне нужно только после того как моб ударит игрока.
 
Что я вру то? Метод - функция, являющаяся полем класса.
 
this.setCurrentItemOrArmor(0, new ItemStack(Items.golden_sword));
ItemStack is = new ItemStack(Items.golden_sword);
is.addEnchantment(Enchantment.knockback, 3) //наложение эффекта отскока на Меч
this.setCurrentItemOrArmor(0, is);




когда я близко к мобу подхожу
ну так то, АТАКА не сработает, если удара не было. Это значит что он не отобразил атаку, но она была.

PS: чёт я вообще запутался, что хочет ТС (топикстартер)...
Автор топика, будь любезен напиши ещё раз свой вопрос (который уже 10 раз изменился, и потерялся где то между ответами полезными и совершенно бесполезными комментариями)
 
Странно, я не вижу новых сообщений, хотя из раздела видно, что отписался кто-то
 
Начну всё сначала и объясню,хотя решение уже есть.
1) Мне нужно было,чтобы мой моб держал свой предмет в руке, в данном случае - это свой меч.

Решение:
Код:
this.setCurrentItemOrArmor(0, new ItemStack(Main.euclase_sword));
 
Итог: моб держит меч свой в руках. 


2) Выпадение дропа с моба

Решение: 
Код:
 protected void dropFewItems(boolean p_70628_1_, int p_70628_2_)
    {
        this.dropItem(Main.euclase_sword, 1);

       
        }

Итог: с него выпадает меч.

3) Наложение эффекта на игрока,когда моб его ударит

Код:
@Override
    public boolean attackEntityAsMob(Entity par1Entity)
    {
        if (super.attackEntityAsMob(par1Entity))
        {
            ((EntityLivingBase)par1Entity).addPotionEffect(new PotionEffect(20, 15 * 20, 0));
            
        }
        
        return true;
    }

Итог: накладывается эффект иссушения игрока после того, как моб ударит его.

Замечание:
Код:
@Override
    public boolean attackEntityAsMob(Entity par1Entity)
    {
        
        
            ((EntityLivingBase)par1Entity).addPotionEffect(new PotionEffect(20, 15 * 20, 0));
             return true;
    }
 - здесь эффект накладывается СРАЗУ и без всякого удара, когда игрок подходит близко к мобу.

Все 3 вопроса решены и ответ дан. 
Можно перенести эту тему в решенные вопросы.
 
Назад
Сверху