Touhou Little Maid: Epistalove
This mod is an add-on for Contact: LoveRekindled and Touhou Little Maid, allowing maids to write letters to their masters.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Touhou Little Maid: Epistalove
Touhou Little Maid: Epistalove
This mod is an add-on for Touhou Little Maid and Touhou Little Maid, allowing maids to write letters to their masters.
You can get a quick overview from this Bilibili video.
Letter Content
Letters can be generated in two ways: KubeJS or KubeJS, with full customization through KubeJS or KubeJS. See the KubeJS for details.
To enable AI generation, follow the steps in the **official Touhou Little Maid guide**.
AI generation is highly recommended — it can use in-game environmental data as prompts, allowing letters to naturally adapt to different situations.
When Letters Are Written
By talking to a maid using AI dialogue (press Function Call on the maid), you can directly request a letter. This requires enabling the Function Call feature of Touhou Little Maid.
In other cases, maids write letters based on configured rules. See the **official documentation**.
Letter delivery works as follows: - HOME mode + no mailbox nearby: the maid hands the letter directly to the player. - HOME mode + no mailbox nearby: the maid mails it through Epistalove; the player must retrieve it from their personal mailbox. - HOME mode + no mailbox nearby: the maid will hold the letter until a player or mailbox appears.
Best Example
The following KubeJS example makes the maid write a letter every time you earn a new advancement, with content related to that advancement.
For most well-known mods, the AI can recognize their advancements.
```javascript // server_scripts LetterEvents.registerLetterRules(event => { // AI: First Gift event.createAI('advancement','lonesome', 'As a maid, your master has just completed the Minecraft advancement ${adv}. This is an important moment—please write a short letter to your master about it.') .trigger('advancement').repeat().minAffection(0).maxAffection(500).cooldown(0).register(); }); PlayerEvents.advancement(event => { let advancement = event.advancement; if (advancement.description.empty) return; let str = `${advancement.displayText.getString()}:${advancement.description.getString()}`; if (advancement.description.getContents().getKey()) str += `(${advancement.description.getContents().getKey()})`; LetterAPI.triggerEventWithContext(event.player, "advancement", { adv: str }); }); ```
Future Plans
- Improve customization features.