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.

36

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>

ADS