v1.0
Compatibility
Changes
English Introduction
Plugin Overview
LoveLetter is a lightweight Minecraft love letter plugin for Paper / Folia 1.21 servers. Players can send love letters to specified players via command. Letter content can be randomly picked from a letter library, or custom content from a written book held in hand. After sending, a broadcast message is sent to all players with a clickable 【Open Letter】 button that anyone (including the recipient) can click to view the content.
Features
| Feature | Description |
|---|---|
| Send Letter | Use /lletter <player> to send a love letter to a specified player |
| Random Letter | Randomly picks one letter from .txt / .letter files in the letters directory |
| Custom Book | When holding a signed written book, use its content as the letter (requires config) |
| Broadcast | Broadcasts a message to all online players with a clickable 【Open Letter】 button |
| View Letter | Click 【Open Letter】 to receive the letter as a book item or view in chat |
| Reload Library | Use /lletterreload to reload config, language, and letter files without restarting the server |
| Cooldown | Configurable per-player cooldown to prevent spam |
| Placeholders | Letters support %player_reciever%, replaced with the recipient's name |
| MiniMessage | Config supports MiniMessage format for gradients, bold, and more |
| Letter Expiry | Letters expire after 5 minutes in memory to reduce storage |
Commands & Permissions
| Command | Permission | Default | Description |
|---|---|---|---|
/lletter <player> |
lovletter.lletter.use |
All players | Send a love letter to a player |
/lletterreload |
lovletter.lletter.reload |
OP only | Reload config, language, and letter library |
Configuration
Config file: plugins/LoveLetter/config.yml
- language: Language code (e.g.
zh_CN,en_US), maps to.ymlfiles inplugins/LoveLetter/language/ - letter.allow-custom-book: Allow using held written book as custom letter
- letter.open-as-book: Give letter as book item (
true) or show in chat (false) - letter.cooldown: Cooldown in seconds;
0for no cooldown
All UI text (broadcast, errors, book title, etc.) is in the language files under language/.
Letter Library
Letter files go in plugins/LoveLetter/letters/ with .txt or .letter extension. Default letters are extracted on first run.
Example letter (supports %player_reciever% placeholder):
Dear %player_reciever%:
In every sunset of this blocky world, I want to stand beside you.
May our story last as long as the Ender Dragon.
— Someone who admires you
Multi-Language Support
LoveLetter has built-in multi-language support. Language files are in plugins/LoveLetter/language/:
-
Switch language
Setlanguage: zh_CN(Simplified Chinese) orlanguage: en_US(English) inconfig.yml, then run/lletterreload. -
Built-in languages
zh_CN.yml: Simplified Chineseen_US.yml: English
-
Add a new language
Copyzh_CN.ymloren_US.yml, rename to your language code (e.g.ja_JP.yml), translate the fields, and setlanguage: ja_JPinconfig.yml. -
Multi-language letters
Add letter files per language inletters/(e.g.default_zh.txt,default_en.txt). All.txt/.letterfiles are loaded and randomly picked. -
MiniMessage format
Language files support MiniMessage for<red>,<gradient:#ff6b9d:#c44569>,<bold>, etc.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:cRB1OTbo:EyQs1m9t"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:cRB1OTbo:EyQs1m9t"
}

