ProgressionNPCWork
ProgressionNPCWork is currently a merged Paper plugin that combines NPC, quest, shop, and companion systems under /pnw and already includes dialogue book UI, reload/config features, Bedrock support, and companion logic.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
ProgressionNPCWork
ProgressionNPCWork
- ProgressionNPCWork is a single, merged Paper plugin that bundles four systems into one clean workflow:
- ProgressionNPC → persistent NPCs with admin tools, skins, and equipment
- ProgressionQuest → YAML-driven quests with NPC dialogue + clickable chat actions
- ProgressionShop → NPC-bound buy/sell shops with GUI
- ProgressionNPCCompanion → quest companions (followers) with optional combat + escort targets + gear transfer
Everything is stored in simple files under plugins/ProgressionNPCWork/, so you can manage content with commands, in-game editors, or raw YAML.
Highlights
- One plugin, four core RPG systems (NPCs, Quests, Shops, Companions)
- NPC dialogue + quests shown directly in chat (with clickable Accept / Turn-in)
- Quest safety rules: accept/turn-in only works after talking to the correct NPC
- Main-quest chains (Hauptquest) + standalone side quests (Nebenquest)
- Loot turn-in parsing (supports multiple items + optional cmd=...)
- Companion system:
- smooth follow behavior (does not reposition just because you rotate)
- optional combat assist (never targets players)
- escort goal support (auto-despawn when target is reached)
- Shift + Rightclick companion to open an equip GUI
- auto-return companion gear on quest end/fail (and on next join if anything is left behind)
- ### Shop system:
- file-based shops (shops/*.yml)
- buy + sell entries
- supports ProgressionAPI item specs (if available)
- uses ProgressionEconomy for actual money handling (if installed)
Why you’ll love it
- You can build a real MMO-style quest hub fast: create NPC → add dialogue → create quest → activate → done.
- Players get a clear flow: talk → accept → deliver items → turn in, with minimal commands.
- It’s built for server iteration: edit YAML, run reload commands, keep moving.
- You can create escort / companion quests without custom scripting.
Features
- NPC System (ProgressionNPC)
- NPC creation/removal/listing
- “Look at players” toggle
- “Animations / AI” toggle + anchor control (keeps NPC at its position)
- Teleport NPC to you
- NPC equipment GUI (armor + main/offhand)
Skin system:
- save Mojang skin by player name
- assign saved skin to NPC
Protection:
- NPCs can’t be damaged
- interactions are controlled (no vanilla villager trading)
Quest System (ProgressionQuest)
- Quest definitions stored as YAML (quests/<id>.yml)
- NPC dialogue lines stored per NPC (npcs/<id>.yml)
- Clickable quest actions in chat under the dialogue:
- [Accept] → runs /pv quest accept <id>
- [Turn-in] → runs /pv quest turnin <id>
- Quest prerequisites (quest chains) via requires_completed
Turn-in rules:
- must talk to the correct NPC (context system)
- optional “visit NPCs before turn-in” requirement
Rewards:
- XP reward (grants real XP)
- Item rewards (grants real items)
- Coins reward is currently displayed (quest economy payout is not implemented here)
Quest book:
configurable questbook.yml (title/author/CMD/pages/layout)
- /pv give questbook
Shop System (ProgressionShop)
- Shops loaded from shops/*.yml
- Each shop is tied to an npcId
- GUI-based buy/sell
- Buy supports item spec (ProgressionAPI) or vanilla material definition
- Sell supports match rules (e.g., material-based)
- Optional background filler + navigation/back button settings
- Economy integration:
- requires ProgressionEconomy to actually buy/sell
Companion System (ProgressionNPCCompanion)
- Companion can be enabled per quest (companion.enabled)
- Optional combat support (companion.combat)
- Optional escort system:
- set a target location + radius
- when player + companion reach it, it marks reached and despawns the companion
Template NPC support:
- companion can copy name/skin/equipment from a chosen NPC template (companion.templateNpcId)
Gear transfer:
- Shift + Rightclick your companion → open equip GUI
- saved per-player/per-quest
- auto-returned on quest end/fail (and recovered on join if left over)
Setup
- Install
- Put the jar in your server’s plugins/ folder.
- Required dependency
- ProgressionAPI (hard depend)
- Optional dependencies (recommended)
- LibsDisguises + ProtocolLib (needed for player-skin disguises on NPCs/companions)
- ProgressionEconomy (needed for shop buy/sell to actually work)
First start
- The plugin generates files into:
- plugins/ProgressionNPCWork/config.yml
- plugins/ProgressionNPCWork/settings.yml
- plugins/ProgressionNPCWork/ui.yml
- plugins/ProgressionNPCWork/messages.yml
- plugins/ProgressionNPCWork/colors.yml
- plugins/ProgressionNPCWork/questbook.yml
- plugins/ProgressionNPCWork/tool_prices.yml
- plugins/ProgressionNPCWork/shops/ (creates an example shop if empty)
- plugins/ProgressionNPCWork/templates/ (quest + npc templates)
Compatibility
- Platform: Paper (uses Paper Brigadier command registration)
- Minecraft: api-version: 1.21 (built against Paper 1.21.11 API)
- Java: 21
- Depends: ProgressionAPI
- Softdepends: ProtocolLib, LibsDisguises, ProgressionEconomy
Basic workflow
- Create an NPC
- /pnpc npc create <name>
- (Optional) Give it a skin
- /pnpc skin save <skinId> <playerName>
- /pnpc skin set <npcId> <skinId>
- Add dialogue lines for that NPC
- Select NPC (admin, in-game): Shift-rightclick the NPC (or use selection tools)
- Add dialogue:
- /pv chat create <text...> [npcId]
- Create a quest
- Main quest chain:
- /pv hauptquest create <name...> [npcId]
- Side quest:
- /pv nebenquest create <name...> [npcId]
- Edit quest content
- /pv quest edit <questId> (opens clickable editor)
- Set task text, loot requirement, visited NPC requirements, rewards, companion settings
- Activate the quest
- /pv quest end <questId> (sets the quest to active)
- Player gameplay loop
- Player rightclicks the NPC → dialogue shows → quests appear with clickable buttons
- Accept → do task → turn-in
- (Optional) Add a shop to an NPC
- Create/edit shops/<shopKey>.yml
- Bind shop to NPC:
- /pshop bind <shopKey> <npcId>