All versions
2.1.0
Release
SendMSG 2.1.0last week 62
Uploaded by
Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.x
Platform
Paper
Changes
Changelog
2.1.0
Compared with 2.0.2.
Upgrade notes (read first)
- Storage default changed to SQLite (
storage.type: sqlite, fileplugins/SendMSG/sendmsg.db). On the first start, data fromignores.yml,names.ymlandoffline.ymlis imported automatically into the database (only if the database is empty). The yaml files are kept as a backup and are not deleted. To keep using the yaml files instead, setstorage.type: yaml. - Colour codes (
&a,&l,&#RRGGBB...) in private messages now need thesendmsg.colorpermission (operators by default). Other players have the codes removed. - Message length is limited to 200 characters by default (
max-message-length). Set0for no limit. - Ignored senders are told that their message was blocked (
ignore.notify-ignored-sender: true). Set it tofalseto show a normal "sent" line instead.
Added
- Config check at startup and on
/sendmsg reload. It warns about negative numbers, values that are not true/false, unknown feature names, and unknown sound names, instead of silently using defaults. - On update,
config.ymlis rebuilt from the new template, so it keeps the same comments and layout. Your existing values are kept, new settings get their default values, and the old file is saved asconfig.backup-v<n>.yml. Settings that no longer exist are removed (they stay in the backup) and listed in the log. - SQLite storage (
sendmsg.db), with YAML files still available (storage.type: yaml). - Offline messages: a message to an offline player is kept and shown when they join. Off by default (
offline-messages.enabled). - Link and IP filter for
/msgand/r: hideshttp(s)://andwww.links, bare domains, and IPv4 addresses, or blocks the message. Off by default (filters.enabled). Players withsendmsg.filter.bypassare not filtered. - LuckPerms prefix in front of the sender's name in the chat line. Off by default (
integrations.luckperms.enabled). Requires LuckPerms. - PlaceholderAPI placeholders:
%sendmsg_unread%,%sendmsg_last_contact%,%sendmsg_ignored%,%sendmsg_msgtoggle%,%sendmsg_spy%. Off by default (integrations.placeholderapi.enabled). Requires PlaceholderAPI. - Clickable reply hint: the "Reply with: /r" line becomes a button that fills
/rin the chat box. Off by default (features.clickable-reply). - Discord webhook: sends every private message to a Discord channel. Off by default (
discord-webhook.enabled). Retries on rate limits (HTTP 429, usingretry_after) and on server errors. Mentions are disabled, and player text is escaped for Discord markdown. /sendmsg spiesshows who currently has SocialSpy enabled./ignore listshows who you ignore and how long each ignore lasts.sendmsg.filter.bypasspermission.sendmsg.colorpermission.- Config options:
storage.fallback-to-yaml,ignore.notify-ignored-sender,max-message-length.
Changed
- Config file and code comments are in English.
- If SQLite cannot open, the plugin stops with an error instead of silently switching to YAML. Set
storage.fallback-to-yaml: trueto allow the switch. - Private message log is written by one background thread, in order.
- Cooldown can no longer be negative.
- SocialSpy checks
sendmsg.spyon every message, and turns off when the player leaves. - Feature switches missing from an old config file use the default for that feature.
- Source code is split into packages:
commands,service,storage,listeners,integrations.
Fixed
- After an upgrade, messages added in newer versions showed as
[missing: ...]when the language file was from an older version. - Plugin crashed on an invalid
langvalue. It now falls back to English. - Cooldown reset when a player relogged.
- Offline unignore.
- Ukrainian messages were out of sync with the other languages.
- A damaged YAML data file was overwritten, which lost its data. It is now kept as
*.broken-<time>. - PlaceholderAPI expansion was registered twice after
/reload. - A race between adding and purging offline messages could drop a message from memory.
- Discord messages still in the queue were dropped silently on shutdown. Now they get 5 seconds to send, and the number of dropped messages is logged.
- Player names and text in Discord embeds could format or link text. Now escaped.
- The update checker sent a personal e-mail address in its User-Agent. Replaced with the project page URL.
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:2N9NGxCK:hO7Xvj6t"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:2N9NGxCK:hO7Xvj6t"
}

