
CoreChatX
CoreChatX is a complete communication suite for Minecraft servers. It brings multiple chat-related features into one polished system.
Список изменений
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.
