Tags
Creators
Details
2026.2.2
Compatibility
Changes
CoreChatX 2026.2.2
Added
- Added Discord image rendering for ChatItem tokens sent from Minecraft:
[item],[i],[armor],[hotbar],[inventory],[inv],[enderchest],[ender],[ec], and shulker previews from[item].- In
STANDALONE, Paper renders and sends the Discord attachment directly. - In
PROXY, Paper renders the snapshot and Velocity sends the final Discord embed/attachment for the correct proxy group.
- In
- Added interactive Discord item inspection for non-
[item]snapshots. Inventory-like renders can show dropdown menus; selecting an entry sends an ephemeral single-item preview to that Discord user. The menu expires with the same lifetime as the in-game ChatItem preview token. - Added Minecraft-style single item renders for Discord
[item]previews. The generated image uses the Minecraft bitmap font, tooltip background, custom names, lore, enchantments, potion effects, attributes, armor trims, durability, and item icon rendering instead of plain Discord embed text. - Added Discord handling for inbound attachments. Discord images/files now appear in Minecraft as clickable
[filename]components with hover text and an open-url click action; messages with only attachments are forwarded too. - Added Discord console support:
discord.consolein Paperdiscord.ymlcan run a standalone or per-backend console bot.discord.consolein Velocityvelocity-discord.ymlcan run proxy console commands from Discord.command-prefix: ""is allowed and makes every message in the console channel execute as a command.
- Added Discord
player-listcommand support for both PaperSTANDALONEand VelocityPROXY.- Text command default:
!playerlist. - Slash command default:
/playerlist. - Velocity resolves the target proxy group from
discord.inbound.channel-routes.
- Text command default:
- Added Discord text channel description updates through
discord.channel-description.- Paper
STANDALONE: updates standalone channel topics. - Velocity
PROXY: updates text channel topics per configurednetwork-channel. - Internal placeholders:
{online}and{online_in_group}. - PlaceholderAPI placeholders are supported on Paper; Velocity can resolve them through
PAPIProxyBridgewhen installed.
- Paper
- Added Velocity-owned join/quit/first-join announcements for
deployment.mode: PROXY.- Velocity now decides join/quit based on proxy group entry, group switch, and proxy disconnect.
- Switching backend inside the same CoreChatX group does not announce join/quit.
- Switching between groups sends quit to the old group and join to the new group.
- Added group-wide broadcast routing in
PROXYmode. Paper/broadcast <message>now fans out to the current Velocity group instead of only the local backend, and Velocity also provides/broadcast. - Added player head rendering support for name-only profile components such as
minecraft:player_head[minecraft:profile="IceWolf23X"], in addition to heads that already contain texture properties.
Changed
- ChatItem in-game previews now use more compact layouts for single/small snapshots:
[item]opens a 5-slot hopper preview with the item centered.[armor]opens a 5-slot hopper preview with helmet, chestplate, leggings, boots, and offhand.[inventory],[hotbar],[enderchest], and shulker previews keep their existing snapshot sizes.
- Velocity Discord bridge output can resolve PlaceholderAPI placeholders through optional
PAPIProxyBridgefor Velocity-side formats such as player list rows, channel descriptions, join/quit messages, and fallback Discord formats. - Paper
discord.ymlis now clearly split by runtime responsibility:STANDALONEowns Discord bridge, account linking, login gates, player list, channel descriptions, and console.PROXYkeeps bridge/account-linking/login gates on Velocity, while Paper can still run a console-only backend bot if configured.
Fixed
-
Fixed PlaceholderAPI placeholders staying unresolved in cross-server messages when the message had to be routed through Velocity.
-
Fixed proxy join/quit symptoms where quit messages could be missing, duplicated, or formatted differently depending on which backend still had players online.
-
Fixed Minecraft-to-Discord raw mention abuse. Players typing raw Discord mention syntax like
<@...>, role mentions,@everyone, or@herecan now be blocked from pinging Discord users/roles. -
Fixed Discord inbound attachment forwarding so attachment-only Discord messages are no longer dropped before reaching Minecraft.
-
Fixed config synchronization behavior so missing default keys are added back to Paper YAML configs and Velocity YAML/properties configs instead of requiring a clean file for every new option.
Configuration
chatitems.yml now supports Discord image rendering and item menu configuration:
discord-images:
enabled: true
max-images-per-message: 3
embed:
title:
item: "{item_name}"
armor: "{player_nickname}'s armor"
hotbar: "{player_nickname}'s hotbar"
inventory: "{player_nickname}'s inventory"
enderchest: "{player_nickname}'s ender chest"
shulker: "{player_nickname}'s shulker"
description:
item:
- "{enchantments}"
- "{attributes}"
- "{potion_effects}"
- "{lore}"
- "{armor_trim}"
- "{banner_patterns}"
- "{unbreakable}"
- "{can_place_on}"
- "{can_break}"
- "{book_metadata}"
- "{firework_data}"
- "{durability_line}"
armor: []
hotbar: []
inventory: []
enderchest: []
shulker: []
item-menu:
enabled: true
placeholder: "Inspect an item"
label-format: "Slot {slot}: {item_display_name}"
description-format: "x{amount} - {material}"
expired-message: "This ChatItem preview has expired."
unavailable-message: "That item preview is unavailable."
render:
scale: 5
single-item-details-scale: 5
single-item-details-icon-multiplier: 3
assets:
minecraft-version: "auto"
download-vanilla-assets: true
resource-packs: []
discord-images.embed.title.*: controls Discord embed titles; for[item], the title is rendered into the PNG tooltip panel.discord-images.embed.description.item: controls single-item tooltip details. Empty metadata placeholders are skipped, so missing lore/enchantments/durability do not leave unwanted blank detail sections.discord-images.item-menu.*: controls the Discord dropdown menu shown under multi-item snapshots.discord-images.render.scale: pixel scale for inventory-like renders.discord-images.render.single-item-details-scale: pixel scale for the single-item tooltip text/background.discord-images.render.single-item-details-icon-multiplier: multiplier applied only to the item icon in the single-item details panel.discord-images.assets.resource-packs: optional resource pack zip/folder paths used before vanilla fallback assets.
discord.yml and velocity-discord.yml now include:
discord:
prevent-mentions-from-minecraft: true
connection-messages:
enabled: false
join-format: ""
first-join-format: ""
quit-format: ""
embed:
enabled: false
join-color: "#57F287"
first-join-color: "#57F287"
quit-color: "#ED4245"
join-description: ""
first-join-description: ""
quit-description: ""
console:
enabled: false
channel-id: ""
command-prefix: "!"
player-list:
enabled: false
command: "!playerlist"
register-slash-command: true
slash-command-name: "playerlist"
channel-description:
enabled: false
interval-seconds: 300
triggers:
on-connection: true
on-disconnection: true
event-debounce-seconds: 5
entries: []
Velocity velocity-discord.yml also supports group-aware options:
account-linking:
required-play-roles:
groups:
# corechatx:survival:
# enabled: true
# role-ids:
# - "123456789012345678"
discord:
channel-description:
triggers:
on-group-change: true
entries:
# - channel-id: "123456789012345678"
# network-channel: "corechatx:survival"
# description: "Players {online_in_group}/{online}"
inbound:
channel-routes:
# "123456789012345678":
# channel: "global"
# network-channel: "corechatx:survival"
# require-linked: inherit
New Velocity message file:
# velocity-messages.yml
nicknames:
prefix: ""
first-join:
enabled: true
counter-enabled: true
join-quit:
join-enabled: true
quit-enabled: true
join: "<dark_gray>[</dark_gray><green>+</green><dark_gray>]</dark_gray> <white>{player_nickname}</white>"
quit: "<dark_gray>[</dark_gray><red>-</red><dark_gray>]</dark_gray> <white>{player_nickname}</white>"
first-join: "<dark_gray>[</dark_gray><gradient:#79d6b8:#5aa9ff>Welcome</gradient><dark_gray>]</dark_gray> <white>{player_nickname}</white><gray> is joining for the first time as player </gray><white>#{count}</white><gray>.</gray>"
config.yml join/quit comments now clarify that join-quit.mode: NETWORK is Velocity-owned in PROXY mode and uses velocity-messages.yml.
Commands
- Changed Paper
/broadcast <message>inPROXYmode to route through Velocity to the backend group instead of sending only on the local backend. - Added Velocity
/broadcast:- with one configured group:
/broadcast <message>; - with multiple groups:
/broadcast <group> <message>; - group can be
allto broadcast to every CoreChatX group.
- with one configured group:
- Added Discord
!playerlistand/playerlistwhendiscord.player-list.enabled: true.
Compatibility
- Paper and Velocity must both be updated to
2026.2.2. The CoreChatX plugin-message protocol is26in this release and older proxy/backend builds are not compatible. PAPIProxyBridgeis optional on Velocity. Without it, CoreChatX still works, but Velocity-side PlaceholderAPI placeholders cannot be resolved and only CoreChatX internal placeholders such as{online}and{online_in_group}are available.- No vanilla Minecraft assets are bundled inside the plugin jar. Discord item rendering uses cached/downloaded vanilla assets and optional resource packs from
chatitems.yml.
Safety
discord.prevent-mentions-from-minecraft: trueprevents Minecraft players from triggering Discord user, role,@everyone, or@herepings through the bridge.- Discord console commands are controlled by
discord.console.allowed-user-idsanddiscord.console.allowed-role-ids; empty lists mean anyone with write access to the console channel can run commands. - Discord channel description updates are interval-based and event-debounced to avoid excessive Discord channel metadata updates during mass joins/quits.
Migration
- A clean config review is strongly recommended for
2026.2.2, especiallychatitems.yml,discord.yml,velocity-discord.yml, and the newvelocity-messages.yml. - Existing configs should receive missing default keys automatically, but server owners should still compare the new defaults because several Discord features are split between Paper
STANDALONEand VelocityPROXY. - In
PROXYmode, configure Discord bridge/account-linking/login gates/player-list/channel descriptions on Velocity. Paperdiscord.ymlis still useful for standalone setups and optional backend console-only bots.
Optional dependencies
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:RRLQVs2H:q9qGvE0B"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RRLQVs2H:q9qGvE0B"
}

