A plugin of Grasscutter for send in-game mail conveniently

Overview

Group 148.jpg

MeaMailPlus - Grasscutter Mail enhancements

MeaMailPlus is a plugin of Grasscutter, you can use this plugin to send your mail conveniently.

English | 简体中文

Grasscutter's command tools: GrasscutterCommandGenerator

💡 Feature

  • Birthday Mail - Send birthday emails to players on their birthdays.
  • Daily Bonus - Players will receive rewards when they join the server.
  • Newbie Gift Mail - Players will receive rewards when they first joined.
  • Scheduled Mail push - You can limit the level threshold of players to receive the mail.
  • Command support - Support sending Mails by command.
  • RESTful API - Send Mail via third-party API.
  • MORE - Comming soon...

🍗 Setup

Install

  1. Download Plugin Jar
  2. Put plugins into plugins folder of your grasscutter server.
  3. Start your server, then the plugin will create MeaMailPlus folder in your server plugin folder.
Root
│   lib
│   keys
│   resources
│   ...
└───plugins
    │   ...
    └───MeaMailPlus
        │   template       // template files
        └───config.json    // plugin config file

How to use?

The plugin will create a MeaMailPlus folder in your server plugin folder, include template folder and config.json file.

Config file

The config file is a JSON file, you can edit it to set the plugin's behavior. Run command /meamail reload in console to reload the config.

{
  "updateTime": [4, 0, 0],         // set the server's start time for send mail of the day, default is 04:00:00(24 hours system)
  "initialMail": [ 1001 ],         // set the initial mail template id, you can set multiple mail ids like [1001, 1002, 1003]
  "birthDayMail": [ 1004 ],        // set the birthday mail template id, you can set multiple mail too!
  
  "dailySignInMail": [             // players can only receive once a day, and will not send if they are not online.
    {
      "templateId": 1002,          // set the template id for daily sign in mail.
      "minLevel": 0                // you can limit the level(0-60) threshold of players to receive the mail.
    },
    {
      "templateId": 1003,          // multiple mail...
      "minLevel": 25                
    },
    {
      "templateId": 1004,          // multiple mail...
      "minLevel": 55                
    }
  ],
  
  "dailyRepetitionMail": [         // send a timed email collectively
    {
      "onlineOnly": false,         // whether the player needs to be online to receive mail
      "triggerTime": [12, 0, 0],   // 12:00:00
      "templateId": 1003,          // templateId
      "minLevel": 0                // you can limit the level(0-60) threshold of players to receive the mail.
    },
    {                              // multiple mail...
      "onlineOnly": true,
      "triggerTime": [16, 0, 0],    // 16:00:00
      "templateId": 1003,
      "minLevel": 0
    },
    {                              // multiple mail...
      "onlineOnly": true,
      "triggerTime": [0, 0, 0],    // 24:00:00
      "templateId": 1003,
      "minLevel": 0
    }
  ]
}

Template file

You can make multiple template files in template folder, only supports JSON. like this: TemplateExample.json

{
  "templateId": 1001,              // Your template id, can't be repeated         
  "title": "Mail title",           // Your Mail title
  "sender": "KiritaniIwako",       // Your sender name, you can set "Server"
  "expireTime": 0,                 // Your mail expire time, will be explained in detail later.
  "remainTime": 2592000,           // Your mail remain time, if you have set the remainTime, the expireTime will not take effect.
  "importance": 0,                 // Your mail importance, 0 is normal, 1 is star
  "body": {                        // Your mail content, will be explained in detail later.
    "content": "Mail content",
    "items": [
      {
        "id": 223,                 // item id
        "count": 1,                // amount
        "level": 1                 // item level(0-90?)
      }
    ]
  }
}
  1. How to set the mail expireTime or remainTime?
{
  "expireTime": 1651571451,
  // use 10 digits timestamp, like this: 
  // you can use convert tool to convert the timestamp to 10 digits timestamp, 
  // https://www.epochconverter.com/
  
  "remainTime": 2592000
  // time in second
  // 2592000 is the seconds of 30 days: 
  // 2592000 = 30(d) * 24(h) * 60(m) * 60(s)
  // if you are not sure, you can use two 10 digits timestamp subtraction:
  // 2592000 = 1651568400 (2022-5-3 9:00:00GMT) - 1648976400 (2022-4-3 9:00:00GMT)
}
  1. How to set the mail body/content?
{
  "body": {
    "content": "Mail content",
    // you can set the content of the mail, 
    // you can use the variable: 
    // `{playerName}`: (Testing) player name
    // `\r\n`: line feed
    // you can use link to open Browser & Webview in-game:
    // <type=\"browser\" text=\"title\" href=\"You website link\"/>
    // for example:
    // `<type=\"browser\" text=\"Discord\" href=\"https://discord.gg/T5vZU6UyeG\"/>`: open a Browser, tag name is "Discord".
    // `<type=\"webview\" text=\"Discord\" href=\"https://discord.gg/T5vZU6UyeG\"/>`: open a in-game Browser, tag name is "Discord".
    
    "items": [                     // items in the mail, if you set `[]`, no item will be sent
      {
        "id": 223,                 // item id
        "count": 1,                // amount
        "level": 1                 // item level(1-90?)
      },
      {
        "id": 224,                 // Multiple items...
        "count": 1,
        "level": 1
      },
      {
        "id": 202,                 // Multiple items...
        "count": 10000000,
        "level": 1
      }
    ]
  }
}

Hyperlinks in the mail content:

<type=\"browser\" text=\"title\" href=\"You website link\"/>

for example:

<type=\"browser\" text=\"Discord\" href=\"https://discord.gg/T5vZU6UyeG\"/>
<type=\"webview\" text=\"Discord\" href=\"https://discord.gg/T5vZU6UyeG\"/>

Command & Permission

Command:

Send Mail:
    /meamail send <templateId> <uid>
    /meamail sendall <templateId> <minLevel>
    /meamail sendallonline <templateId> <minLevel>
Other:
    /meamail reload
    /meamail help

Permission:

meo.mail | Control plugin functions
You might also like...

Send and Receive anonymous messages, opinions, confessions etc.

 Send and Receive anonymous messages, opinions, confessions etc.

WSS - Wanna Say Something Send and Receive anonymous messages, opinions, confessions etc. Explore the docs » • Report Bug • Request Feature • About Th

Nov 26, 2022

Integrates with XRPLedger to send token payment to trustline addresses

strategyengine token distribution rest service This service also runs here -- https://fsedistributionservice-56gpv2b23a-uc.a.run.app/ #How to run loca

Dec 14, 2022

React Native app demonstrating using xmtp-js to send a message

XMTP React Native Example This is a work in progress to demonstrate importing xmtp-js into a React Native app. The example currently generates a rando

Dec 20, 2022

Spring boot backend for marble guessing game inspired by Squid Game TV series.

Back-end for marble guessing game inspired by Squid Game TV series. Built with Spring-boot and WebSocket.

Sep 3, 2022

A minecraft plugin that let's you suicide in game

A minecraft plugin that let's you suicide in game

Suicide A minecraft plugin that let's you suicide in game Command /suicide - Let's you suicide Permission me.suicide - You can edit this in config.yml

Feb 16, 2022

trying to create a plugin using the spigot api! this plugin will be responsible for delivering the products according to the settings!

KettraShop "simples plugin de ativação de produtos da loja, dentro do Minecraft" ⚙️ Configurações caso você não tenha uma loja virtual para seu servid

Nov 2, 2022

Community-Driven Game Server Development solution for Java Developers based on DEEPINTHINK MagOKO Project.

MagOKO Stack Community-Driven Game Server Development solution for Java Developers based on DEEPINTHINK MagOKO Project. License Copyright 2021-present

Jun 1, 2021

A Java-based template project for the FastJ Game Engine.

A Java-based template project for the FastJ Game Engine.

FastJ Java Template Program Requirements Java 16 JDK Basic understanding of Java Initial Setup Download the Template You have a few options for gettin

May 15, 2022

💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

👉 为性能而生的万能服务器框架 👈 Ⅰ. zfoo简介 🚩 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

Jan 1, 2023
Comments
  • Config file restoring to default

    Config file restoring to default

    This has gotten rather annoying as I have no idea whats causing it. I set the config, open the server, everything works fine, then I close the server to make edits somewhere else, open the server and the config file restored to default. No errors or warnings...

    opened by NekosakiSR 6
  • fix issue#9

    fix issue#9

    getPlayerUid ==> getReservedPlayerUid #9

    https://github.com/Grasscutters/Grasscutter/commit/141b1913cbfe1c9b7d2f8ac224e53f877790c7a2#diff-8f27aae49884216b665de4c27fe9628086aa232cdf43242951fabed8b17480d9

    • public int getPlayerUid() {
    •   return this.playerId;
      
    • public int getReservedPlayerUid() {
    •   return this.reservedPlayerId;
      
      }
    opened by Zhaokugua 0
  • IntialMail is no longer sending

    IntialMail is no longer sending

    I just noticed that the IntialMail is no longer sending to new users? I can send them using commands, but when I create an account its not being sent to the new account.

    The plugin seems to load in fine with 0 errors, I went back to the default config/templates and the IntialMail still isn't sending.

    I am using the most recent commit of the Development Branch of Grasscutter. I don't know when it stopped working as I wasn't paying attention to it.

    opened by NekosakiSR 0
  • <ERROR:PluginManager> Failed to enable plugin: MeaMailPlus

    Failed to enable plugin: MeaMailPlus

    ERROR:PluginManager Failed to enable plugin: MeaMailPlus java.lang.NullPointerException: Cannot invoke "io.github.gmw.module.TaskManager.enable()" because "this.task" is null at io.github.gmw.MeaMailPlusCore.onEnable(MeaMailPlusCore.java:42) at emu.grasscutter.plugin.PluginManager.lambda$enablePlugins$2(PluginManager.java:201) at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) at emu.grasscutter.plugin.PluginManager.enablePlugins(PluginManager.java:198) at emu.grasscutter.Grasscutter.main(Grasscutter.java:160)

    opened by mxtilx 1
Releases(v1.0.3)
Owner
ButterCookies
UI designer
ButterCookies
A plugin that serving completely in-game webview based console backend for grasscutter

MojoConsolePlus EN|中文 MojoConsolePlus(MCP) is a Grasscutter plugin (Apart from 4Benj's GCGM plugin) and it's goal is to implement fully in-game webwie

null 68 Dec 13, 2022
The in-game login system for Grasscutter is based on oauth and GCAuth.

GCAuth OAuth The in-game login system for Grasscutter is based on oauth and GCAuth. Current Features: Use Twitter oauth to login Custom pages Importan

Xtao-Team 36 Nov 14, 2022
The in-game login system for Grasscutter is based on oauth and GCAuth.

GCAuth OAuth The in-game login system for Grasscutter is based on oauth and GCAuth. Current Features: Use Twitter oauth to login Custom pages Importan

Xtao-Labs 29 Aug 3, 2022
Anime game server software reimplementation. Planning to replace @Grasscutters/Grasscutter.

NOTE This is a rewritten version of Grasscutter. Find the original project at Grasscutters/Grasscutter. Grasscutter TODO: Write README.md Players Guid

Magix 11 Dec 1, 2022
Daily mail subscription implementation using Java Spring-boot and Quartz Scheduler

Daily Mail Subscription Service POC Implemented using Java Spring-boot and Quartz Scheduler Working Application Exposing 3 endpoints /subscription/cre

null 16 Jun 3, 2022
Envio automatizado de mensagens por e-mail.

Yara - Message in a Bottle Yara é uma aplicação que permite o envio de e-mails automatizados com mensagens pré-formatadas (ou não) a usuários cadastra

NExT 3 Jul 6, 2022
A Spring Boot Camel boilerplate that aims to consume events from Apache Kafka, process it and send to a PostgreSQL database.

SPRING-BOOT CAMEL BOILERPLATE This is a Spring-Boot Camel Application model that you can use as a reference to study or even to use in your company. I

Bruno Delgado 45 Apr 4, 2022
Simple and lightweight application which is checking status of your web services and send a notification if it is down.

rose-uptimer Simple and lightweight application which is checking status of your web services and send a notification if it is down. Example configura

RoseSapphire 3 Sep 25, 2022
COMPortNotifier - Smol utility to send you a notification every time you connect, or disconnect a COM port.

COMPortNotifier A smol utility that sends you a notification every time a COM port is connected, or disconnected on your computer. Useful for electric

Matt Foulks 1 Sep 7, 2022
Calef - CalEF (Calendar Entry Formatter) : Select an entry in Android-Kalender and send/share the entry's content as human readable text.

CalEF (Calendar Entry Formatter) Select an entry in Android-Kalender and send/share the entry's content as human readable text. Usually calendar entri

k3b 6 Aug 17, 2022