Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
InteractiveNPC
InteractiveNPC is a Paper 1.21.11 plugin that allows you to create fully customizable and interactive NPCs using Minecraft's native mannequins.
Create NPCs with custom names, player skins, interactive dialogues, buttons, and actions such as teleportation, commands, messages, sounds, particles, and more.
No external dependencies, no NMS, and no repetitive tasks required.
โจ Features
- ๐ง NPCs based on Minecraft's native mannequins
- ๐ญ Custom player skins
- ๐ฌ Native Minecraft dialogues
- ๐ Interactive buttons
- โก Multiple actions per button
- ๐ Teleportation
- ๐ป Command execution
- ๐ฌ Player messages
- ๐ Sounds
- โจ Particles
- ๐ Multiple dialogue navigation
- ๐ Conditional buttons
- ๐ Level-based conditions
- ๐ Item-based conditions
- ๐ World-based conditions
- ๐ก๏ธ Permission-based conditions
- โฑ๏ธ Delayed actions
- ๐ Fully YAML-configurable
- ๐ฅ๏ธ In-game GUI editor
- ๐ Reload configuration without restarting
- ๐ Server-side interaction validation
- ๐ซ Protected NPC commands
๐ Commands
All commands require the npc.admin permission.
/npc create <id>
Creates a new NPC at your current location.
/npc create guide_pvp
The ID can only contain letters, numbers, _ or -.
/npc edit <id>
Opens the NPC editor.
/npc edit guide_pvp
The editor allows you to modify:
- Name
- Skin
- Dialogue
- Messages
- Buttons
- Actions
- Permissions
- Location
- NPC deletion
/npc remove <id>
Removes an NPC.
/npc remove guide_pvp
Alias:
/npc delete <id>
The associated dialogue is preserved.
/npc list
Displays all NPCs and provides quick Teleport and Edit buttons.
/npc list
/npc tp <id>
Teleports you to an NPC.
/npc tp guide_pvp
/npc reload
Reloads NPCs, dialogues and configuration without restarting the server.
/npc reload
Command Alias
The plugin also provides:
/inpc
as an alias for /npc.
๐ Actions
Each button can execute one or multiple actions.
Actions can optionally use:
delay: 20
20 ticks = 1 second.
command
Executes a command.
- type: command
as: console
command: "tp %player% 100 65 100"
Execution modes:
as: console
or:
as: player
message
Sends a message to the player.
- type: message
message: "ยงaWelcome %player%!"
teleport
Teleports the player to a configured location.
sound
Plays a sound for the player.
- type: sound
sound: ENTITY_PLAYER_LEVELUP
particle
Displays particles.
- type: particle
particle: HAPPY_VILLAGER
dialogue
Opens another dialogue.
- type: dialogue
value: pvp_rules
Return to the previous dialogue:
- type: dialogue
value: "@back"
close
Closes the dialogue.
- type: close
๐ Conditions
Buttons can be displayed only when specific conditions are met.
All conditions support:
negate: true
to invert the condition.
Permission Condition
conditions:
- type: permission
permission: "server.vip"
The button will only be available to players with the required permission.
Level Condition
Checks the player's level.
conditions:
- type: level
min: 10
max: 50
Item Condition
Checks whether the player has a specific item.
conditions:
- type: item
material: DIAMOND
amount: 5
World Condition
Restricts a button to a specific world.
conditions:
- type: world
world: lobby
Unmet Conditions
When a condition is not met, the button can either be hidden:
when-unmet: hide
or disabled:
when-unmet: disable
๐ Dialogue Example
id: pvp_rules
title: "ยงbPvP Rules"
messages:
- "ยง7Choose a rule to learn more:"
buttons:
- id: rule1
text: "ยงf1. Respect other players"
actions:
- type: dialogue
value: pvp_rule_1
- id: rule2
text: "ยงf2. Prohibited equipment"
actions:
- type: dialogue
value: pvp_rule_2
- id: back
text: "ยงeโ Back"
actions:
- type: dialogue
value: "@back"
๐ง NPC Example
id: guide_pvp
name: "ยงePvP Guide"
subtitle: "ยง7Right-click to interact"
skin: "Notch"
dialogue: pvp_intro
location:
world: "lobby"
x: 120.5
y: 65
z: -32.5
yaw: 90
pitch: 0
interaction:
sound: ENTITY_VILLAGER_TRADE
particle: HAPPY_VILLAGER
๐ค Placeholders
The following placeholders can be used in messages and commands:
%player%
%player_uuid%
%world%
%x%
%y%
%z%
%npc_id%
%npc_name%
%npc_x%
%npc_y%
%npc_z%
Example:
message: "ยงaWelcome %player% to the lobby!"
๐ Permissions
npc.admin
Grants access to:
- All
/npccommands - NPC editor
- NPC management
- Editor interactions
Default:
op
๐ก๏ธ Security
InteractiveNPC includes several built-in protections:
- Secure NPC commands
- Dangerous command blacklist
- Sanitized placeholders
- Console execution by default
- Permission checks
- Server-side condition validation
- Button availability validation
- Dialogue session validation
- NPC distance validation
NPC mannequins are automatically recreated from their YAML configuration when their chunks are loaded.
โ๏ธ Configuration
NPCs are stored in:
plugins/InteractiveNPC/npcs/
Dialogues are stored in:
plugins/InteractiveNPC/dialogues/
After making changes, simply run:
/npc reload
to apply them without restarting your server.
๐ Perfect For
InteractiveNPC is ideal for:
- ๐ฎ Server lobbies
- ๐ Minigame servers
- โ๏ธ PvP servers
- ๐บ๏ธ Adventure maps
- ๐ญ Story-driven maps
- ๐ง RPG servers
- ๐ Tutorial NPCs
- ๐ช Teleportation NPCs
- ๐ Interactive dialogue systems
Turn simple Minecraft mannequins into powerful, interactive and fully configurable NPCs with InteractiveNPC.


