Paper-compatible Minecraft plugin that generates customized join/quit messages with an LLM.
- AI-generated messages for:
- first-time join
- returning join
- player quit
- Multiple prompts per event (randomly selected each time)
- Placeholder support so prompts include player/server context
- Configurable providers:
- Ollama (
provider.type: OLLAMA) - OpenAI-compatible chat endpoint (
provider.type: OPENAI) - Anthropic Messages API (
provider.type: ANTHROPIC)
- Ollama (
- Async network calls (does not block the main server thread)
- Startup LLM connectivity test on plugin enable (logs success/failure to terminal)
- Fallback messages if API calls fail
- Player memory feature for customizing messages with additional player information
- stored in per-player YAML files
- loaded into memory on join and unloaded on leave
- Built against Paper API
1.21.11 - Uses Bukkit/Paper event APIs, so it should also run on compatible Spigot/Purpur forks
- Java 21 required (matches current Paper API target)
./gradlew buildOutput jar:
build/libs/MinecraftLLMNotifications-1.0.0.jar
Run tests:
./gradlew testRun tests with coverage report:
./gradlew test jacocoTestReportCoverage report:
build/reports/jacoco/test/html/index.html
- Build the jar.
- Put the jar into your server
plugins/directory. - Start server once to generate
plugins/MinecraftLLMNotifications/config.yml. - Edit config and set provider credentials/model.
- Run
/llmnotifyreloador restart.
provider.type:OLLAMA,OPENAI, orANTHROPICprovider.ollama.base-urlandprovider.ollama.modelprovider.openai.base-url,provider.openai.api-key,provider.openai.modelprovider.anthropic.base-url,provider.anthropic.api-key,provider.anthropic.modelprompts.first-join,prompts.join,prompts.quit(lists; random choice)messages.fallback.*fallback poolsmessages.player-memory.enabled:trueorfalseto enable player memorymessages.player-memory.prefix: prefix to use when adding player memory to prompts
Use these in prompts and fallback messages:
@player@display_name@uuid@world@x,@y,@z@health@food@level@gamemode@online_count@is_op@first_join@last_played@playtime_hours@player_memory- includes player memory information when enabled
Also supported: {{player}} style placeholder syntax.
- Keep requested output short for chat readability.
- Ask for line limits explicitly, for example:
Create exactly 4 lines... - Mention desired tone and safety constraints.
/llmnotifyreload- reloads config (permission:llmnotify.reload)/llmnotifymemory- manage player memory (permission:llmnotify.memory)- works for online and offline players by name
/llmnotifymemory add <player> <item>- Add an item to a player's memory/llmnotifymemory list <player>- List a player's memory items as a numbered list (1-indexed)/llmnotifymemory remove <player> <index>- Remove a specific item by its 1-indexed list number/llmnotifymemory clear <player>- Remove all items for a specific player/llmnotifymemory clearall- Remove all items for all players