<aside> 💡 A rewritten version of this tutorial will be available soon.
</aside>
Minecraft allows you to animated textures, as long as they have a model attached to them. The process is quite simple:
Take your base texture, then multiply the height times however many frames you want total. For my example, my image is 48x48. I will then expand it to 48x96 for a total of two frames.

<aside> 💡 Due to Minecraft limitations, an image cannot be larger than 256x256. Please keep this in mind while creating your animated texture.
</aside>
Naming the animation file is simple. The format goes as follows:
<my-texture-name>.png.mcmeta
<aside> 🚨 The file must be in the same location as the texture, or it will not work!
</aside>
Simple animation with one frame using interpolation:
{
"animation": {
"interpolate": true,
"frametime": 10
}
}
<aside> 💡 Interpolation means that Minecraft will try to fade-in and out the animation. You can see an example of this on the animation here.
</aside>
More advanced animation: