Wiki
Clone wikimcpatcher / Dial_Animations
Custom Dial Animations
Vanilla Minecraft lets you create custom clock and compass textures as a strip of vertical frames, one for each possible orientation of the clock hands or compass needle. While this offers a lot of flexibility, it is inefficient for producing smooth animations at higher resolutions.
MCPatcher offers an alternate method suitable for creating smoother-looking analog dial animations. Using this method not prevent you from also providing a vanilla compass or clock animation in your texture pack, and in fact you should provide one as a fallback for non-MCPatcher users if possible.
Each dial animation is specified as a series of texture layers. Some layers can be fixed, others can rotate based on the direction to spawn (compass) or time of day (clock). Layers are rendered one on top of another using blending methods you specify.
Properties file format (Template)
Create a properties file for the animation you wish to customize:
- Clock: assets/minecraft/mcpatcher/dial/clock.properties
- Compass: assets/minecraft/mcpatcher/dial/compass.properties
(Required) Source texture
source.0=<texture>
The texture for this layer. See About Properties Files for how to specify paths to texture files.
The first (bottommost) layer is source.0
. Subsequent layers use source.1
,
source.2
, etc.
Bilinear filtering can be enabled for any layer using a lesser-known vanilla trick. Create an mcmeta file in the same directory as the source texture and add the following bit of JSON code:
{ "texture": { "blur": true, "clamp": false } }
(Optional) Layer scaling
scaleX.0=1.0 scaleY.0=1.0
Expand or shrink the texture along the x- or y-axis. The default is no scaling (1.0 in both directions).
(Optional) Layer offset
offsetX.0=0.0 offsetY.0=0.0
Offset the texture by a fixed amount. Use the range -1 .. 1. The default is 0.0 in both directions.
(Optional) Blend method
blend.0=<method>
Specifies how to combine this layer with the previous ones. See About Properties Files for a list of recognized blending methods. The default is alpha blending.
(Optional) Rotation
rotationSpeed.0=0.0 rotationOffset.0=0.0
Multiplier and offset applied to the angle before rendering. For the compass, this always points away from spawn. For the clock, the angle is the time of day: 0 = midnight 90 = 6am, 180 = noon, 270 = 6pm.
The formula used is
displayed angle = rotationSpeed * original angle + rotationOffset
Generally, rotationSpeed
is either 0 (for fixed layers such as a clock base) or
1 (for the needle/dial), but other values can be used to create things like
hour and minute hands. Negative values cause the texture to rotate backwards.
Non-integer values will likely produce strange behavior.
The simplest case, a compass with a fixed base and a rotating needle, looks like
source.0=compass_base.png source.1=compass_dial.png scaleY.1=0.5 rotationSpeed.1=1
The scaleY=0.5
property gives it the appearance of tilting into the screen.
Due to a quirk in the game's code, the compass needle actually points away
from spawn. So compass_dial.png should have the needle pointing south (down).
If it is pointing up, either flip it in an image editor or, equivalently, add a
rotationOffset
property:
rotationOffset.1=180
Additional properties
Converting your custom dial animation to vanilla format
outputFrames=<number of animation frames>
NOTE: DO NOT DISTRIBUTE YOUR TEXTURE PACK WITH THIS PROPERTY SET!
Add this property to quickly generate a default vanilla-style animation strip, which you can use as a fallback for players without custom compass/clock support.
When the game starts up, a series of frames 360/n degrees apart will be
rendered into an animation at custom_{compass,clock}.png in your .minecraft
folder. Open the file in an image editor, and once you are satisfied with it,
move it to assets/minecraft/textures/items/{compass,clock}.png
in your texture
pack.
Updated