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.
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>