Custom Animations
You can create new animations by adding JSON files to config/masuholograms/animations/. The filename (without .json) becomes the animation name used in hologram lines.
Creating a Custom Animation
Step 1: Create a JSON File
Create a new file in config/masuholograms/animations/. For example, my_animation.json:
Step 2: Reload
Step 3: Use It
The animation name is the filename without the .json extension.
Animation Types Reference
typewriter
Characters reveal one at a time.
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 3 | Ticks between each character reveal |
pause |
int | 20 | Ticks to hold after full reveal |
wave
Color array sweeps across text left to right.
{
"type": "wave",
"speed": 2,
"pause": 40,
"colors": ["&e", "&6", "&c", "&4", "&c", "&6"],
"defaultColor": "&f"
}
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 2 | Ticks between wave movement |
pause |
int | 40 | Ticks after wave completes |
colors |
string[] | ["&e","&6","&c","&4","&c","&6"] |
Wave color gradient |
defaultColor |
string | "&f" |
Color for characters not in the wave |
burn
Gradient sweep with persistent trail color.
{
"type": "burn",
"speed": 2,
"pause": 40,
"gradientColors": ["&e", "&6", "&c", "&4"],
"trailColor": "&4",
"defaultColor": "&f"
}
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 2 | Ticks between burn movement |
pause |
int | 40 | Ticks after burn completes |
gradientColors |
string[] | ["&e","&6","&c","&4"] |
Burn front colors |
trailColor |
string | "&4" |
Color left after burn passes |
defaultColor |
string | "&f" |
Color of unburned text |
scroll
Text rotates horizontally.
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 3 | Ticks between each shift |
pause |
int | 0 | Ticks before restarting cycle |
colors
Entire text cycles through a color array.
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 4 | Ticks between color changes |
pause |
int | 0 | Ticks before restarting cycle |
colors |
string[] | rainbow | Color sequence |
frames
Explicit text frames — the most flexible type.
{
"type": "frames",
"speed": 20,
"pause": 0,
"frames": [
"&aFrame one text",
"&bFrame two text",
"&cFrame three text"
]
}
| Field | Type | Default | Description |
|---|---|---|---|
speed |
int | 5 | Ticks between frame changes |
pause |
int | 0 | Ticks before restarting |
frames |
string[] | Required | List of frame text |
With frames, the original text between animation tags is completely replaced by each frame's text. Each frame can have its own colors and content.
Example Custom Animations
Slow Pulse (2 colors)
File: pulse_red.json
Usage: {#ANIM:pulse_red}ALERT{/#ANIM}
Ice Wave
File: ice_wave.json
{
"type": "wave",
"speed": 2,
"pause": 30,
"colors": ["&f", "&b", "&3", "&9", "&3", "&b"],
"defaultColor": "&7"
}
Nether Burn
File: nether_burn.json
{
"type": "burn",
"speed": 1,
"pause": 20,
"gradientColors": ["&e", "&6", "&c", "&4", "&0"],
"trailColor": "&8",
"defaultColor": "&f"
}
Status Indicator
File: status_online.json
Usage: {#ANIM:status_online}ignored{/#ANIM}
Countdown
File: countdown.json
Emoji Spinner
File: spinner.json
News Ticker
File: slow_scroll.json
Usage: {#ANIM:slow_scroll}BREAKING NEWS: Server reset at midnight! {/#ANIM}
Color Codes in JSON
All color codes in JSON files use & notation (not §). The mod automatically converts & to § when loading the file.
Supported in JSON:
- &0 through &f — legacy colors
- &k, &l, &m, &n, &o — formatting
- &r — reset
Warning
Hex colors (&#RRGGBB), gradients (<GRADIENT:...>), and rainbow (<RAINBOW>) are not supported inside animation JSON color arrays. Use only legacy & codes in animation configuration files.
Tips
- Test with high speed first (speed: 1) to quickly see how the animation looks, then slow it down
- Use pause to give viewers time to read completed animations
- Frame-based animations are the most versatile — you can create any effect by listing explicit frames
- File names are animation names — use descriptive names like
fire_wave,team_pulse,alert_blink - Run
/mh reloadafter editing any animation file