Свой эффект зелья

Свой эффект зелья

1,976
68
220
AlexSocol добавил(а) новый ресурс:

Свой эффект зелья - Научитесь делать собственные эффекты

Доброго времени суток! о/

В этом туториале я расскажу вам как создать собственный эффект, а также добавить предмет для использования этого зелья.

Расширение слотов:
Для начала, нам лучше бы расширить кол-во ванильных слотов под зелья, так как изначально их всего 32. Если вы уверены, что в сборке с вашим модом больше не будет зелий или наоборот, стоят такие моды как таумкрафт или ботания (вы делаете к ним аддон) - смело пропускайте этот шаг.
Java:
// Код...

Узнать больше об этом ресурсе...
 
243
28
202
Java:
    // Добавляем эвент обновления живого существва
    // Здесь мы проверяем, что обновился игрок и что у него есть наше зелье
    // В случае когда время ещё есть даём креативный полёт, иначе забираем и чистим эффект зелья
    @SubscribeEvent
    public void onEntityUpdate(LivingUpdateEvent e) {
        if (e.entityLiving instanceof EntityPlayer) {
            if (e.entityLiving.getActivePotionEffect(this) != null && e.entityLiving.getActivePotionEffect(this).getDuration() > 0) {
                ((EntityPlayer) e.entityLiving).capabilities.allowFlying =
                ((EntityPlayer) e.entityLiving).capabilities.isFlying = true;
            } else {
                ((EntityPlayer) e.entityLiving).capabilities.allowFlying =
                ((EntityPlayer) e.entityLiving).capabilities.isFlying = false;
            }
        }

Ну и мракобесие, никогда так не делайте. Есть возможность реализовать всё в классе эффекта, тут я расписал как это делать правильно.
 
Последнее редактирование модератором:

Sainthozier

Стрелочник
623
11
369
Этот эффект флая конфликтовать не будет с другими "источниками" полёта?
 

Icosider

Kotliner
Администратор
3,603
99
664
@Losver, будет с креативом, в других случаях не должно.
@AlexSocol, поправь код и ещё, не всякий "мододел" знает про рефлексию, так что лучше наверное через AT, так хоть на форуме есть туториал от Дахаки.
 
1,976
68
220

Icosider

Kotliner
Администратор
3,603
99
664
@AlexSocol, не знаю что ты там сделал, но апдейтЛивинг как был так и остался, флай как был конфликтным так и остался.
 
1,976
68
220
@Ivasik, ты, блин, меня так не пугай!
B1zVi_F__kI.jpg
 
1,976
68
220
не всякий "мододел" знает про рефлексию
Там уже готовый метод лежит, им достаточно просто его скопировать.
лучше наверное через AT
Да, но чтобы описать это в рамках туториала придётся либо отправлять человека на другую страницу, либо локально копировать половину гайда Дахаки. Ни то, ни то мне особо не понравилось, да и в кач-ве библиотеки AT не прицепить (известными мне методами), а вот рефлексию можно
 
1,976
68
220
флай как был конфликтным так и остался.
Это для примера же. Конечно, можно было бы создать а-ля список "игроки с полётом", при наложении зелья проверять, был ли у игрока полёт до этого, добавлять его в список, при снимании эффекта убирать флай только если игрока в списке не было, потом удалять из списка...
Или даже просто на модификаторе, если он >0 - allowFlying не менять...
Однако в контексте туториала "как создать зелье" не особо нужно расписывать "как создать идеальное неконфликтное зелье полёта", так как сие слегка out of topic.
 

Icosider

Kotliner
Администратор
3,603
99
664
Эм, тебе достаточно !isCreative сделать, чтобы не конфликтовало с креативным полетом. А всякие там добавления в лист и т.п. лучше оставить на тех кто пилит мод.

как создать зелье
И раз уж это создание зелья, то добавь еще зелье которое можно кинуть.
 
Сверху