Tags
Creators
Details
Licensed MIT
Published 6 months ago
Updated last month
All versions
1.2.0
Release
CrossChat 1.2.06 months ago 97
Compatibility
Minecraft: Java Edition
1.21.11
Platform
Velocity
Changes
Fixed
- Critical: players kicked with "A proxy plugin caused an illegal protocol state" on Minecraft 1.19.1+
- Root cause:
ChatResult.denied()cannot cancel a cryptographically-signed chat message at the proxy level (Velocity/Minecraft protocol restriction introduced in 1.19.1) - Fix: replaced
ChatResult.denied()withChatResult.message(text)which strips the signature (making the message "unsigned") instead of attempting to cancel it — this prevents the disconnect entirely
- Root cause:
Added
crosschat:suppressplugin-message channel — the proxy sends the sender's UUID to the backend over this channel immediately before forwarding the unsigned echo; the companion backend plugin uses this to silently cancel local displayCrossChatBackendcompanion Paper plugin (backend/) — drop into each Paper/Purpur backend'splugins/directory to suppress the local-chat echo of messages already broadcast globally:- Listens on
crosschat:suppress - Cancels
AsyncChatEventfor the flagged player via a one-shotConcurrentHashMapset - Compatible with Paper 1.19.1+, Java 17+
- If the backend plugin is absent, global broadcast still works but the message will also appear in local backend chat
- Listens on
Notes
- In
config/paper-global.ymlon each backend, ensureenforce-secure-profiles: falseso that the signature-stripped message forwarded by Velocity is accepted rather than rejected with a "Chat message delivery failed" system message
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:zlXiOAOJ:BP57SccE"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:zlXiOAOJ:BP57SccE"
}

