---
order: 2
---
# 2.x.x versions

## v2.4.4 [!badge variant="info" text="2025-03-11"] [!badge variant="danger" text="Hotfix"]

- Fixed the skin generation queue gets stuck when an error occurred
- Fixed setting skins by file
- Added missing translations

## v2.4.3 [!badge variant="info" text="2025-03-11"]

**New skin system**
- You can now use local image files as skin
- Skins set by URL or file can be made slim
- The skin cache system is improved
- A skin generation queue is added
- Skins should load more reliably
- You can set a MineSkin API key to speed up loading skins

When starting the server for the first time, it might take some time (depending on how many npcs with skins you have) to load all skins.

The API for setting skins also changed. Forget the SkinFetcher, now you only need to do the following:
```java
npc.getData().setSkin("username / uuid / url / filename");
```
The old SkinFetcher API won't work in this version.

**Other changes**
- Added configurable missing permissions message for the `need_permission` action
- Added feature flag to use native threads instead of virtual threads (enable it when you have problems with virtual threads)

## v2.4.2 [!badge variant="info" text="2025-01-29"]

- Added per-npc visibility distance (`/npc visibility_distance <npc> <distance>`)
- Added configurable turn_to_player direction reset range
- Added play_sound action
- Added configurable npc update visibility interval
- Fixed skins via URL not working
- Fixed clearing npc equipment via command
- Fixed display name not always visible when npc type is not player (you needed to look at the entity - now it's always visible)
- Fixed the `register_commands` not working

**API changes**
- Added NpcLoadedEvent (fired when all NPCs are loaded)

## v2.4.1 [!badge variant="info" text="2024-12-08"]

- Added support for 1.21.4
- Added "need_permission" action - if added the player needs a specific permission, otherwise the action-chain will be terminated
- Improved performance of action execution

**API**

Marked current skin system as deprecated.
We're currently working on a new system, which solves rate limiting problems, adds ability to use skins from local files and adds the ability to specify the skin variant (slim, default). The new skin system will have a slightly new API. If everything goes right, the new system will be added in the next version. There will be documentation, how to use the new API then.

## v2.4.0 [!badge variant="info" text="2024-11-02"]

- Added support for 1.21.2 & 1.21.3
- Fixed interaction cooldown message sent twice
- Don't send scale packet for non-living npcs
- Improved logging

## v2.3.1 [!badge variant="info" text="2024-10-20"]

- Fixed parsing placeholders in the displayname
- Fixed resetting scale to 1 not working
- Fixed messages for the action and copy commands
- Fixed non player npcs not spawning for the first time
- Fixed collidable command not applying instantly
- Fixed camel pose attribute
- Fixed team create/update packet
- The default skin will be shown, if the configured skin is invalid

## v2.3.0 [!badge variant="info" text="2024-10-06"]

- Switched to the new interaction system
- Improved how skins are handled and stored
- You can now use placeholders as skin
- You can now either use a URL, UUID or username as skin
- Fixed data mutation issues in the copy subcommand
- Fixed bugs when using the player-npcs feature flag
- Improved color and placeholder parsing performance
- Improved and updated many messages
- Improved logging
- The plugin now uses a thread-pool instead of creating a ton of new threads
- Overall performance and stability improvements

## v2.2.2 [!badge variant="info" text="2024-08-14"]

- Added support for 1.21.1

## v2.2.1 [!badge variant="info" text="2024-07-19"]

- Fixed interaction cooldown not working when 'disable_interaction_cooldown_message' is true
- Fixed npcs showing in tab-completion
- Fixed MiniPlaceholders support
- Fixed glowing showing as white when disabled in info command
- Fixed cat, frog and villager attributes

## v2.2.0 [!badge variant="info" text="2024-07-05"]

- Added support for 1.21
- Fixed some command and translation issues

## v2.1.0 [!badge variant="info" text="2024-05-31"]

- Added support for 1.20.5 and 1.20.6
- The plugin now requires java 21
- Reworked the command and translation system (see #105) (thanks grabsky)
- Added scale command: /npc scale (npc) (factor)
- FancyNpcs is now a paper-plugin
- Added a ton of new attributes (thanks UsainSrht)
- Several fixes and QOL changes

## v2.0.11 [!badge variant="info" text="2024-04-16"]

- Fix npcs not showing in 1.20.1
- Add attribute to show arms for armorstands
- Fix duplicate names when PLAYER_NPCS_FEATURE_FLAG is enabled

## v2.0.10 [!badge variant="info" text="2024-04-09"]

- Added invisible attribute for 1.19.4
- Fixed player npcs not spawning in 1.19.4
- Fixed duplicate npc names
- Add join delay
- Fixed armor stand interaction 

**API changes**
- Added NpcManager#getNpcById
- Improve and extend api for npc interactions
- Include sources and javadocs in api
- Add swingArm flag to Npc#move

## v2.0.9 [!badge variant="info" text="2024-02-21"] [!badge variant="danger" text="Hotfix"]

This version fixes various of issues that accured in v2.0.8

- Removed debug message console spam
- Fixed not being able to modify playerCommands on new created npcs
- Equipment is not shown when npc is invisible
- Added a fix command (/npc fix (npc name)): run this command, if the npc is bugged and it will completely recreate the npc and might fix the issue

## v2.0.8 [!badge variant="info" text="2024-02-18"]

- Dynamic skin mirroring (/npc mirrorSkin (npcName) (true/false))
- Random message sending (/npc message (index) sendRandomly (true/false))
- Fixed right clicking villagers
- Add multiple player commands
- Fixed npcs sometimes not being visible on folia

## v2.0.7 [!badge variant="info" text="2024-01-09"]

- You can now set multiple npc messages:
  - /Npc message (npc name) add (message) - adds a new message
  - /Npc message (npc name) set (index) (message) - sets a message at an index
  - /Npc message (npc name) remove (index) - removes a message at an index
  - /Npc message (npc name) clear - removes all messages
- Added support for legacy colors in the display name
- Added player sitting pose (/npc attribute pose sitting)
- Added the "/npc info (npc)" command
- You can disable the "on interaction cooldown" message in the config (disable_interaction_cooldown_message=true)
- Added config option to not register commands (helpful if you use FancyNpcs as library)
- Fixed setting showInTab to false not applying right away 
- Fixed npcs sometimes disappearing when teleporting from another world

## v2.0.6.1 [!badge variant="info" text="2023-12-13"] [!badge variant="danger" text="Hotfix"]

- Fixed "/npc glowingColor (npc) (color)" not working as intended

## v2.0.6 [!badge variant="info" text="2023-12-12"]

- Added support for 1.20.4 🎉
- Added interaction cooldown (cooldown between player interactions with the npc)
- Added teleport command (teleports the npc to specific coordinates)

## v2.0.5 [!badge variant="info" text="2023-11-05"]

- Added collidable command
- Added support to execute the /npc command in console
- Fixed problems with skins
- Fixed fox attributes
- Fixed player attributes
- Fixed NpcSpawnEvent was not fired
- Fixed npcs (randomly) disappearing

## v2.0.4 [!badge variant="info" text="2023-10-07"]

- Added support for 1.20.2

## v2.0.3 [!badge variant="info" text="2023-09-16"]

- Fixed saving removed npcs
- Fixed display name disappearing after changing type
- Fixed npc interaction for 1.19.4
- Removed npc-attributes feature flag -> it's now a official feature
- Added cat, shulker, wolf, pig and slime attributes

## v2.0.2.1 [!badge variant="info" text="2023-08-26"] [!badge variant="danger" text="Hotfix"]

- Fixed NullPointerException when (auto)saving.

## v2.0.2 [!badge variant="info" text="2023-08-26"]

- Fixed right clicking npcs
- Fixed sending entity metadata even when the player doesn't know about the entity
- Added feature flag system
- Added npc-attributes feature flag

## v2.0.1 [!badge variant="info" text="2023-08-17"]

- All entity types can now glow
- You can now edit all messages in lang.yml
- Added "/npc copy (npc) (new name)"
- Added option to remove npc message/serverCommand/playerCommand by setting the value to "none"
- The playerCommand can now execute non registered commands (fixes working with DeluxeCommands & DeluxeMenus)
- Many many bug fixes...

## v2.0.0 [!badge variant="info" text="2023-06-28"]

In this major update, FancyNpcs introduces a revamped project structure, empowering the plugin to seamlessly support multiple Minecraft versions within a single jar file. Gone are the days of limited compatibility - now you can enjoy the benefits of FancyNpcs across various versions!

Full changelog:

- Versatile Version Support: FancyNpcs 2.0.0 breaks free from its previous limitations by accommodating both newer and older Minecraft versions. The plugin now proudly supports the latest versions 1.19.4 and 1.20.1, ensuring compatibility and flexibility for your Minecraft server.
- Added PlaceholderAPI support
- Several fixes
- Added example images and a new big title to the README.md