{"id":114197,"date":"2026-06-06T20:34:41","date_gmt":"2026-06-06T17:34:41","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/"},"modified":"2026-06-06T20:34:41","modified_gmt":"2026-06-06T17:34:41","slug":"npc-plugin","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/","title":{"rendered":"NPC Plugin"},"content":{"rendered":"<p># NpcPlugin<\/p>\n<p>Create, customize, and manage player-like NPCs with an in-game editor GUI, click actions, AI goals, and a built-in path system.<\/p>\n<p>> ## \u26a0\ufe0f Alpha Notice \u26a0\ufe0f<br \/>\n><br \/>\n> The alpha version allows you to add entity AI goals to NPCs.<br \/>\n> It is not fully tested yet and may be unstable.<br \/>\n><br \/>\n> If you encounter any issues, bugs, or have feature suggestions, feel free to contact me.<\/p>\n<p>**If you have any suggestions or encounter any issues, you can use the issue page or via Discord @Eisi05**<\/p>\n<p>*If you want to make a tutorial video about it, feel free to do so*<\/p>\n<p>## Supported Versions<\/p>\n<p>> **Spigot**: *1.17.1 &#8211; 26.1.2*<br \/>\n><br \/>\n> **Paper**: *1.21 &#8211; 26.1.2*<\/p>\n<p>## Overview<\/p>\n<p>&#8211; **In-game editor**: create and configure NPCs directly on your server.<br \/>\n&#8211; **Click Actions**: build action chains for left\/right\/both clicks.<br \/>\n&#8211; **Path system**: create and reuse paths (including visualization + testing).<\/p>\n<p>## Getting Started<\/p>\n<p>&#8211; `\/npc create`<br \/>\n&#8211; `\/npc edit`<br \/>\n&#8211; Right-click an NPC to open its editor.<\/p>\n<p>## Links<\/p>\n<p>&#8211; **Plugin docs**: https:\/\/github.com\/Eisi05\/NpcPlugin-Spigot\/wiki<br \/>\n&#8211; **API \/ Developer docs**:<br \/>\n    &#8211; Spigot: https:\/\/github.com\/Eisi05\/NpcApi-Spigot\/wiki<br \/>\n    &#8211; Paper: https:\/\/github.com\/Eisi05\/NpcApi-Paper\/wiki<\/p>\n<p>## Highlights<\/p>\n<p>&#8211; **In-game NPC editor**<br \/>\n    &#8211; Toggle edit-mode and configure NPCs directly by interacting with them.<br \/>\n    &#8211; Edit common properties like name, skin, equipment, glow, visibility, tab-list, pose, and more.<br \/>\n&#8211; **Click Actions (Left \/ Right \/ Both)**<br \/>\n    &#8211; Build action chains that run when players click an NPC.<br \/>\n    &#8211; Built-in action types include:<br \/>\n        &#8211; `Command` (run commands with placeholders + variables)<br \/>\n        &#8211; `Server` (send players to a BungeeCord server)<br \/>\n        &#8211; `Wait` (wait by time *or* by command trigger)<br \/>\n        &#8211; `Animation` (play an animation)<br \/>\n        &#8211; `Path` (make the NPC walk along a saved path)<br \/>\n        &#8211; `SetVariable` (set local\/instance\/global numeric variables)<br \/>\n        &#8211; `Condition` (run a sub-chain if an expression is true)<br \/>\n        &#8211; `Loop` (repeat a sub-chain; while-loop or for-loop)<br \/>\n        &#8211; `Npc` (apply NPC options per-player or globally as an action)<br \/>\n        &#8211; `Stop` (stop the chain)<br \/>\n&#8211; **Path system**<br \/>\n    &#8211; Create paths using points, visualize them, test them with a temporary NPC, and reuse them in NPC actions.<br \/>\n&#8211; **AI Goals**<br \/>\n    &#8211; Configure NPC behavior with built-in goals: Walk to Location, Follow Entity, Attack Entity, Look Around, Wait, and Wander.<br \/>\n    &#8211; Set target predicates using expressions for dynamic entity selection.<br \/>\n&#8211; **Expression Parser**<br \/>\n    &#8211; Use mathematical expressions with variables, functions, and boolean logic.<br \/>\n    &#8211; Support for local, instance, and global variables.<br \/>\n    &#8211; Execute commands within expressions and use their results.<br \/>\n&#8211; **Localization + PlaceholderAPI**<br \/>\n    &#8211; Ships with language files (default `en`).<br \/>\n    &#8211; PlaceholderAPI is supported (soft-depend): placeholders can be used in plugin messages where applicable.<\/p>\n<p>## Guides<\/p>\n<details>\n<summary><strong>Getting Started (Installation + Quick Start)<\/strong><\/summary>\n<p>### Installation<\/p>\n<p>1. Download the jar and place it into your server\u2019s `plugins\/` folder.<br \/>\n2. Start the server once.<br \/>\n3. Configure (optional):<br \/>\n    &#8211; `plugins\/NpcPlugin\/config.yml`<br \/>\n    &#8211; `plugins\/NpcPlugin\/lang\/<language>\/*.yml`<br \/>\n4. Restart or run `\/npc reload`.<\/p>\n<p>### Quick Start<\/p>\n<p>#### 1) Create an NPC<\/p>\n<p>&#8211; `\/npc create`<\/p>\n<p>#### 2) Enable edit-mode<\/p>\n<p>&#8211; `\/npc edit`<\/p>\n<p>While edit-mode is enabled:<\/p>\n<p>&#8211; **Interact with an NPC** to open its editor GUI.<\/p>\n<p>If the NPC is **not editable**, you\u2019ll get a message like `This NPC is not editable!`.<\/p>\n<p>#### 3) Configure NPC options in the GUI<\/p>\n<p>The GUI lets you change things like:<\/p>\n<p>&#8211; Name<br \/>\n&#8211; Skin (player name \/ UUID \/ local `.png` file)<br \/>\n&#8211; \u201cUse Player Skin\u201d (per-player skin)<br \/>\n&#8211; Equipment slots<br \/>\n&#8211; Visibility \/ enabled state<br \/>\n&#8211; Tab list visibility<br \/>\n&#8211; Hide nametag<br \/>\n&#8211; Pose<br \/>\n&#8211; Skin parts<br \/>\n&#8211; Glowing + color<br \/>\n&#8211; Look-at-player radius \/ interval<br \/>\n&#8211; Scale<br \/>\n&#8211; Teleport to NPC \/ teleport NPC to you<br \/>\n&#8211; Delete NPC<\/p>\n<\/details>\n<details>\n<summary><strong>Click Actions<\/strong><\/summary>\n<p>## Click Actions (Left \/ Right \/ Both)<\/p>\n<p>In the NPC GUI go to **Click Action**.<\/p>\n<p>You can configure actions separately for:<\/p>\n<p>&#8211; **Left click**<br \/>\n&#8211; **Right click**<br \/>\n&#8211; **Both** (combined)<\/p>\n<p>You can create an action chain by adding multiple actions.<\/p>\n<p>### Action editing tips<\/p>\n<p>&#8211; **Remove an action**: middle-click an existing action.<br \/>\n&#8211; **Add actions quickly**: shift-click an action type to append it.<br \/>\n&#8211; **Reorder \/ insert**: pick up an action type onto your cursor and click a slot.<\/p>\n<p>### Common action types<\/p>\n<p>#### `Command`<\/p>\n<p>Executes a command.<\/p>\n<p>&#8211; Input can be with or without leading `\/` (the plugin stores it as `\/<command>`).<br \/>\n&#8211; Placeholders supported:<br \/>\n    &#8211; `{player}` \/ `%player%` \/ `<player>`<br \/>\n    &#8211; `{player_name}` \/ `%player_name%` \/ `<player_name>`<br \/>\n&#8211; Supports variables\/expressions via the plugin action system.<br \/>\n&#8211; There is optional syntax validation.<\/p>\n<p>Example:<\/p>\n<p>&#8211; `warp spawn`<br \/>\n&#8211; `server hub`<br \/>\n&#8211; `msg {player} Welcome!`<\/p>\n<p>#### `Server` (BungeeCord)<\/p>\n<p>Sends the player to another BungeeCord server.<\/p>\n<p>Example server name:<\/p>\n<p>&#8211; `hub`<\/p>\n<p>#### `Wait`<\/p>\n<p>Pauses the chain before continuing.<\/p>\n<p>You can switch between two modes in the editor:<\/p>\n<p>##### Time mode<\/p>\n<p>&#8211; Left\/Right click to adjust the time<br \/>\n&#8211; Shift+Left\/Shift+Right for bigger steps<br \/>\n&#8211; Range is clamped (min `0.05s`, max `600s`)<\/p>\n<p>##### Command mode<\/p>\n<p>Instead of waiting for time, the chain waits until an admin triggers it:<\/p>\n<p>&#8211; `Wait` stores a **name** (string)<br \/>\n&#8211; The chain continues only after:<br \/>\n    &#8211; `\/npc wait <player> <name> [values&#8230;]`<\/p>\n<p>If `[values&#8230;]` are provided, they are exposed to the next actions as local variables:<\/p>\n<p>&#8211; `<name>-0`, `<name>-1`, &#8230; (numeric values; invalid numbers become `0.0`)<\/p>\n<p>This is useful to wait for external systems (minigames, scripted events, etc.).<\/p>\n<p>##### Note (Path)<\/p>\n<p>The `Path` action also uses the same wait mechanism internally: the chain continues when the NPC finishes walking.<\/p>\n<p>#### `Path`<\/p>\n<p>Makes the NPC walk along a saved path.<\/p>\n<p>&#8211; You pick a path name (must exist; same world) + a speed (`0.01`\u2013`1.0`).<br \/>\n&#8211; Optional flags:<br \/>\n    &#8211; For all (everyone sees the NPC walking)<br \/>\n    &#8211; Change real location (updates the NPC&#8217;s real location while walking)<\/p>\n<p>#### `Animation`<\/p>\n<p>Plays an animation on the NPC for the clicking player.<\/p>\n<p>&#8211; Left click: next animation<br \/>\n&#8211; Right click: previous animation<\/p>\n<p>#### `SetVariable`<\/p>\n<p>Sets a numeric variable.<\/p>\n<p>&#8211; Type:<br \/>\n    &#8211; Local (stored per-player)<br \/>\n    &#8211; Instance (stored on the NPC)<br \/>\n    &#8211; Global (stored server-wide; persisted in `global-variables.yml`)<br \/>\n&#8211; Name must match `^[a-zA-Z_][a-zA-Z0-9_-]*$`<br \/>\n&#8211; Value is an expression<\/p>\n<p>If the value is missing, the action does nothing (admins get a warning).<\/p>\n<p>#### `Condition`<\/p>\n<p>Runs a **sub-chain** only if its expression is `true`.<\/p>\n<p>&#8211; You edit the sub-chain like a normal action list<br \/>\n&#8211; The condition expression is edited via the &#8220;value&#8221; item<\/p>\n<p>#### `Loop`<\/p>\n<p>Repeats a sub-chain.<\/p>\n<p>There are two loop types:<\/p>\n<p>##### While-loop<\/p>\n<p>&#8211; Repeats while the expression is `true`<\/p>\n<p>##### For-loop<\/p>\n<p>&#8211; Repeats with an integer loop index<br \/>\n&#8211; Configurable values:<br \/>\n    &#8211; Start (optional; default `0`)<br \/>\n    &#8211; End (required)<br \/>\n    &#8211; Step (optional; default `1`)<\/p>\n<p>You can change the loop type by **Shift-clicking** the action.<\/p>\n<p>#### `Npc`<\/p>\n<p>Opens a special editor that lets you apply NPC options *as an action*.<\/p>\n<p>This is mainly used to change how the NPC looks\/behaves for:<\/p>\n<p>&#8211; Only the clicking player (per-player override)<br \/>\n&#8211; Everyone (global)<\/p>\n<p>Two flags exist:<\/p>\n<p>&#8211; Change globally: applies the configured options to the NPC\u2019s global options<br \/>\n&#8211; Reset to default: removes per-player overrides and resets to the NPC\u2019s defaults<\/p>\n<p>#### `Stop`<\/p>\n<p>Stops the current chain immediately (and stops nested chains too).<\/p>\n<p>#### Run-on-show<\/p>\n<p>In the action editor you can enable **Run on show**.<\/p>\n<p>If enabled, the chain triggers when the NPC is shown to a player (not only when clicked).<\/p>\n<\/details>\n<details>\n<summary><strong>Path System Guide<\/strong><\/summary>\n<p>## Path System Guide<\/p>\n<p>Paths are shared and stored in:<\/p>\n<p>&#8211; `plugins\/NpcPlugin\/paths.yml`<\/p>\n<p>### Create a path from points<\/p>\n<p>1. Add points at your current location:<br \/>\n    &#8211; `\/npc path point add`<\/p>\n<p>   Or add at a specific index:<br \/>\n    &#8211; `\/npc path point add <index>`<\/p>\n<p>2. List points:<br \/>\n    &#8211; `\/npc path point list [page]`<\/p>\n<p>3. Visualize \/ toggle visualization of current points:<br \/>\n    &#8211; `\/npc path visualize points`<\/p>\n<p>4. Create the path:<br \/>\n    &#8211; `\/npc path create <name> [maxIterations] [allowDiagonalMovement]`<\/p>\n<p>After creation you can visualize it:<\/p>\n<p>&#8211; `\/npc path visualize <name>`<\/p>\n<p>### Record a path by walking<\/p>\n<p>1. Start recording:<br \/>\n    &#8211; `\/npc path record start`<\/p>\n<p>2. Walk the route.<\/p>\n<p>3. Stop recording:<br \/>\n    &#8211; `\/npc path record stop`<\/p>\n<p>4. Create the path:<br \/>\n    &#8211; `\/npc path create <name>`<\/p>\n<p>### Edit an existing path<\/p>\n<p>&#8211; `\/npc path edit <name>`<\/p>\n<p>This loads the saved path\u2019s waypoints into the point list so you can remove\/add points and re-create it.<\/p>\n<p>### List \/ delete \/ test paths<\/p>\n<p>&#8211; `\/npc path list [page]`<br \/>\n&#8211; `\/npc path delete <name>`<br \/>\n&#8211; `\/npc path test <name> [speed]`<\/p>\n<\/details>\n<details>\n<summary><strong>Goals Guide<\/strong><\/summary>\n<p>## Goals Guide<\/p>\n<p>Goals give NPCs autonomous behavior. Configure them via the NPC editor GUI.<\/p>\n<p>### Available Goals<\/p>\n<p>&#8211; **Walk to Location**: NPC walks to a specific location using pathfinding<br \/>\n&#8211; **Follow Entity**: NPC follows a target entity by UUID<br \/>\n&#8211; **Attack Entity**: NPC attacks nearby matching entities<br \/>\n&#8211; **Look Around**: NPC looks around randomly (idle behavior)<br \/>\n&#8211; **Wait**: NPC waits for a specified duration<br \/>\n&#8211; **Wander**: NPC wanders randomly within a radius<\/p>\n<p>### Attack Entity Predicates<\/p>\n<p>Target entities using expressions with variables:<\/p>\n<p>&#8211; `$distance` &#8211; Distance to NPC<br \/>\n&#8211; `$entity.x`, `$entity.y`, `$entity.z` &#8211; Entity position<br \/>\n&#8211; `$entity.health` &#8211; Entity health<br \/>\n&#8211; `$npc.x`, `$npc.y`, `$npc.z` &#8211; NPC position<br \/>\n&#8211; `[if entity @s[type=zombie]]` &#8211; Command-based entity type check<\/p>\n<p>Example predicates:<br \/>\n&#8211; `$distance < 5` - Only attack within 5 blocks\n- `$entity.health < 10` - Attack low health entities\n- `$distance < 10 &#038;&#038; $entity.health > 5` &#8211; Combined conditions<\/p>\n<p>For more details, see the full Goals documentation.<\/p>\n<\/details>\n<details>\n<summary><strong>Expression Parser Guide<\/strong><\/summary>\n<p>## Expression Parser Guide<\/p>\n<p>Use mathematical expressions in click actions, goal conditions, and variable calculations.<\/p>\n<p>### Supported Elements<\/p>\n<p>**Operators**: `+`, `-`, `*`, `\/`, `^` (power), `&#038;&#038;`, `||`, `!`, `==`, `!=`, `<`, `>`, `<=`, `>=`<\/p>\n<p>**Math Functions**: `sin()`, `cos()`, `tan()`, `sqrt()`, `log()`, `exp()`, `ceil()`, `floor()`, `round()`, `trunc()`, `abs()`<\/p>\n<p>**Constants**: `PI`, `E`<\/p>\n<p>### Variables<\/p>\n<p>&#8211; `$varName` &#8211; Auto-resolve (local \u2192 instance \u2192 global)<br \/>\n&#8211; `$global.varName` &#8211; Server-wide variable<br \/>\n&#8211; `$instance.varName` &#8211; NPC-specific variable<br \/>\n&#8211; `$local.varName` &#8211; Player-specific variable<\/p>\n<p>**Special Variables**:<br \/>\n&#8211; `$self.rightClick` \/ `$self.leftClick` &#8211; Click type (1 or 0)<br \/>\n&#8211; `$self.sneaking`, `$self.flying`, `$self.op` &#8211; Player state<br \/>\n&#8211; `$loop.index` &#8211; Loop iteration index<\/p>\n<p>### Command Execution<\/p>\n<p>&#8211; `(\/command)` &#8211; Execute command inside expression<br \/>\n&#8211; `\/command` &#8211; Standalone command execution<\/p>\n<p>Examples:<br \/>\n&#8211; `2 + (\/count players)` &#8211; Use command result in calculation<br \/>\n&#8211; `$global.score + 1` &#8211; Increment variable<br \/>\n&#8211; `($entity.health < 10) * 5` - Conditional value\n\nFor the full syntax reference, see the Expression Parser documentation.\n\n<\/details>\n<details>\n<summary><strong>Commands<\/strong><\/summary>\n<p>## Commands<\/p>\n<p>### Core<\/p>\n<p>&#8211; `\/npc create`<br \/>\n&#8211; `\/npc copy <uuid>`<br \/>\n&#8211; `\/npc edit` (toggle edit-mode)<br \/>\n&#8211; `\/npc list` (opens NPC list GUI)<br \/>\n&#8211; `\/npc tp <uuid>`<br \/>\n&#8211; `\/npc tphere <uuid>`<br \/>\n&#8211; `\/npc reload`<br \/>\n&#8211; `\/npc version`<br \/>\n&#8211; `\/npc update` (checks for a new plugin version)<\/p>\n<p>### Config<\/p>\n<p>&#8211; `\/npc config reload`<br \/>\n&#8211; `\/npc config debug [true|false]`<br \/>\n&#8211; `\/npc config avoid-command-check [true|false]`<br \/>\n&#8211; `\/npc config look-at-update-interval [ticks]`<br \/>\n&#8211; `\/npc config input-time [seconds]`<br \/>\n&#8211; `\/npc config auto-update [true|false]`<br \/>\n&#8211; `\/npc config placeholder-timer [ticks]`<br \/>\n&#8211; `\/npc config list`<\/p>\n<p>### Exceptions (startup load failures)<\/p>\n<p>&#8211; `\/npc exceptions [page]`<br \/>\n&#8211; `\/npc exceptions show <name>`<br \/>\n&#8211; `\/npc exceptions delete <name>`<\/p>\n<p>### Paths<\/p>\n<p>All path commands are under:<\/p>\n<p>&#8211; `\/npc path &#8230;`<\/p>\n<p>Main subcommands:<\/p>\n<p>&#8211; `point add [index] [location] [rotation]`<br \/>\n&#8211; `point remove [index|location]`<br \/>\n&#8211; `point list [page]`<br \/>\n&#8211; `point clear`<br \/>\n&#8211; `create [name] [maxIterations] [allowDiagonalMovement]`<br \/>\n&#8211; `delete <name>`<br \/>\n&#8211; `list [page]`<br \/>\n&#8211; `visualize [name]`<br \/>\n&#8211; `visualize points`<br \/>\n&#8211; `record start|stop`<br \/>\n&#8211; `test <name> [speed]`<br \/>\n&#8211; `edit <name>`<\/p>\n<p>### Variables<\/p>\n<p>Manage server-wide global variables via commands:<\/p>\n<p>&#8211; `\/npc variable list` &#8211; List all global variables<br \/>\n&#8211; `\/npc variable get <name>` &#8211; Get a variable&#8217;s value<br \/>\n&#8211; `\/npc variable set <name> <expression>` &#8211; Set a variable (supports expressions)<br \/>\n&#8211; `\/npc variable delete <name>` &#8211; Delete a variable<\/p>\n<p>Variables can also be managed via the SetVariable click action and used in expressions throughout the plugin.<\/p>\n<\/details>\n<details>\n<summary><strong>Configuration<\/strong><\/summary>\n<p>## Configuration (`config.yml`)<\/p>\n<p>&#8211; `look-at-update-interval`:<br \/>\n    &#8211; Time in ticks between \u201clook at player\u201d updates.<br \/>\n&#8211; `avoid-command-check`:<br \/>\n    &#8211; If `true`, commands added to NPC actions will not be strictly validated.<br \/>\n&#8211; `debug`:<br \/>\n    &#8211; Enables extra debug logging.<br \/>\n&#8211; `input-time`:<br \/>\n    &#8211; Conversation timeout in seconds (if `< 0`, no timeout).\n- `auto-update`:\n    - Automatically updates NPCs after option changes.\n- `placeholderTimer`:\n    - Time in ticks between placeholder refreshes.\n\n<\/details>\n<details>\n<summary><strong>Troubleshooting<\/strong><\/summary>\n<p>## Troubleshooting<\/p>\n<p>&#8211; **\u201cThis plugin does not support Paper servers!\u201d**<br \/>\n    &#8211; You are running the **Spigot** build on a **Paper** server. Install the Paper build instead.<br \/>\n&#8211; **Server action does nothing**<br \/>\n    &#8211; Ensure BungeeCord is set up and the server names match your proxy configuration.<br \/>\n&#8211; **Can\u2019t open the editor GUI**<br \/>\n    &#8211; Make sure you:<br \/>\n        &#8211; Have `npc.admin`<br \/>\n        &#8211; Enabled edit-mode via `\/npc edit`<br \/>\n        &#8211; The NPC is marked as editable<\/p>\n<\/details>\n<details>\n<summary><strong>bStats<\/strong><\/summary>\n<p>![bStats](https:\/\/bstats.org\/signatures\/bukkit\/NpcPlugin%20-%20Eisi05.svg)<\/p>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Customizable NPCs via GUI and API<\/p>\n","protected":false},"featured_media":114198,"template":"","meta":{"_minecraft_slug":"npc-plugin","_minecraft_project_id":"lMVQTkWl","_minecraft_author":"Eisi05","_minecraft_license":"MIT","_minecraft_downloads":23571,"_minecraft_follows":32,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"npc-plugin.zip","_minecraft_size_bytes":31881797,"_minecraft_version_count":69,"_minecraft_updated_at":"2026-05-16T00:07:59.169192Z","_minecraft_date_created":"2025-09-09T08:42:49.927502Z","_minecraft_date_modified":"2026-05-03T14:47:57.164848Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/npc-plugin","_minecraft_icon_attachment_id":114198,"_minecraft_imported_at":"2026-06-06T17:34:42+00:00","_minecraft_import_hash":"ac9f82a2a98e638ccc5ff94c084dd5f6","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[126,127,128,129,123,92],"mod_loader":[132,133,134],"minecraft_version":[50,51,52,53,54,55,56,57,58,59,36,60,93,94,101,102,62,37,40,41,73,74,38,78,79,80,81,82,83,167,163],"class_list":["post-114197","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-management","mod_category-paper","mod_category-purpur","mod_category-spigot","mod_category-technology","mod_category-utility","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-17-1","minecraft_version-1-18","minecraft_version-1-18-1","minecraft_version-1-18-2","minecraft_version-1-19","minecraft_version-1-19-1","minecraft_version-1-19-2","minecraft_version-1-19-3","minecraft_version-1-19-4","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9","minecraft_version-26-1","minecraft_version-26-1-1","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NPC Plugin - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NPC Plugin - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Customizable NPCs via GUI and API\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/\",\"name\":\"NPC Plugin - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp\",\"datePublished\":\"2026-06-06T17:34:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/npc-plugin\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"NPC Plugin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NPC Plugin - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/","og_locale":"en_US","og_type":"article","og_title":"NPC Plugin - Minecraft","og_description":"Customizable NPCs via GUI and API","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/","name":"NPC Plugin - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp","datePublished":"2026-06-06T17:34:41+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/npc-plugin-icon-8e1b68d4ed96b6319d918aa5fbd7572ee3ce6ebd_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/npc-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"NPC Plugin"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/114197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/114198"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=114197"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=114197"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=114197"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=114197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}