Урок четырнадцатый. Анимированные текстуры

Привет. В этот раз хочу рассказать как оживить блоки и предметы посредством анимированных текстур. Ведь иногда статические текстуры не выражают всю суть элемента игры. Вот какая была бы из воды вода, если б текстура не двигалась? Не интересно.

Список уроков
Тринадцатый урок. Стекло
Бонусный. Меняем имя блока. Моддинг Minecraft

ВАЖНО! Это работает только для блоков и предметов. Но не для мобов и всяких там сущностей вроде сундуков и т.д.

Для этого урока я создал один новый блок и один новый предмет (вот уроки, если забыли как БЛОК, ПРЕДМЕТ). Но вы можете попробовать изменить текстуру своего существующего блока, так как java в этом уроке затронута не будет.

Текстуры

Для создания анимации в minecraft нам нужно создать текстуру со всеми кадрами будущего блока (или предмета). К примеру у вас есть такая текстура:

Не самая удачная работа 2018

Кстати, это текстура и правду из далекого 2018. Тогда мне было скучно и я решил написать что-то для майна. Идея была: разнообразить мир, добавить особых существ и что-то новое для дня и ночи и, конечно же, кучу связанных с ними предметов. Очень оригинально, знаю. В любом случае мод я благополучно забросил, но сейчас я нашел старые текстуры и (как видите по названиям элементов в уроках) решил немного развить былые идеи.

Ну ладно. Вот есть у вас обычная текстура, и вы хотите её анимировать. Для этого в одном файле добавляем все необходимые кадры. Поняли? Ну вот пример:

Немного измененная текстура. Стало не лучше, знаю

Вместо одной текстуры 16х16 был создан такой столбик из четырех текстур 16х64. Именно так выглядит любая анимация в игре. И да, это был не конечный вариант, но я был в поиске.

Конечный (пока что)

После пары запусков и экспериментов с текстурами я таки придумал, что же я хочу увидеть. Вышло или нет я не уверен, но для урока по анимации пойдет идеально :D. В этой текстуре пять текстурок блоков, а её размеры 16х80 пикселей.

Если эта текстура указана блоку, то она будет разбита на 5 частей 16х16, которые будут наложены на блок, поочередно меняясь.

Считаем мы текстуры с 0. Т.е. у меня пять текстур, но номер последней — 4. Если уже знакомы с программированием (а я надеюсь, что да), то уже знакомы с этой фишкой (массивы там, строки, все дела).

Но не все так просто!

Игра не настолько умна, чтобы понять, где анимация, а где просто широкая текстура. Чтобы сказать игре «эй! Тут анимация» нам нужно добавить новый файл. Прям в папке с текстурами. Этот файл с правильным форматом можно создать прям в IDE, а можно использовать софт вроде Notepad++.

Имя файла — это имя текстуры (в т.ч. её формат). Сам же файл имеет формат .mcmeta
Вид на папку из IDE IntellijIDEA, тут видно форматы файлов

И в этот волшебный файлик пишем такой вот код:

Раньше, до 1.5 можно было бросить пустой файлик .mcmeta, а игра уже сама что-то придумывала. Но сейчас его заполнение обязательно.

Объект animation содержит frametime, определяющий частоту смены кадра. Чем больше число — тем медленнее будет анимация. Frames у нас определяет как именно будут показаны кадры. Можно лишние исключить (просто их не писать), или же написать что-то вроде 012321, чтобы создать плавное возвращение к изначальному кадру и т.д. Я набросал случайных, просто так. Потому что могу.

И, как я понял, interpolate — сглаживание кадров при переходе, но я не уверен.

Кстати, вместо номера кадра вы так же можете указать такую конструкцию:

И тогда ваша 4 текстура будет отображаться столько тиков (1/20 секунды), сколько указано в time.

Собираем всё вместе

Я показал вам анимацию для блока. Для предмета анимация точно такая же, но текстуру для примера я взял с англоязычного форума по моддингу.

Часы

И написал вот такую анимацию:

Всё, запускаем, смотрим.

https://geekstand.top/wp-content/uploads/2020/04/bandicam-2020-04-20-15-51-42-347-converted-with-clipchamp.mp4
Сразу прошу прощения за качество видео, место не безлимитно, а грузить на всякие утубы…лень. Анимация изначально создавалась не для обычного для блока, плюс я верну последовательное воспроизведение, а то вообще жуть. Потом будет норм. В любом случае анимация работает как надо. Ура!

Сегодня без трона, так как блоки были для примера, а вот позже будет блок будет с анимацией, и он даже попадёт на трон. Не переключайтесь 😀

Оставьте комментарий