
⚠️ Warning:
Versions 2.0.x-beta are currently not stable (might contain bugs), use at your own risk!
Last stable version is 1.7.6 for Spigot and 1.4.6-SNAPSHOT for Paper.
NpcPlugin
Create, customize, and manage player-like NPCs with an in-game editor GUI, click actions, and a built-in path system.
If you have any suggestions or encounter any issues, you can use the issue page or via Discord @Eisi05
If you want to make a tutorial video about it, feel free to do so
Supported Versions
Spigot: 1.17.1 - 1.21.11
Paper: 1.21 - 1.21.11
Overview
- In-game editor: create and configure NPCs directly on your server.
- Click Actions: build action chains for left/right/both clicks.
- Path system: create and reuse paths (including visualization + testing).
Getting Started
/npc create/npc edit- Right-click an NPC to open its editor.
Links
- Plugin docs: https://github.com/Eisi05/NpcPlugin-Spigot/wiki
- API / Developer docs:
Highlights
- In-game NPC editor
- Toggle edit-mode and configure NPCs directly by interacting with them.
- Edit common properties like name, skin, equipment, glow, visibility, tab-list, pose, and more.
- Click Actions (Left / Right / Both)
- Build action chains that run when players click an NPC.
- Built-in action types include:
Command(run commands with placeholders + variables)Server(send players to a BungeeCord server)Wait(wait by time or by command trigger)Animation(play an animation)Path(make the NPC walk along a saved path)SetVariable(set local/instance/global numeric variables)Condition(run a sub-chain if an expression is true)Loop(repeat a sub-chain; while-loop or for-loop)Npc(apply NPC options per-player or globally as an action)Stop(stop the chain)
- Path system
- Create paths using points, visualize them, test them with a temporary NPC, and reuse them in NPC actions.
- Localization + PlaceholderAPI
- Ships with language files (default
en). - PlaceholderAPI is supported (soft-depend): placeholders can be used in plugin messages where applicable.
- Ships with language files (default
Guides
Getting Started (Installation + Quick Start)
Installation
- Download the jar and place it into your server’s
plugins/folder. - Start the server once.
- Configure (optional):
plugins/NpcPlugin/config.ymlplugins/NpcPlugin/lang/<language>/*.yml
- Restart or run
/npc reload.
Quick Start
1) Create an NPC
/npc create
2) Enable edit-mode
/npc edit
While edit-mode is enabled:
- Interact with an NPC to open its editor GUI.
If the NPC is not editable, you’ll get a message like This NPC is not editable!.
3) Configure NPC options in the GUI
The GUI lets you change things like:
- Name
- Skin (player name / UUID / local
.pngfile) - “Use Player Skin” (per-player skin)
- Equipment slots
- Visibility / enabled state
- Tab list visibility
- Hide nametag
- Pose
- Skin parts
- Glowing + color
- Look-at-player radius / interval
- Scale
- Teleport to NPC / teleport NPC to you
- Delete NPC
Click Actions
Click Actions (Left / Right / Both)
In the NPC GUI go to Click Action.
You can configure actions separately for:
- Left click
- Right click
- Both (combined)
You can create an action chain by adding multiple actions.
Action editing tips
- Remove an action: middle-click an existing action.
- Add actions quickly: shift-click an action type to append it.
- Reorder / insert: pick up an action type onto your cursor and click a slot.
Common action types
Command
Executes a command.
- Input can be with or without leading
/(the plugin stores it as/<command>). - Placeholders supported:
{player}/%player%/<player>{player_name}/%player_name%/<player_name>
- Supports variables/expressions via the plugin action system.
- There is optional syntax validation.
Example:
warp spawnserver hubmsg {player} Welcome!
Server (BungeeCord)
Sends the player to another BungeeCord server.
Example server name:
hub
Wait
Pauses the chain before continuing.
You can switch between two modes in the editor:
Time mode
- Left/Right click to adjust the time
- Shift+Left/Shift+Right for bigger steps
- Range is clamped (min
0.05s, max600s)
Command mode
Instead of waiting for time, the chain waits until an admin triggers it:
Waitstores a name (string)- The chain continues only after:
/npc wait <player> <name> [values...]
If [values...] are provided, they are exposed to the next actions as local variables:
<name>-0,<name>-1, ... (numeric values; invalid numbers become0.0)
This is useful to wait for external systems (minigames, scripted events, etc.).
Note (Path)
The Path action also uses the same wait mechanism internally: the chain continues when the NPC finishes walking.
Path
Makes the NPC walk along a saved path.
- You pick a path name (must exist; same world) + a speed (
0.01–1.0). - Optional flags:
- For all (everyone sees the NPC walking)
- Change real location (updates the NPC's real location while walking)
Animation
Plays an animation on the NPC for the clicking player.
- Left click: next animation
- Right click: previous animation
SetVariable
Sets a numeric variable.
- Type:
- Local (stored per-player)
- Instance (stored on the NPC)
- Global (stored server-wide; persisted in
global-variables.yml)
- Name must match
^[a-zA-Z_][a-zA-Z0-9_-]*$ - Value is an expression
If the value is missing, the action does nothing (admins get a warning).
Condition
Runs a sub-chain only if its expression is true.
- You edit the sub-chain like a normal action list
- The condition expression is edited via the "value" item
Loop
Repeats a sub-chain.
There are two loop types:
While-loop
- Repeats while the expression is
true
For-loop
- Repeats with an integer loop index
- Configurable values:
- Start (optional; default
0) - End (required)
- Step (optional; default
1)
- Start (optional; default
You can change the loop type by Shift-clicking the action.
Npc
Opens a special editor that lets you apply NPC options as an action.
This is mainly used to change how the NPC looks/behaves for:
- Only the clicking player (per-player override)
- Everyone (global)
Two flags exist:
- Change globally: applies the configured options to the NPC’s global options
- Reset to default: removes per-player overrides and resets to the NPC’s defaults
Stop
Stops the current chain immediately (and stops nested chains too).
Run-on-show
In the action editor you can enable Run on show.
If enabled, the chain triggers when the NPC is shown to a player (not only when clicked).
Path System Guide
Path System Guide
Paths are shared and stored in:
plugins/NpcPlugin/paths.yml
Create a path from points
-
Add points at your current location:
/npc path point add
Or add at a specific index:
/npc path point add <index>
-
List points:
/npc path point list [page]
-
Visualize / toggle visualization of current points:
/npc path visualize points
-
Create the path:
/npc path create <name> [maxIterations] [allowDiagonalMovement]
After creation you can visualize it:
/npc path visualize <name>
Record a path by walking
-
Start recording:
/npc path record start
-
Walk the route.
-
Stop recording:
/npc path record stop
-
Create the path:
/npc path create <name>
Edit an existing path
/npc path edit <name>
This loads the saved path’s waypoints into the point list so you can remove/add points and re-create it.
List / delete / test paths
/npc path list [page]/npc path delete <name>/npc path test <name> [speed]
Commands
Commands
Core
/npc create/npc copy <uuid>/npc edit(toggle edit-mode)/npc list(opens NPC list GUI)/npc tp <uuid>/npc tphere <uuid>/npc reload/npc version/npc update(checks for a new plugin version)
Config
/npc config reload/npc config debug [true|false]/npc config avoid-command-check [true|false]/npc config look-at-update-interval [ticks]/npc config input-time [seconds]/npc config auto-update [true|false]/npc config placeholder-timer [ticks]/npc config list
Exceptions (startup load failures)
/npc exceptions [page]/npc exceptions show <name>/npc exceptions delete <name>
Paths
All path commands are under:
/npc path ...
Main subcommands:
point add [index] [location] [rotation]point remove [index|location]point list [page]point clearcreate [name] [maxIterations] [allowDiagonalMovement]delete <name>list [page]visualize [name]visualize pointsrecord start|stoptest <name> [speed]edit <name>
Configuration
Configuration (config.yml)
look-at-update-interval:- Time in ticks between “look at player” updates.
avoid-command-check:- If
true, commands added to NPC actions will not be strictly validated.
- If
debug:- Enables extra debug logging.
input-time:- Conversation timeout in seconds (if
< 0, no timeout).
- Conversation timeout in seconds (if
auto-update:- Automatically updates NPCs after option changes.
placeholderTimer:- Time in ticks between placeholder refreshes.
Troubleshooting
Troubleshooting
- “This plugin does not support Paper servers!”
- You are running the Spigot build on a Paper server. Install the Paper build instead.
- Server action does nothing
- Ensure BungeeCord is set up and the server names match your proxy configuration.
- Can’t open the editor GUI
- Make sure you:
- Have
npc.admin - Enabled edit-mode via
/npc edit - The NPC is marked as editable
- Have
- Make sure you:
