Эффекты для блока

Версия Minecraft
1.7.10
1,371
112
241
Здравствуйте! Я хотел бы спросить, как сделать эффект при разрушении блока? То есть, я хочу сказать, что у меня типа есть блок и при его разрушении должен даваться эффект. Подскажите код пожалуйста.

Прошу прощения за дебильный тупой вопрос.
 
Решение
Java:
 @SubscribeEvent
    public void block(BlockEvent.BreakEvent e)//Это в Events
    {
        if (e.isCanceled()) return;//Если блок не сломался, то и эфеект не дался
        EntityPlayer player = e.getPlayer();//Наш игрок
        int time = 200;//Длительность в тиках
        int power = 1;//Сила эффекта
        player.addPotionEffect(new PotionEffect(MobEffects.SPEED, time, power));//То, что ты искал
    }
Код на 1.12, но думаю, что на 1.7.10 не возникнет сложностей переделать.
586
32
136
Java:
 @SubscribeEvent
    public void block(BlockEvent.BreakEvent e)//Это в Events
    {
        if (e.isCanceled()) return;//Если блок не сломался, то и эфеект не дался
        EntityPlayer player = e.getPlayer();//Наш игрок
        int time = 200;//Длительность в тиках
        int power = 1;//Сила эффекта
        player.addPotionEffect(new PotionEffect(MobEffects.SPEED, time, power));//То, что ты искал
    }
Код на 1.12, но думаю, что на 1.7.10 не возникнет сложностей переделать.
 
1,371
112
241
Вот только одна проблема: не могу игроку дать этот эффект Вот что написал:
Java:
@SubscribeEvent
        public void block(BlockEvent.BreakEvent e)
        {
            if (e.isCanceled()) return;
            EntityPlayer player = e.getPlayer();
            int time = 16;
            int power = 1;
            player.addPotionEffect(new PotionEffect(time, power));//Тут ошибка: не могу написать эффект.
        }
}
 
Последнее редактирование модератором:
154
17
97
Думаю использовать для этого ивенты немного неэффективно.
Если у тебя есть свой блок, к которому ты хочешь применить эту механику, то тебе лучше переопределить метод разрушения блока onBlockDestroyedByPlayer(), а дальше использовать код наложения эффекта, представленный выше.
Ивенты нужны, если ты хочешь проверять абсолютно все разрушения блоков в мире и идти от этого.
Преймущество переопределения метода в том, что он будет вызываться только при разрушении твоего блока, а не отслеживать все разрушения.
Возможно способ реализации не сильно принципиален, ибо работать будет и так и так, но с точки зрения правильности кода этот вариант лучше.
 
Сверху