Эффект на сущность

Я делаю мод с элементами экзорцизма - его я реализовываю с помощью 2 эффектов - изгнания демонов, и одержимости демонами. Первое - положительный эффект, во время которого все эффекты "Одержимости" должны мгновенно сбрасываться (это тоже маленький вопрос). А одержимость делает нечто другое, но не суть.

Итак, есть несколько крестов - при клике по сущности они с вероятностью кладут на сущность эффект изгнания (кроме одного креста, он кладет наоборот одержимость). Я могу повесить эффект на игрока, но как повесить эффект на сущность?

public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
if (random.nextInt(3) == 0)
{
entity.playSound("random.explode", 1.0F, 1.0F);
player.addPotionEffect(new PotionEffect(AlchemyBase.ExorcismEffect.id, 20 * 5, 2));
}


this.setDamage(stack, this.getDamage(stack) + 1);

return true;
}
 
MP и SP это сингл и мультиплеер? Мне сингл.

Но что означает "проверяй на EntityPlayer"?
Нужна же сущность по которой тыкнули
[merge_posts_bbcode]Добавлено: 18.03.2016 21:42:32[/merge_posts_bbcode]

И насчет эффектов. Эффект не видит иконку. Он просто розового цвета. А второй кастомный - черный.
 
Мне нужно чтоб эффект наложился на тыкнутую сущность. Это поможет?
 
Он глупость сказал. Тебе не это нужно
просто замени player.addPotion на entity.addPotion и всё будет чики-пуки

Ну и не забывай if(!world.isRemote)
 
Код:
@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {
    if (entity instanceof EntityLivingBase) {
        EntityLivingBase entity_base = (EntityLivingBase)entity;
        if (player.worldObj.rand.nextInt(3) == 0) {
            entity.playSound("random.explode", 1.0F, 1.0F);
            entity_base.addPotionEffect(new PotionEffect(AlchemyBase.ExorcismEffect.id, 20 * 5, 2));
        }
        stack.damageItem(1, player);
        return true;
    }
    return false;
}
 
А на ливБазу зачем? Он же не сможет кликнуть по партиклу... А хотя стрелы же
 
Код:
@Override
public boolean onItemUse(ItemStack is, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
    Entity entity = new EntityLightningBolt(world, (double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D);
    world.spawnEntityInWorld(entity);
    return true;
}
 
А насчет эффекта. У меня не работает event из-за @ForgeSubscribe (его он не находит). Есть еще какие-нибудь пути сделать эффекты для эффекта? (хех, масло масляное). Я имею в виду - отравление - наносит урон каждые там столько-то тиков, восстановление - лечит тоже также, вот и мне нужен свой такой эффект.

К примеру (такой мне и нужен) - эффект одержимости - если уровень эффекта 1, то: снизить злоровье на 1/3 (знаю как) и применить слабость но БЕЗ видимого эффекта (то бишь чтоб не отдельным эффектом появлялось, а просто вместе с самой "одержимостью" поставлялось) и еще применить например медлительность, так же.

event может и хорошо, но не работает
 
С версии 1.7 надо использовать "@SubscribeEvent".
[merge_posts_bbcode]Добавлено: 19.03.2016 00:26:23[/merge_posts_bbcode]

Agravaine, я не знал. Постараюсь запомнить.
 
@SubscribeEvent ни на что не повлиял.

Я много чего перепробовал, пытался выяснить, работает ли это, нанося урон мобу в течение эффекта - не сработало. Не работает. На всех гайдах пишут, что класс должен называться YOURMODEventHooks. Не знаю, может проблема в этом

@SubscribeEvent
public void onEntityUpdate(LivingEvent.LivingUpdateEvent event)
{
if (event.entityLiving.isPotionActive(AlchemyBase.ObsessionEffect))
{
event.entityLiving.attackEntityFrom(DamageSource.generic, 2);

if (event.entityLiving.worldObj.rand.nextInt(20) == 0)
{
event.entityLiving.attackEntityFrom(DamageSource.generic, 2);
}
}
}

[merge_posts_bbcode]Добавлено: 19.03.2016 12:33:01[/merge_posts_bbcode]

В главном классе мода тоже не работает. Я уже не знаю
 
addWeatherEffect делает тоже самое, но ещё и добавляет твою молнию к счётчику молний мира (так написано в комментарии). Это совсем не обязательно
 
Назад
Сверху