MEGAnim Plugin
MEGAnim is a Minecraft plugin for Spigot and its forks that allows you to play animations on ModelEngine entities through commands. It was born out of a practical need while working on ModelEngine-related content for the Hoplite RP project. During development, I realized there was no straightforward way to test and play animations through commands - you'd have to write plugin code just to trigger animations for testing, or set up complex event-based systems. This made the animation workflow frustrating and time-consuming, especially when you just wanted to see how an animation looked or test different parameters.
MEGAnim solves this problem by providing intuitive command-based control over ModelEngine entity animations. It supports multiple targeting methods (raycast, nearest entity, model ID, name tag, and UUID), offers both single and multiple animation modes for stacking or isolated playback, and includes full command block support for automation and redstone integration. The plugin also features a comprehensive permission system, configurable cooldowns and blacklists to prevent abuse, and fully customizable messages with color code support. The name MEGAnim comes from combining ModelEngine (MEG) with Animation (Anim).

Creator: Nogard (Twitter, YouTube, Reddit, Facebook, MCPEDL)
Table of Contents
Features
MEGAnim gives you multiple ways to target entities for animation control. Raycast lets you quickly trigger animations on whatever you're looking at, while nearest targeting finds entities within a radius. You can also target all entities of a specific model ID, search by name tag, or use UUID for precise control. This flexibility works great whether you're testing animations on the fly or building automated command block systems.
The plugin supports two animation modes. Single mode stops other animations before playing a new one (clean, no overlap), while multiple mode lets animations stack together - perfect for combining things like walk cycles with idle breathing. Both modes have their uses depending on what look you're going for.
Server protection features include:
- Configurable cooldowns to prevent command spam
- Animation and model blacklists to restrict access
- Radius limits to prevent targeting too many entities at once
- Granular permission system for different user groups
Command blocks bypass all permissions automatically, making them perfect for map mechanics and automated systems. The plugin includes full tab completion for commands, animations, and targeting modes.
Use Cases
RPG servers use MEGAnim to trigger boss animations during scripted events, make NPCs perform emotes, and create cinematic sequences. Showcase servers use it to demonstrate custom models to visitors without complex setups. Content creators build interactive exhibitions where players can trigger animations themselves.
For developers and server admins, MEGAnim is a debugging tool. You can trigger animations instantly to see how they look, test new additions without restarting, and troubleshoot animation issues in real-time. It dramatically speeds up the ModelEngine development workflow.
Setup & Configuration
Configuration
The plugin's configuration file (plugins/MEGAnim/config.yml
) allows you to customize all aspects of MEGAnim's behavior:
# Default values for animation playback
defaults:
# Maximum range for raycast targeting (in blocks)
raycast-range: 15
# Default radius for nearest entity targeting (in blocks)
nearest-radius: 10
# Default radius for model ID targeting (in blocks)
model-radius: 50
# Default radius for name tag targeting (in blocks)
nametag-radius: 50
# Default animation speed multiplier
animation-speed: 1.0
# Default lerp/blend value for animations
animation-lerp: 0.2
# Whether animations loop by default
animation-loop: false
# Animation mode: "multiple" (stack animations) or "single" (stop others before playing)
animation-mode: multiple
# Restrictions and limits
restrictions:
# Maximum radius players can specify (prevents server lag)
max-radius: 100
# Cooldown between command uses in seconds (0 = disabled)
cooldown: 0
# List of animations that cannot be played
blacklisted-animations: []
# Example:
# - "secret_animation"
# - "admin_only"
# List of model IDs that cannot be targeted
blacklisted-models: []
# Example:
# - "boss_dragon"
# - "admin_npc"
# Customizable messages (supports color codes with &)
messages:
# General messages
prefix: "&8[&6MEGAnim&8]&r"
no-permission: "&cYou don't have permission to do that!"
config-reloaded: "&aConfiguration reloaded successfully!"
# Targeting messages
no-target: "&cNo ModelEngine entity found!"
target-too-far: "&cTarget entity is too far away! (Max: {max} blocks)"
invalid-entity: "&cThat entity is not a ModeledEntity!"
# Animation messages
animation-played: "&aPlaying animation &e{animation}&a on &e{count}&a entity/entities"
animation-stopped: "&aAnimation stopped on &e{count}&a entity/entities"
animation-not-found: "&cAnimation &e{animation}&c not found on this model!"
animation-blacklisted: "&cThat animation is blacklisted and cannot be played!"
# List/Info messages
animations-list: "&aAvailable animations: &e{animations}"
entity-info: "&aEntity UUID: &e{uuid}\\n&aModel(s): &e{models}\\n&aAnimation Count: &e{count}"
# Error messages
invalid-radius: "&cInvalid radius! Must be between 1 and {max}"
invalid-uuid: "&cInvalid UUID format!"
cooldown: "&cPlease wait &e{time}&c seconds before using this command again!"
model-blacklisted: "&cThat model is blacklisted and cannot be targeted!"
# Debug mode (logs additional information to console)
debug: false
Advanced Configuration
Example 1: Protecting Important NPCs
Prevent players from triggering animations on boss models:
restrictions:
blacklisted-models:
- "dragon_boss"
- "final_boss"
- "admin_npc"
Example 2: Limiting Animation Access
Restrict access to certain animations for non-admins:
restrictions:
blacklisted-animations:
- "death"
- "secret_emote"
- "admin_only_animation"
Example 3: Preventing Spam with Cooldowns
Set a 5-second cooldown between commands:
restrictions:
cooldown: 5 # seconds
Example 4: Custom Permission Setup
Grant different permissions to different groups:
# In your permissions plugin (e.g., LuckPerms)
# Regular players - can only use raycast
- meganim.play
- meganim.stop
- meganim.list
# VIP players - can also use nearest targeting
- meganim.play.nearest
# Moderators - can use all targeting methods
- meganim.play.*
- meganim.reload
Example 5: Custom Messages
Customize all player-facing messages:
messages:
prefix: "&8[&b&lAnim&8]&r"
animation-played: "&b✓ &fPlaying &e{animation} &fon &e{count} &fentity/entities"
no-permission: "&c✗ &fYou don't have permission!"
cooldown: "&c⏱ &fWait &e{time}s &fbefore using this again"
Usage Guide
Command Aliases: /meganim
, /mga
, /manim
Commands
Play Animations
/meganim play <animation> [single|multiple] [targeting]
Animation Modes
single
- Stop all other animations before playing (prevents stacking)multiple
- Allow animations to stack/play simultaneously (default)- If not specified, uses the
animation-mode
setting from config.yml
Targeting Options
# Raycast (default)
/meganim play attack
# With mode
/meganim play attack single
# Nearest
/meganim play walk multiple nearest [radius]
# Model ID
/meganim play death single model dragon [radius]
# Name tag
/meganim play idle multiple name "Boss Dragon" [radius]
# UUID
/meganim play attack single uuid <uuid>
Stop Animations
# Stop with raycast (default)
/meganim stop
# Stop nearest
/meganim stop nearest [radius]
# Stop by model ID
/meganim stop model dragon [radius]
# Stop by name tag
/meganim stop name "Boss Dragon" [radius]
# Stop by UUID
/meganim stop uuid <uuid>
Other Commands
# List available animations on targeted entity
/meganim list
# Show entity info (UUID, models, animation count)
/meganim info
# Reload configuration
/meganim reload
Permissions
MEGAnim uses a granular permission system that can be managed through permission plugins like LuckPerms, PermissionsEx, or similar. By default, all permissions are restricted to server operators only.
Permission | Description | Default |
---|---|---|
meganim.play |
Play animations | op |
meganim.play.nearest |
Use nearest targeting | op |
meganim.play.model |
Use model ID targeting | op |
meganim.play.nametag |
Use name tag targeting | op |
meganim.play.uuid |
Use UUID targeting | op |
meganim.stop |
Stop animations | op |
meganim.stop.nearest |
Use nearest targeting for stop | op |
meganim.stop.model |
Use model ID targeting for stop | op |
meganim.stop.nametag |
Use name tag targeting for stop | op |
meganim.stop.uuid |
Use UUID targeting for stop | op |
meganim.list |
List animations | op |
meganim.info |
Show entity info | op |
meganim.reload |
Reload configuration | op |
Examples
Helicopter Animation

# Show info about the helicopter you're looking at
/meganim info
# List all available animations on the helicopter
/meganim list
# Play rotors animation (default raycast targeting)
/meganim play rotors
# Play multiple animations to simulate flight (stacking)
/meganim play rotors
/meganim play movement
/meganim play fly
# Stop all animations on the helicopter
/meganim stop
# Play animation on nearest helicopter within 10 blocks
/meganim play rotors nearest 10
Chibi Wither Walking

# Play walk animation on nearest chibi wither
/meganim play walk nearest 10
# Play wave on all chibi withers within 20 blocks
/meganim play wave model chibi_wither 20
# Stop animations on nearest entity within 10 blocks
/meganim stop nearest 10
# Stop all chibi withers within 100 blocks (useful in command blocks)
/meganim stop model chibi_wither 100
Zombie Piglin Wave

# Play wave animation on entity you're looking at
/meganim play wave
# Play wave on all zombie piglins within 20 blocks
/meganim play wave model chibi_zombie_piglin 20
# Play walk animation on nearest zombie piglin
/meganim play walk nearest 10
# List animations available on the entity
/meganim list
# Show detailed entity info (UUID, model name, animation count)
/meganim info
# Play animation with UUID targeting (for specific entities)
/meganim play wave uuid 12345678-1234-1234-1234-123456789abc
Installation
- Download the latest release from the Download section
- Place
meganim.jar
in your server'splugins/
folder - Ensure ModelEngine 4.0+ is installed
- Restart the server
- Configure
plugins/MEGAnim/config.yml
as needed
Requirements
- Minecraft Server: Spigot 1.20.1+ or any fork (Paper, Purpur, etc.)
- ModelEngine: 4.0+ (Required dependency - tested with 4.0.9)
- Java: 17 or higher
Building from Source
Clone the GitHub repository and build:
mvn clean package
The compiled JAR will be in target/meganim.jar
Note: You need ModelEngine R4.0.9 JAR in the libs/
directory for compilation. At runtime, MEGAnim works with any ModelEngine 4.x version.
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
See LICENSE for more details.
FAQ
Troubleshooting
"No ModelEngine entity found!"
Cause: You're not looking at a ModelEngine entity, or it's too far away.
Solutions:
- Make sure you're looking directly at the entity
- Check the entity is within raycast range (default 15 blocks)
- Try using nearest targeting:
/meganim play <animation> nearest
- Verify the entity is actually a ModelEngine entity with
/meganim info
"Animation not found on this model!"
Cause: The animation doesn't exist for this model's blueprint.
Solutions:
- Use
/meganim list
to see available animations - Check ModelEngine's model configuration files
- Verify animation name spelling (case-sensitive)
"You don't have permission to do that!"
Cause: Missing required permission node.
Solutions:
- Check your permissions plugin (LuckPerms, etc.)
- Verify you have the base permission:
meganim.play
- For specific targeting:
meganim.play.nearest
,meganim.play.model
, etc. - Contact server admin if you believe you should have access
Cooldown Message Appearing
Cause: Cooldown system is enabled and active.
Solutions:
- Wait for the cooldown to expire
- Check
config.yml
underrestrictions.cooldown
- Set
cooldown: 0
to disable - Use
/meganim reload
after changing config
Commands Not Working
Cause: Plugin not loaded properly or ModelEngine missing.
Solutions:
- Verify MEGAnim is in plugins folder:
/plugins
- Check console for errors during startup
- Ensure ModelEngine 4.0.9+ is installed
- Restart server after installing both plugins
Tab Completion Not Working
Cause: Permissions issue or looking at wrong entity.
Solutions:
- Must be looking at a ModelEngine entity for animation names
- Check you have base
meganim.play
permission - Try relogging or
/meganim reload
Can I use this with MythicMobs or other plugins?
Yes! If your MythicMobs are using ModelEngine models, MEGAnim will work with them. The API is not yet exposed in v1.0.0, but it's on our TODO list and will be added based on demand. In the meantime, you can trigger animations by executing MEGAnim commands from other plugins (e.g., using player.performCommand()
or Bukkit.dispatchCommand()
).
Does this work on Bedrock Edition?
MEGAnim is made for Java Edition servers (Spigot/Paper). However, Bedrock support can be added using Geyser (allows Bedrock players to join Java servers) and GeyserModelEngine (ports ModelEngine models to Bedrock clients). With this setup, Bedrock players can see and interact with ModelEngine animations on your Java server.
Looking for Java to Bedrock resource pack conversion or help enabling Bedrock players on your Java server? Contact Nogard at nogard.dev/contact
How do animation modes work?
Single mode stops all currently playing animations before starting the new one (clean, no stacking). Multiple mode allows animations to play simultaneously (realistic movement with multiple animations). In multiple mode, you can stack as many animations as the ModelEngine model supports.
Can I use this in Command Blocks?
Yes! Command blocks support all targeting methods except raycast (which requires looking direction). Use nearest
, model
, nametag
, or uuid
targeting. Command blocks automatically bypass all permission checks.
Will this cause lag on my server?
MEGAnim is very lightweight. The max-radius
setting prevents players from targeting too many entities at once.
Video Showcase
Watch on YouTube: youtube.com/watch?v=KvpGfGObQqo