Ghost Players adds fully simulated NPCs to your server — they move with real pathing, engage in combat with tunable presets, and (optionally) carry on ambient conversations powered by OpenAI. They appear in the server list, respect LuckPerms metadata for prefixes and ranks, and are PacketEvents-compatible.
Built for the modern Paper / Folia stack, optimized to keep your tick rate intact even with fleets of NPCs roaming an active server.
What you can do
- Spawn ghost NPCs with real-looking movement —
/ghost spawn,/ghost random, or scripted via configuration. Pathing presets cover casual, balanced, aggressive, and sandbox. - Built-in combat logic — chase range, damage, cooldowns. NPCs hit back when attacked, can be hostile to players, mobs, or both.
- Server-list ping support — ghosts can appear online in the player list. Tune fake online counts and sample entries to match your network’s vibe.
- AI-driven ambient chat — local fallback generator out of the box, OpenAI when you supply a key. Configure prompts, response delays (typing-style), per-player triggers, and global cooldowns.
- LuckPerms-aware display metadata — ghosts inherit prefixes and suffixes from a configurable rank.
- Scriptable per-NPC behavior —
goto,follow,wander,standstill, hostility toggles, kill/killall, full debug mode for path visualization.
Why operators run it
Empty servers feel dead. Ghost Players makes a quiet world feel inhabited without faking concurrent users in a misleading way — your real players see other “people” exploring, fighting, chatting. It’s also a powerful tool for stress-testing combat tuning, pathfinding, and chat moderation pipelines under realistic conditions.
Compatibility
- Java 21, Paper or Folia 1.21.x
- LuckPerms (optional) for prefix/suffix display
- PacketEvents (optional) — Ghost Players creates embedded channels and suppresses injection kicks by default; toggle in
compat.packetevents - OpenAI (optional) —
behavior.chat.openai.api-keyorGHOSTPLAYERS_OPENAI_KEYenv var
A peek at the commands
/ghost spawn <name> [rank] Spawn a single ghost
/ghost random Spawn a random ghost
/ghost follow <id> <player> Tail a player
/ghost goto <id> <x> <y> <z> Send to coords
/ghost hostility <id> <target> Set who they fight
/ghost chat key <set|clear> Manage OpenAI key
/ghost reload Reload config
Permissions are wildcarded under ghost.* with granular nodes for each verb.
What’s next
The roadmap covers Folia region scheduling polish, more pathing presets, and a built-in “scenario” system for designing NPC behaviors as YAML scripts. Active development — file requests on the marketplace listing.