Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • LIMITED TIME SUMMER DEAL

    ☀️ Summer Power Sale ☀️

    Level up your summer with an exclusive 25% OFF on all Monthly Ranks 🎮

    Use coupon code:

    SUMMER26

    ⏰ Limited time offer — Catch the summer boost before it ends!

    💡 New! We've also launched a new MCPE Premium Rank with 500+ resources already available.
    Give it a try and let us know what you think! 🚀
    🌊 Keep your subscription active and enjoy the same discount every month!
    Upgrade Now ☀️🚀
ModeledNPCs: Ultimate NPC Plugin for MythicMobs & ModelEngine! Quests, Dialogues & Traders & more!

ULTIMATE Plugins MC ModeledNPCs: Ultimate NPC Plugin for MythicMobs & ModelEngine! Quests, Dialogues & Traders & more! 9.0

Register to download
ModelEngine • BetterModel • Animations • Scaling • Hover Effects • Stability Fixes

BetterModel 3.x is Here

ModeledNPCs now officially supports BetterModel 3.x.

Starting with v9.0, ModeledNPCs ships as one single JAR that automatically detects the model system installed on your server and uses the appropriate integration at runtime.


  • []ModelEngine installed → ModelEngine integration
    [
    ]BetterModel installed → BetterModel integration
  • Neither installed → ModeledNPCs can still start without loading model-specific code

You no longer need a separate ModeledNPCs build depending on which model plugin your server uses.

Important: Running ModelEngine and BetterModel simultaneously is currently not supported. If both are installed, ModelEngine takes priority.

ModelEngine functionality remains supported and existing ModelEngine NPCs continue working normally.




New — BetterModel NPC Creation

BetterModel models can now be spawned directly as ModeledNPCs NPCs.

Code (Text):

/mnpc create bettermodel

ModeledNPCs automatically uses any compatible model registered inside BetterModel.

NPC data remains persistent, meaning BetterModel NPCs are restored after server restarts just like existing ModelEngine NPCs.




BetterModel Animations

BetterModel NPCs now support the complete ModeledNPCs animation workflow.

Animation Picker

The admin animation GUI automatically retrieves animations from the NPC's current model.

You can configure:


  • []Looped / idle animations
    [
    ]Interaction animations

The old ModelEngine Animations menu has also been renamed simply to:

Code (Text):

Animations

The same menu now works with both supported model providers.

Looped Animations

BetterModel's native looping system is now supported.

Once a looped animation is selected, BetterModel keeps that animation running continuously without requiring ModeledNPCs to repeatedly restart it.

This also fixes the previous one-shot behavior encountered during early BetterModel integration testing.

Interaction Animations

Animations configured to play when a player interacts with an NPC now work correctly with BetterModel NPCs as well.




BetterModel Scaling

Both permanent NPC scaling and ModeledNPCs' hover effect now support BetterModel.

Permanent Scaling

Code (Text):

/mnpc scale

now resizes BetterModel models using BetterModel's native model scaler API.

Scaling continues to persist as part of the NPC configuration.

Hover Scaling

The existing hover effect is now provider-independent.

When a player aims at an NPC, the model can temporarily increase in size just like ModelEngine NPCs.

The system automatically routes the scaling operation through the correct model provider.




Major Internal Model Provider Rewrite

v9.0 introduces a new internal IModelProvider abstraction.

Instead of ModeledNPCs systems communicating directly with ModelEngine, common model operations are now routed through the active model backend.

This includes:


  • []Applying models
    [
    ]Removing models
    []Playing animations
    [
    ]Stopping animations
    []Listing available animations
    [
    ]Changing model scale
  • Resolving model/entity information

The currently active integration is managed by the new ModelProviderRegistry.

This makes ModeledNPCs much easier to maintain and allows additional model providers to be integrated in the future without rewriting the NPC system.

Existing third-party plugins using the ModeledNPCs API are unaffected by this internal change.




Bug Fixes

BetterModel NPCs disappearing after restart


Fixed an issue where BetterModel NPCs existed in ModeledNPCs' internal data after a restart but no actual entity/model appeared in the world.

The NPC spawning system previously had no loading branch for the bettermodel NPC type.

BetterModel NPCs are now recreated correctly whenever NPC data is loaded.




NPC IDs skipping numbers

Fixed NPC IDs sometimes progressing like:

Code (Text):

1, 3, 5, 7...

instead of:

Code (Text):

1, 2, 3, 4...

The NPC loader was calling the ID allocator while restoring existing NPCs, which silently consumed an additional ID for every NPC loaded.

A new internal bumpNextId() system now updates the minimum available ID without allocating one.




Startup crash without ModelEngine

Fixed an important compatibility issue affecting servers that did not have ModelEngine installed.

Several ModeledNPCs listeners still contained direct ModelEngine API types inside their bytecode.

Even when those methods were never executed, the JVM could attempt to resolve those classes while Bukkit registered the listener and cause a startup failure.

Affected systems included parts of:


  • []NPC greetings
    [
    ]Quest handling
  • NPC hover effects

ModelEngine-specific operations are now isolated inside dedicated compatibility helpers such as MEGlowHelper.

Core listeners no longer require ModelEngine classes to exist.




Startup/runtime issues without MythicMobs

Fixed another optional-dependency isolation problem involving the MythicMobs compatibility helper.

The helper is now safely accessible from the required data-layer classes without forcing MythicMobs to be installed.




WorldGuard crash when WorldGuard was not installed

NPC interaction handling previously contained a direct reference to WorldGuard's UseEntityEvent.

Because the class existed inside the primary NPC listener, Bukkit could fail to load the entire listener when WorldGuard was absent.

WorldGuard handling has now been moved into a dedicated:

Code (Text):

WorldGuardNPCListener

This listener is only registered when WorldGuard is actually available.

Servers without WorldGuard can now use NPC interaction systems without loading any WorldGuard classes.




Hologram bouncing during movement and animations

Fixed holograms visibly bouncing up and down while NPCs rotated or played certain animations.

The hologram anchor system previously compared entity coordinates using exact floating-point equality.

Very small Y-axis changes caused by model animations could therefore be interpreted as actual NPC movement, forcing the hologram to repeatedly reposition itself.

A 0.08 block tolerance is now used to ignore insignificant vertical movement.




NoClassDefFoundError spam during chunk loading

Fixed repeated console errors when ModelEngine was not installed.

ModelEngineHandler.hasModelAttached() previously caught:

Code (Text):

Exception

However, missing JVM classes throw NoClassDefFoundError, which inherits from Error rather than Exception.

The compatibility boundary now safely handles this condition without generating error spam every time chunks load.




Double onDisable execution

Added protection against plugin shutdown cleanup executing more than once during unusual shutdown sequences.

ModeledNPCs now uses an internal AtomicBoolean guard so shutdown logic can only execute once.




Empty animation picker for BetterModel NPCs

The animation GUI previously relied on ModelEngine-specific logic to retrieve animations.

BetterModel NPCs therefore displayed an empty animation menu.

Animation discovery now routes through:

Code (Text):

IModelProvider.listAnimations()

The correct animations are automatically retrieved from whichever backend powers the NPC.




Hover scaling only working with ModelEngine

The hover system previously contained a hardcoded check requiring the NPC type to be modelengine.

That check has been removed.

Hover scaling now uses the active model provider and works with both ModelEngine and BetterModel.




Technical Changes


  • []IModelProvider — shared abstraction for model operations.
    [
    ]ModelProviderRegistry — detects and provides the active model backend.
    []BetterModelProvider — native BetterModel 3.x implementation using BetterModel's typed API.
    [
    ]ModelEngineProvider — ModelEngine implementation using the same provider interface.
    []MEGlowHelper — isolates ModelEngine glow functionality from generic NPC listeners.
    [
    ]WorldGuardNPCListener — isolates optional WorldGuard API references.
    []DataFileHandler.bumpNextId(int) — safely updates the NPC ID floor during data loading.
    [
    ]Animation GUI renamed from ModelEngine Animations to Animations.

BetterModel support uses its native typed API rather than a reflection-based bridge.

This keeps the integration cleaner, easier to maintain, and properly integrated with BetterModel 3.x.




Compatibility


  • []ModelEngine — Supported
    [
    ]BetterModel 3.x — Supported
    []MythicMobs — Optional
    [
    ]WorldGuard — Optional

ModelEngine and BetterModel should not currently be installed together.

If both are detected, ModeledNPCs will use ModelEngine.




Protection

ModeledNPCs v9.0 is protected using OreoObfuscator STANDARD mode.

This includes:


  • []Class / member renaming
    [
    ]AES string encryption
  • Number obfuscation





ModeledNPCs v9.0

One plugin. Multiple model systems.


BetterModel 3.x support is now officially available alongside ModelEngine.

Thank you to everyone testing ModeledNPCs and reporting issues. ❤️
[New] Permanent NPC Scaling — /mnpc scale <id> <value>
- New field permanentScale saved to the NPC's data (persists across restarts)
- Scale is automatically re-applied when the NPC spawns/respawns
- Command sets it live and saves immediately

[Fix] Hover Effect Resets Custom Scale
- NPCs with a custom scale were being reset to 1.0 after a player stopped hovering
- Now restores to permanentScale instead of hardcoded 1.0
- Hover animation now multiplies on top of the permanent scale (e.g. a 0.5x NPC will hover at 0.5 × hoverMultiplier)
This update will fix a issue where protocolib was spamming errors
- Fixed NPC glow effects not working correctly when other plugins (e.g. CMI) send hologram packets
Added/mnpc cleanholograms command for bugged holograms
Fix a hologram related bug
- The save now only happens once per timer tick (after the loop), only if any NPC actually needed correction, via a needsSave flag.
- The "Saving..." and "successfully saved" log lines are now gated behind debug: true in config, so they're silent in normal operation.
ModeledNPCS — New Escort System Update + Major Improvements
A huge update just landed for ModeledNPCS, bringing major improvements to the Escort System, fully configurable arrival behaviors, and important compatibility fixes.

✨ Escort System — Arrival Animations (Clone NPCs)
Clone escort NPCs can now automatically play custom animations when reaching their destination.

New YAML fields:
  • arrive-animation: <name>
  • arrive-animation-duration: <seconds>
Features:
  • Uses MEGAnimationHandler.playLoopedAnimationByName() directly on the clone

  • Fully per-player — every escort session is completely isolated

  • 0 duration keeps the animation playing until the clone is removed
This allows cinematic escort endings directly from configuration without additional coding.

⚡ Escort System — Arrival Commands
Clone escorts can now execute commands immediately upon arrival through YAML configuration.
New section:
Patrol:
arrival-commands:
Supported formats:
  • console: <command>
  • player: <command>
  • No prefix → defaults to console execution
Additional features:
  • Full {player} placeholder support
  • Commands execute before the destination dialog opens
  • Fully session-based and independent for every player
Perfect for:
  • Rewards
  • Teleports
  • Quest progression
  • Effects & cutscenes
  • Dynamic story events
New Dialog YAML Fields
Added new configurable escort fields directly inside dialog trees:

FieldLocationDescription
arrive-animation Destination tree root Animation played on arrival
arrive-animation-duration Destination tree root Duration before removal
arrival-commands Under Patrol: Commands executed on arrival
⛪ priest.yml Fully Rewritten
The entire priest.yml escort configuration has been reworked.
Changes include:
  • Added arrive-animation: idle
  • Added arrive-animation-duration: 0
  • Added arrival-commands for every patrol route and state
  • All escort routes are now fully YAML-driven with zero database setup required
✅ Patrol System Compatibility
The original /mnpcai patrol arrival system remains completely unchanged.

Existing SQLite-based features continue to work normally:

  • Animations
  • Wait times
  • Arrival dialogs
  • Commands
  • Permissions
No migrstion required.

Dependency Update
Updated:
  • GlowingEntities 1.4.3 → 1.4.11
Fixes:
  • IllegalArgumentException: Malformed version: 26.1.2.build.60-stable
  • Startup crashes caused by Paper's custom version formatting
No API changes required fully internal compatibility fix.
► Holograms (/mnpc name) not appearing near NPCs
Fixed a world-reference mismatch that caused holograms to be
immediately despawned after creation. World comparison now uses
name-based lookup instead of object equality, fixing compatibility
with Multiverse-Core and any plugin that reloads worlds.
The hologram location also now re-resolves its World reference
from Bukkit on each tick, preventing stale references after
world reloads.
► /mnpc name hologram silently skipped when name matched model ID
A check in the name reapply logic was nullifying the custom
display name if it happened to equal the NPC's internal model
name, causing the hologram to never be created. Removed.
► Color codes (&c, &l, etc.) not rendering in hologram text
TextDisplay entities were receiving raw legacy color strings
via Component.text(), which treated § as a literal character.
Now uses LegacyComponentSerializer so color and formatting
codes display correctly.
► LuxDialogues integration error on startup
"Failed to register events" console error when LuxDialogues
is not installed. The event listener is now only registered
when LuxDialogues is confirmed available, eliminating the
error entirely.
Back
Top
AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

I've Disabled AdBlock