Links
Tags
Creators
Details
2.0.0
Compatibility
Changes
Second public release. Everything since the pre-repo 1.0 is now in git — this is a big one.
✨ Highlights
Group History (last 5) — never lose context. Every group message is now remembered per-player per-group (history.json) and you can pull it anytime. Try /group history, /gmsg history or /group mySquad history 3. Works with gm/gmoffline aliases too.
Toggle Chat Mode — lock your chat to a group. /group toggle mySquad (or /gmsg toggle) routes every message you type straight to that group until you toggle off, type cancel, or disconnect. No more prefixing every line.
Smarter multi-group handling — in 2+ groups? Running /group history or /group toggle without a name now asks you interactively in chat: “type the name of one of the groups to select it” — just type the name or cancel. Single-group players can just omit the name entirely.
Fabric persistence fixed — Fabric saves now correctly go to FabricLoader.getGameDir()/groupchat (with migration from old locations). No more groups vanishing after a restart on certain launchers.
Hardened & polished — atomic saves, corrupt JSON backup, 500-char / 200-message caps, § sanitization, 30-day prunes, /unread page/clear pagination, permission nodes, audit logging, and much more.
Added
- Per-group history (FIFO 5, timestamps oldest→newest) —
/group history,/group <group> history [1-5],/gmsg history,/gm history,/gmoffline history+ group-first variants. Single-group shorthand when you’re in exactly 1 group. - Toggle chat —
/group toggle [group],/gmsg toggle [group](andgm/gmofflinevariants),ToggleSessionin-memory, cleared on quit/disconnect/cancel. - Interactive selection for both toggle & history when in multiple groups (pending chat-selection).
- Startup logging — both Paper and Fabric now log
GroupChat data folder: <abs>andLoaded <n> groups from …/groups.json.
Fixed
- Fabric: persistence after restart (canonical
getGameDir()+ migration + absolute path logging). - Paper: now mirrors Fabric’s loaded-count logging via plugin logger.
Security
- Atomic
tmp+ATOMIC_MOVEwrites, corrupt.corrupt.<ts>backups, entry validation (^[A-Za-z0-9_]{2,24}$, owner-in-members). - Mailbox DoS caps (500 chars / 200 msgs, reject newest), § stripping, expired/oversized prune on load.
/unread [page|clear]pagination (Paper + Fabric).- Access control:
/group membersrequires membership, invite dedupe,groupchat.use(default true) gates on all Paper commands,groupchat.admin(op) reserved. PaperPlatformBridgeConcurrentHashMapname↔UUID cache.- Pin
paper-api 26.3.build.8-alpha.
Changed
- Targets Minecraft 26.3, JDK 26, Loom 1.18.2, Loader 0.19.5, Fabric API 0.160.6+26.3.
plugin.ymlusages updated for new syntax.
Full technical changelog + commit hashes: https://github.com/ThermedWolf/group-chat/releases/tag/v2.0.0
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:Y9l1j67J:HbRl0ezb"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Y9l1j67J:HbRl0ezb"
}

