Sueta

CoreChatX

2026.3.3

CoreChatX is a complete communication suite for Minecraft servers. It brings multiple chat-related features into one polished system.

·Plugin
  1. 2026.3.3latestCoreChatX 2026.3.34 days ago

    CoreChatX 2026.3.3

    Added

    - Added bStats discord_integration charts on Paper and Velocity and a telegram_integration chart on Paper to count configured integrations. The new chart values contain only status categories, without bot tokens, Discord/Telegram IDs, player identities, messages, or traffic volume. The existing global bStats opt-out is respected; Paper proxy backends report Discord as Managed by Velocity.

    Fixed

    - Fixed Discord ChatItem images being generated for channels with export-to-bridges: false. Standalone and proxy servers now stop these exports before image preparation or sending while preserving local ChatItems and allow-chatitems. - Fixed overhead chat bubbles exposing messages from STAFF channels or channels with a non-empty permission-receive, even when bubble allowlists enabled them. Public-channel bubble settings continue to work as configured. - Fixed player-head ChatItem snapshots potentially blocking the Paper main thread during profile completion. Missing skins now use an immediate fallback while bounded asynchronous lookup, timeout, cache, and shutdown handling prepare a texture for a later capture. - Fixed Discord death messages bypassing Paper cancellation, showDeathMessages, blank-message checks, or the main scoreboard's death-message visibility. Discord and network deaths now share the same public eligibility rules; advancement announcements are unchanged. - Fixed PremiumVanish exposure through CoreChatX-managed Velocity TAB entries, chat completions, and shared backend directories. TAB and completions now use per-viewer visibility, public directories omit vanished players, hide/show and permission changes reconcile state, and cleanup preserves entries owned by other plugins.

    Known issues

    - Public-channel bubbles still cannot enforce per-viewer ignore or hidden-channel rules, or a chat radius smaller than the bubble view distance. Disable bubbles for channels that require those audience restrictions.
    6 downloads
  2. 2026.3.2CoreChatX 2026.3.22 weeks ago

    CoreChatX 2026.3.2

    Changed

    - ChatItem previews and remote PMs now limit overlapping requests, with customizable busy feedback in chatitems.yml and messages.yml. Older previews may expire early under heavy load. Forwarded PMs consume the configured cooldown even if later rejected or timed out. - Discord console logging now recovers from stalled requests, and ChatItem disk-cache limits remain enforced across reloads, with memory fallback on cache errors. Image transfers and Discord/Telegram exports also have workload limits and timeouts; overloaded exports may be dropped while Minecraft chat continues.

    Safety

    - Strengthened Velocity backend/player validation, Discord account-link updates and chat-text handling. Added stricter checks for runtime libraries, downloaded assets and custom resource packs; invalid libraries block Velocity startup, failed asset updates keep the working cache, and oversized textures may need resizing.

    Migration

    - Update Velocity and all participating Paper backends together. Stop Paper backends before Velocity, install matching 2026.3.2 JARs everywhere, then start Velocity first. Mixed 2026.3.1/2026.3.2 networks are incompatible. No database migration is required when upgrading from 2026.3.1. - Ensure Paper deployment.server-id matches its registered Velocity backend name. For multiple groups, add backend-groups.<server>=<network-channel> in velocity-config.properties for every participating backend and match its Paper deployment.network-channel; these mappings are optional with one group. - Telegram now accepts incoming messages only from explicitly mapped chats/topics in telegram.inbound.routes. Set telegram.inbound.allow-unmapped-chats: true to restore the previous default-channel fallback. Custom pings from Telegram or other generic remote sources require an empty use-permission.
    23 downloads
  3. 2026.3.1CoreChatX 2026.3.13 weeks ago

    CoreChatX 2026.3.1

    Added

    - Added optional full advancement synchronization between Paper backends in the same Velocity group. The proxy stores criteria, partial progress and completion dates in YAML or MySQL, progressively merging each player's existing progress as they visit each backend. Explicit revocations stay revoked when older backend data is imported. - Historical advancement progress is restored without repeating chat announcements, toasts, XP, items or reward functions. New completions can announce live across participating backends; inventories, XP balances, statistics and recipe books are not synchronized. - Added death-messages.network-enabled to relay public death messages within the same Velocity group. It respects the source world's death-message rule and excludes hidden, cancelled and team-restricted messages; local death messages remain unchanged. - Added optional PremiumVanish hooks on Paper standalone and Velocity. Hidden players' join, first-join and quit announcements are suppressed, including their corresponding bridge messages; accepted first joins and counters are still recorded.

    Configuration

    - Advancement synchronization and network death messages are disabled by default. Advancement sync requires advancement-sync.enabled on Paper and velocity-advancements.properties on Velocity, explicit backend-to-group pins and a unique secret per backend. Its authenticated endpoint saves independently of online plugin-message carriers. Use HTTPS or an encrypted tunnel between separate machines; endpoint settings require a restart. Disable other plugins' advancement synchronization first. See the [setup guide](https://wiki-corechatx.icewolf23x.dev/advancement-sync.ht… - hooks.premiumvanish is enabled by default in Paper config.yml and Velocity velocity-config.properties. Install PremiumVanish on the proxy for Velocity-owned network announcements. Paper hook changes apply through /corechatx reload; Velocity changes require a restart.

    Migration

    - Before updating, stop the affected servers and back up every file and subfolder in their plugin folders, the complete Minecraft worlds and the CoreChatX database when MySQL is used. Stop Paper backends before Velocity so final saves can finish. Install matching 2026.3.1 JARs on the proxy and all participating backends, then start Velocity first. - MySQL adds schema migration V004 and ccx_player_advancements, including installations that leave advancement sync disabled. The normal schema auto-migration applies it at startup; if schema-auto-migrate=false, arrange the schema upgrade before boot. Older builds reject schema version 4: reverting only the JAR is not a database downgrade. - Canonical backups containing advancement records use format 3 and retain that progress through Velocity YAML-to-MySQL migration and rollback. Backups without advancement records keep format 1 or 2, and both remain readable. Keep pre-update backups for downgrades, and retain each backend's existing world files until the required player visits have imported their progress.
    8 downloads
  4. 2026.3.0.1-hotfixCoreChatX 2026.3.0.1-hotfixSep 13, 2026

    CoreChatX 2026.3.0.1-hotfix

    Changed

    - Paper and Velocity now display prominent, colored console banners for Modrinth updates: green for recommended stable releases and yellow for experimental alpha/beta builds, with installed/available versions and the download link. - Added the [CoreChatX wiki](https://wiki-corechatx.icewolf23x.dev/) link to the Paper and Velocity startup banners.

    Fixed (hotfix-related)

    - Fixed the first public chat message after joining or switching a Velocity backend being rejected because moderation data was only requested when the player tried to chat. Paper now loads player settings, privacy, channel, mute and global state proactively on join, with bounded read retries. Chat remains protected while authoritative moderation data is unavailable. - Fixed delayed proxy join callbacks applying display changes or first-join announcements to a disconnected or replaced player session. Accepted-join effects now wait for confirmed player and moderation data. - Fixed proxy request timeouts and first-join warnings reporting only null. Diagnostics now identify the operation, request, backend and player; timed-out writes are not automatically retried because they may already have committed. - Fixed the Modrinth update checker rejecting four-part hotfix versions such as 2026.3.0.1-hotfix. This build orders hotfix revisions numerically and continues to detect later stable, beta and alpha versions.

    Compatibility

    - Updating from 2026.3.0 requires no configuration conversion or MySQL schema migration. Existing YAML/MySQL data and protocol 29 are unchanged.

    Migration

    - Stop the affected servers and back up every file and subfolder in the CoreChatX plugin folders before replacing the JARs; also back up MySQL when used. Install the matching hotfix JAR on Velocity and each participating Paper backend, then restart. Download this hotfix manually: the update checker in the older 2026.3.0 build does not recognize this version format. For upgrades from 2026.2.6 that also move YAML data to MySQL, follow the [step-by-step migration guide](https://wiki-corechatx.icewolf23x.dev/migration.html).
    14 downloads
  5. 2026.3.0CoreChatX 2026.3.0Sep 9, 2026

    CoreChatX 2026.3.0

    Added

    - Added asynchronous Modrinth update checks after startup and every 24 hours by default. Console and OP players receive stable-update recommendations and separate experimental alpha/beta announcements; no automatic installation occurs. - Optional MYSQL runtime storage for standalone Paper and Velocity: preferences, nicknames, statistics, active/hidden channels, ignores, mutes, global state, Discord links, unlink records and pending codes. YAML remains the default; Velocity keeps each network group separate. - Added /ccxstorage on Paper and Velocity for health checks, file/database validation, checksummed backups, migration plans, parity checks, history, resume and abort. Confirmations and durable journals protect migration/rollback; unfinished transitions keep affected gameplay storage unavailable. - Added the Channel compass in /ccxsettings and /chatsettings: Persistent keeps the last channel; Non persistent restores the configured default on reconnect, including after restarts. Changing the preference leaves the current channel unchanged, as do proxy backend transfers within the same connection.

    Changed

    - Settings, nickname, channel, ignore and moderation changes now report success after authority confirmation. Single-setting updates preserve other preferences; /ignore and /unignore apply the requested final state and enforce saved-list limits. A response timeout does not cancel an accepted database write. - With MYSQL, Paper loads complete player state before admission. Gameplay storage waits for database readiness and ownership checks; failures never silently select YAML. A database lease prevents two live processes from writing the same scope.

    Fixed

    Storage and recovery
    - Fixed /ccxstorage migrate files-to-mysql abort deleting rows that a planned/failed run never imported. Abort now preserves later imports and refuses deletion when imported contents have changed. - Fixed recovery accepting run IDs from another namespace or scope. Migration operations now enforce the configured owner, preventing cross-group changes. - Fixed Paper treating malformed persistent YAML as empty data and overwriting it. Startup reports the error; failed player/global reloads block writes and shutdown flushes until the file is repaired and successfully reloaded. - Fixed older concurrent YAML snapshots replacing newer data. Write failures now reach callers, and maintenance drains accepted writes—including timed-out requests—before migration or rollback. - Fixed writes retaining authority after waiting on locks past lease expiry. Shutdown also resolves queued operations and late completions, preventing expired owners from writing and callers from waiting indefinitely. - Fixed migration/rollback retries after a successful abort being mistaken for completed cutovers. Verified aborts can be retried without deleting journals; Velocity also supports cancelling unexecuted plans and safely repeating interrupted aborts. - Fixed MySQL startup deadlocks when network groups initialize separate scopes concurrently. Duplicate owners of the same scope remain rejected. - Fixed YAML saves after MySQL-to-YAML rollback dropping runtime-updated-at, regressing player aggregate versions and breaking canonical backup parity. - Fixed MySQL startup checksum mismatches from packaged migration line endings. JARs preserve the original migration bytes; never edit database checksums to bypass validation.
    Player state and moderation
    - Fixed delayed proxy mute lookups clearing newer mutes or leaving backend caches incorrectly cleared. - Fixed proxy public chat and PMs bypassing mutes before the player state loaded. With mute enforcement enabled, messages receive temporary-unavailability feedback until the authoritative mute lookup completes. - Fixed simultaneous Velocity YAML nickname changes assigning the same visible name to different players. Full player updates and /nick enforce normalized nickname ownership atomically. - Fixed late completions overwriting newer settings, channels, statistics, mutes, global state or Discord links/unlinks. Old quit cleanup no longer evicts newer login state; delayed code reads cannot restore invalidated Discord codes. - Fixed /chatmute overwriting the first-join counter and concurrent settings/ignore changes replacing unrelated values. - Fixed /corechatx reload temporarily resetting proxy preferences or statistics. Hydrated mirrors and pending requests survive reload, then refresh after transport registration. Deployment and storage identity changes still require restart.
    Discord and integrations
    - Fixed link instructions showing /link with custom Discord command names. Minecraft code help, required-link admission and Discord DMs now use the configured standalone/proxy command. - Fixed the first inbound Discord message showing an unresolved linked-player nickname before proxy player state loaded. - Fixed mandatory Discord linking admitting unlinked players when commands were unavailable or code creation failed. account-linking.require-linked-to-play now denies entry; Velocity checks before backend entry. deny-if-unverifiable only controls role checks for already linked players. - Fixed Velocity Discord console feedback missing messages sent through current or typed Adventure calls. - Reduced resource-pack fingerprint string copying during Discord ChatItem image initialization, cutting avoidable Paper startup/reload work while preserving the cache fingerprint format. - Fixed Discord token verification and gateway shutdown blocking Paper startup or /corechatx reload. Reconnection is asynchronous; retired connections and queued role callbacks cannot revive the old bridge. - Fixed linked Discord messages being dropped on standalone MySQL after the Minecraft player quit or the server restarted. Offline nickname/staff checks load saved settings asynchronously, honor allow-offline-linked-players and deny delivery when settings are unavailable.
    Chat and menus
    - Fixed dragging items into the temporary /ccxsettings inventory and losing them when the menu closed. - Fixed cross-server PM timeouts silently discarding pending deliveries. Each affected sender is now notified once. - Fixed inbound bridge and outbound Telegram length limits splitting emoji UTF-16 pairs.

    Configuration

    - Added update-check.enabled and update-check.interval-hours to Paper config.yml and Velocity velocity-config.properties. Customize OP notices through messages.yml keys updates.stable and updates.preview; Velocity notifications are console-only. - Added {link_command}, the configured Discord command name without /, to linking messages. Use /{link_command} code:{code}; standalone Paper or Velocity supplies account-linking.link-command-name. Exact older stock messages adapt automatically; customized messages need the placeholder added manually. - Paper storage.yml and Velocity velocity-storage.yml now configure storage.backend, stable namespace/scope, MySQL connections/TLS, bounded pools/executors, timeouts, leases and schema-auto-migrate. Supply credentials through storage.mysql.password-env; TLS defaults to VERIFY_IDENTITY. - Added saved persistent-channel-enabled, defaulting to true for existing players, and link-check-unavailable-kick in Paper Discord messages and Velocity account-linking messages.

    Permissions

    - Added corechatx.command.storage for inspection and backups: default op on Paper; grant it through the permission provider on Velocity. Migration/rollback changes remain console-only, including for operators. Velocity transitions require --all-scopes.

    Compatibility

    - Paper and Velocity JARs include the MySQL runtime and JDBC driver. Install only the matching platform JAR; separate storage-module, HikariCP or Connector/J installs are unnecessary. YAML-only setups need no database.

    Migration

    - **Before updating, stop the
    7 downloads
  6. 2026.2.6CoreChatX 2026.2.6Jul 26, 2026

    CoreChatX 2026.2.6

    Added

    - Added /hidechannel <channel> [minutes] and /unhidechannel <channel> so players can hide an accessible channel permanently or for a positive number of minutes without receiving or accidentally sending messages there.

    Fixed

    - Fixed Discord role-whitelist revocation: removing a linked member's final allowed role, or removing the member from the configured guild, now disconnects the online player on standalone Paper and Velocity and blocks reconnection until access is restored. Enable Discord's privileged Server Members Intent whenever account-linking.required-play-roles is active. - Fixed /chatsettings using repositories and menu services created before /corechatx reload, which could write preferences to obsolete runtime state. - Fixed /reply retaining direct and inverse conversation targets after a player leaves, preventing stale targets from carrying into a later session. - Fixed Velocity replay leaving an offline backend with an obsolete Discord link after an unlink aged out of the seven-day runtime cache or the proxy restarted; unlink tombstones are now durable and timestamp-ordered so newer relinks still win. - Fixed Discord player-list commands accessing Bukkit player and nickname state from JDA threads; Paper now captures an immutable player snapshot on the main thread before building the Discord response. - Fixed concurrent Discord link, unlink, pruning, and replay updates on Velocity so direct and inverse routing state remain consistent under simultaneous events.

    Permissions

    - Added corechatx.command.hidechannel and corechatx.command.unhidechannel, both enabled for players by default.
    28 downloads
  7. 2026.2.5CoreChatX 2026.2.5Jun 26, 2026

    CoreChatX 2026.2.5

    Added

    - Added bStats metrics for Paper and Velocity. - Added configurable public-chat /ignore behavior through ignore.public-chat-mode and per-channel channels.<id>.ignore.public-chat-mode.

    Fixed

    - Fixed public mention and custom-ping ignore handling so notifications-only blocks notifications from ignored players while keeping their public chat messages visible. - Fixed hide-message public-chat ignore mode so ignored players' public channel messages are not delivered to the viewer, including network and Discord bridge deliveries. - Fixed legacy formatting permission checks so denied nodes such as corechatx.format.color.aqua can reliably block matching & color codes. - Fixed denied legacy formatting codes being converted anyway after a second formatting pass.

    Configuration

    privacy.yml now supports:
    ignore:
      public-chat-mode: "notifications-only"
    channels.yml now supports per-channel overrides:
    channels:
      global:
        ignore:
          public-chat-mode: "inherit"
    Valid public-chat ignore modes are off, notifications-only and hide-message. Per-channel overrides also support inherit.

    Permissions

    - Added corechatx.format.color, corechatx.format.color.*, corechatx.format.style and corechatx.format.style.* as group permission nodes for player-authored legacy formatting.

    Technical

    - Paper and Velocity jars now include bStats' MIT-licensed single-file implementation and license notices without adding shaded external library jars.
    23 downloads
  8. 2026.2.4CoreChatX 2026.2.4Jun 16, 2026

    CoreChatX 2026.2.4

    Added

    - Added batched Discord console live logs for Paper and Velocity. CoreChatX now edits the latest bot log message until the configured size limit is reached, then sends a new silent message. - Added real Velocity proxy console live-log support through discord.console.live-log. - Added nicknames.allow-special-characters, default false, to keep /nick visible text limited to A-Z, a-z, 0-9 and _ unless explicitly enabled. - Added per-event Discord mirror overrides under discord.event-messages.events.death and discord.event-messages.events.advancement. - Added ChatItem snapshot references to cross-server private messages so /msg and /reply can carry inspectable ChatItem previews through Velocity.

    Changed

    - Discord console live logs now use discord.console.live-log-format.* for max-message-chars, monospace, line-prefix, date-format and hour-format. - /msg and /reply now render configured ChatItem tokens such as [i], [item], [inv] and related aliases instead of sending them as plain text. - Discord item detail tooltips now resolve MiniMessage tags, including formatting and gradients, before the image renderer draws the tooltip text. - /msg tab completion now includes matching custom nicknames and avoids suggesting the sender's own real name or nickname. - Network chat completion entries now include plain custom nicknames, with support for @nickname completions. - Velocity Discord nickname sync now includes the configured Minecraft nickname prefix when the player has a custom nickname, while keeping the real-name fallback unprefixed. - Velocity third-party library logs now use the CoreChatX startup banner style and summarize present, missing and downloaded libraries without duplicate status lines.

    Fixed

    - Fixed Discord inbound messages after a restart sometimes reaching Minecraft without the linked player's LuckPerms prefix. CoreChatX now waits for async LuckPerms user data before final delivery. - Fixed linked Discord inbound permission checks for offline linked players by resolving channel send permission and mute-chat bypass through async LuckPerms checks. - Fixed private-message target lookup so custom nicknames can resolve to the real Minecraft username before local or cross-server delivery. - Fixed Velocity private-message ChatItem routing so remote preview requests can be forwarded back to the backend that owns the original snapshot. - Fixed Discord ChatItem selected-item actions so expired or unavailable previews return a Discord message instead of leaving the interaction pending. - Fixed Velocity Discord inbound fanout so a message that cannot be delivered to any backend in the CoreChatX group returns a clear failure instead of failing silently. - Fixed Velocity Discord console command replies so commands with no output no longer send the debug-style Command executed. No command output was captured. message, and translatable Velocity command output such as !glist all is rendered as readable text instead of raw translation keys. - Fixed discord.connection-messages.channels fallback semantics so empty lists fall back to discord.default-channel-id, and the configured values are treated as Discord channel IDs. - Fixed Velocity Discord inbound handling so route dispatch runs through the Velocity scheduler when the proxy runtime is available.

    Configuration

    New or changed default keys: - config.yml -> nicknames.allow-special-characters - discord.yml -> discord.console.live-log-format.max-message-chars - discord.yml -> discord.console.live-log-format.monospace - discord.yml -> discord.console.live-log-format.line-prefix - discord.yml -> discord.console.live-log-format.date-format - discord.yml -> discord.console.live-log-format.hour-format - discord.yml -> discord.event-messages.events.death - discord.yml -> discord.event-messages.events.advancement - velocity-discord.yml -> discord.console.live-log-format.max-message-chars - velocity-discord.yml -> discord.console.live-log-format.monospace - velocity-discord.yml -> discord.console.live-log-format.line-prefix - velocity-discord.yml -> discord.console.live-log-format.date-format - velocity-discord.yml -> discord.console.live-log-format.hour-format - velocity-discord.yml -> discord.event-messages.events.death - velocity-discord.yml -> discord.event-messages.events.advancement

    Compatibility

    - CoreChatX proxy protocol is now version 27; update Paper and Velocity jars together. - Velocity third-party libraries are expected under the lowercase plugin data folder path plugins/corechatx/libs.

    Migration

    - If discord.connection-messages.channels is configured, keep Discord channel IDs in that list. - If you customized death-format, advancement-format, death-color, advancement-color, death-description or advancement-description, move those values into the matching discord.event-messages.events.<event> section. - Review discord.console.live-log-format.* if Discord console logging is enabled, especially if you do not want monospace code blocks or timestamp prefixes.
    18 downloads
  9. 2026.2.3CoreChatX 2026.2.3Jun 4, 2026

    CoreChatX 2026.2.3

    Added

    - Added channel command shortcuts through channels.<id>.shortcut. - Running /shortcut switches the player to that CoreChatX channel. - Running /shortcut <message> sends one message to that channel without changing the player's active channel. - Added Discord nickname sync with account-linking.sync-mc-name for both Paper STANDALONE and Velocity PROXY. Linked Discord members can have their Discord nickname updated to the Minecraft nickname, falling back to the real player name when no custom nickname is set. - Added Discord event mirrors through discord.event-messages for death and advancement messages. - Paper STANDALONE can send the event embeds directly. - Velocity PROXY can send the accepted backend events once per CoreChatX group. - Added Discord server status embeds through discord.server-status. - Paper STANDALONE can announce clean server startup/shutdown. - Velocity PROXY can announce proxy startup/shutdown and backend online/offline state changes from backend-groups.*. - proxy, default, and servers.<id> entries can override channels, titles, descriptions, colors, and enabled flags. - Added /corechatx itemcache <warmup|status|cancel> with corechatx.command.itemcache to pre-render Discord ChatItem item icons into cache. - Added ChatItem token placeholders for in-game token formats: {token}, {name}, {material}, and {amount}. {name} uses custom_name, then item_name, then the material fallback. - Added LICENSE and THIRD-PARTY-NOTICES.md to document CoreChatX proprietary code and the third-party dependency notice summary.

    Changed

    - Removed shaded jar packaging. Paper now declares external runtime libraries through plugin.yml libraries, while Velocity downloads its external third-party jars into plugins/CoreChatX/libs and logs whether libraries were downloaded or already present. - Discord ChatItem renders now default to discord-images.render.scale: 8, single-item-details-scale: 8, and single-item-details-icon-multiplier: 4. - Velocity PlaceholderAPI resolution through PAPIProxyBridge now times out after 3 seconds and falls back to the original text instead of waiting indefinitely.

    Fixed

    - Fixed mentions and ping notifications for channels the target player cannot read. If the mentioned player cannot receive the channel, CoreChatX no longer pings them and no longer renders the name as an @ mention. - Fixed Discord selected-item inspection hanging forever when the selected snapshot expired or the selected item could not be rendered. Discord now receives the configured expired-message or unavailable-message. - Fixed intermittent missing Discord ChatItem previews in PROXY mode by sending preview packets on the server thread, allowing empty failure packets, retrying failed Discord image sends, and completing chunk transfers only once all chunks are available. - Fixed enchanted books in Discord item rendering by including stored enchantments from EnchantmentStorageMeta, so stored enchants can appear in tooltip data and trigger enchanted rendering. - Fixed Velocity Discord inbound delivery so backend plugin-message send failures are caught and logged per backend instead of silently breaking delivery. - Fixed Velocity connection-message routing so proxy join/quit fanout handles backend send failures and keeps group join tracking consistent. - Fixed Velocity YAML default synchronization for keys that existed with a null value, so missing defaults can be restored more consistently.

    Configuration

    New or changed default keys: - channels.<id>.shortcut - chatitems.yml -> tokens.item.token-format placeholders: {token}, {name}, {material}, {amount} - chatitems.yml -> discord-images.render.scale: 8 - chatitems.yml -> discord-images.render.single-item-details-scale: 8 - chatitems.yml -> discord-images.render.single-item-details-icon-multiplier: 4 - account-linking.sync-mc-name - discord.event-messages - discord.server-status plugin.yml now includes: - Paper runtime libraries - corechatx.command.itemcache

    Migration

    - Review discord.connection-messages.channels if you enabled Discord join/quit mirrors. Values must now be Discord channel IDs, not CoreChatX channel IDs. - Review discord.server-status, discord.event-messages, and account-linking.sync-mc-name before enabling them, especially on Velocity networks. - Existing configs should receive missing default keys automatically, but server owners should still compare channels.yml, chatitems.yml, discord.yml, and velocity-discord.yml with the new defaults.
    15 downloads
  10. 2026.2.2CoreChatX 2026.2.2Jun 2, 2026

    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. - 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.console in Paper discord.yml can run a standalone or per-backend console bot. - discord.console in Velocity velocity-discord.yml can 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-list command support for both Paper STANDALONE and Velocity PROXY. - Text command default: !playerlist. - Slash command default: /playerlist. - Velocity resolves the target proxy group from discord.inbound.channel-routes. - Added Discord text channel description updates through discord.channel-description. - Paper STANDALONE: updates standalone channel topics. - Velocity PROXY: updates text channel topics per configured network-channel. - Internal placeholders: {online} and {online_in_group}. - PlaceholderAPI placeholders are supported on Paper; Velocity can resolve them through PAPIProxyBridge when installed. - 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 PROXY mode. 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 PAPIProxyBridge for Velocity-side formats such as player list rows, channel descriptions, join/quit messages, and fallback Discord formats. - Paper discord.yml is now clearly split by runtime responsibility: - STANDALONE owns Discord bridge, account linking, login gates, player list, channel descriptions, and console. - PROXY keeps 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 @here can 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: ```yaml account-linking: required-play-roles: groups: # corechatx:survival: # e
    8 downloads
  11. 2026.2.1CoreChatX 2026.2.1May 26, 2026

    CoreChatX 2026.2.1

    Added

    - Added Velocity-owned runtime data authority for PROXY deployments. Player settings, nicknames, ignore lists, active channels, mutes, global state, first-join count, Discord links and pending link codes are stored per Velocity network-channel group. - Added Velocity-side Discord bot ownership through plugins/corechatx/velocity-discord.yml for proxy networks. In PROXY, Discord bridge I/O, Discord account linking, required-link-to-play and required-role-to-play are handled by Velocity. - Added group-specific Discord required role gates through account-linking.required-play-roles.groups.<network-channel>, so separate CoreChatX proxy groups can require different Discord roles. - Added optional Paper backend Discord console-only bots in PROXY mode through discord.yml -> discord.console.*, intended for per-backend console access with separate bot tokens. - Added configurable Discord join/quit/first-join mirrors with plain text or embed output, including separate join, first-join and quit descriptions and colors. - Added CoreChatX PlaceholderAPI values: - %corechatx_player_nickname% returns the same visual value as CoreChatX {player_nickname}. - %corechatx_first_join_date% returns the player's recorded first join date. - %corechatx_messages_count% returns the player's persisted public message count.

    Changed

    - In PROXY, Paper backends act as runtime/cache clients for cross-server data and send writes to Velocity instead of persisting network runtime state locally. - Join, quit and first-join network announcements are coordinated through Velocity in PROXY mode, so backend switches inside the same CoreChatX group do not create extra connection messages. - Required Discord link/role checks can be decided before the player fully enters a backend when Velocity can resolve the target backend group through backend-groups.<velocity-server-name>. - Minecraft -> Discord messages in proxy mode are rendered by Paper, then delivered by the Velocity Discord bot. Discord -> Minecraft messages are read by Velocity and routed to the configured CoreChatX group/channel. - Minecraft-to-Discord bridge output can prevent raw Discord mention syntax from pinging users, roles, @everyone or @here.

    Fixed

    - Fixed the previous proxy limitation where a backend without online players could miss Discord link state and incorrectly kick a linked player after a server switch. - Fixed Velocity Discord link-state replay on backend switch so previously empty backends get delayed retry replays instead of an immediate failed replay warning while plugin messaging is not ready yet. - Fixed the previous Discord role-check limitation that required a backend authority server with an online player carrier. Velocity now checks Discord roles directly. - Fixed the first join after a proxy/backend restart sometimes using the real player name instead of the saved CoreChatX nickname in proxy-level connection messages. - Fixed duplicate Discord join/quit mirrors when multiple exported CoreChatX channels mapped to the same Discord target. - Fixed proxy runtime player-state cache reads re-sending unnecessary GET_PLAYER_STATE requests after the state was already cached, reducing duplicate proxy data traffic during repeated settings/nickname lookups. - Fixed Discord and Telegram outbound bridge messages showing raw MiniMessage tags from formatted labels, bridge templates, nicknames or rank prefixes. Values like <color:#e8481D>[EXAMPLE]</color> now appear as [EXAMPLE]. - Fixed legacy and hex formatting leaking into external bridge output from identity fields. Values like &b&lIce, &3&lUser and &#ff0000Rank are now sent as plain text. - Fixed deployment.mode changes during /corechatx reload partially switching storage authority without a full restart.

    Configuration

    velocity-config.properties supports backend group pins for pre-backend login gates:
    network-channel=corechatx:survival,corechatx:minigames
    backend-groups.survival-1=corechatx:survival
    backend-groups.minigames-1=corechatx:minigames
    velocity-discord.yml owns proxy Discord setup:
    account-linking:
      enabled: true
      require-linked-to-play: true
      required-play-roles:
        enabled: true
        guild-id: "123456789012345678"
        role-ids:
          - "234567890123456789"
        groups:
          "corechatx:survival":
            role-ids:
              - "345678901234567890"
    
    discord:
      enabled: true
      bot-token: "your-token"
      inbound:
        channel-routes:
          "456789012345678901":
            channel: "global"
            network-channel: "corechatx:survival"

    Safety

    - Bridge formatting cleanup applies to labels and identity/template fragments. Player message content in {plain_text} is preserved, so normal text such as R&D or links in angle brackets is not stripped.

    Compatibility

    - Paper and Velocity CoreChatX jars must be updated together. The plugin-message protocol changed for the new proxy data authority and mixed-version Paper/Velocity networks are not supported.

    Migration

    - A clean setup is recommended for 2026.2.1, especially on existing Velocity networks. Regenerate fresh Paper and Velocity config files, then manually reapply values such as deployment.*, channel formats, Discord token, Discord routes and required role IDs. - In PROXY, do not treat old Paper backend runtime YAML files as authoritative network data. Velocity now owns cross-server runtime/user state under plugins/corechatx/data/groups/<encoded-channel>/.
    14 downloads
  12. 2026.2.0CoreChatX 2026.2.0May 24, 2026

    CoreChatX 2026.2.0

    Added

    - Added Velocity-owned runtime data authority for PROXY deployments. Player settings, nicknames, ignore lists, active channels, mutes, global state, first-join count, Discord links and pending link codes are now stored per Velocity network-channel group. - Added Velocity-side Discord bot support through plugins/corechatx/velocity-discord.yml for proxy networks. In PROXY, Discord bridge I/O, Discord account linking, required-link-to-play and required-role-to-play are handled by Velocity. - Added group-specific Discord required role gates through account-linking.required-play-roles.groups.<network-channel>, so separate CoreChatX proxy groups can require different Discord roles. - Added PlaceholderAPI placeholder %corechatx_player_nickname%, matching CoreChatX {player_nickname} output.

    Changed

    - In PROXY, Paper backends now act as runtime/cache clients for cross-server data and send writes to Velocity instead of persisting network runtime state locally. - Required Discord link/role checks can now be decided before the player fully enters a backend when Velocity can resolve the target backend group through backend-groups.<velocity-server-name>. - Minecraft -> Discord messages in proxy mode are rendered by Paper, then delivered by the Velocity Discord bot. Discord -> Minecraft messages are read by Velocity and routed to the configured CoreChatX group/channel.

    Fixed

    - Fixed the previous proxy limitation where a backend without online players could miss Discord link state and incorrectly kick a linked player after a server switch. - Fixed the previous Discord role-check limitation that required a backend authority server with an online player carrier. Velocity now checks Discord roles directly.

    Configuration

    velocity-config.properties now supports backend group pins for pre-backend login gates:
    network-channel=corechatx:survival,corechatx:minigames
    backend-groups.survival-1=corechatx:survival
    backend-groups.minigames-1=corechatx:minigames
    velocity-discord.yml now owns proxy Discord setup:
    account-linking:
      enabled: true
      require-linked-to-play: true
      required-play-roles:
        enabled: true
        guild-id: "123456789012345678"
        role-ids:
          - "234567890123456789"
        groups:
          "corechatx:survival":
            role-ids:
              - "345678901234567890"
    
    discord:
      enabled: true
      bot-token: "your-token"
      inbound:
        channel-routes:
          "456789012345678901":
            channel: "global"
            network-channel: "corechatx:survival"

    Compatibility

    - Paper and Velocity CoreChatX jars must be updated together. The plugin-message protocol changed for the new proxy data authority and mixed-version Paper/Velocity networks are not supported.

    Migration

    - A clean setup is recommended for 2026.2.0, especially on existing Velocity networks. Regenerate fresh Paper and Velocity config files, then manually reapply values such as deployment.*, channel formats, Discord token, Discord routes and required role IDs. - In PROXY, do not treat old Paper backend runtime YAML files as authoritative network data. Velocity now owns cross-server runtime/user state under plugins/corechatx/data/groups/<encoded-channel>/.
    9 downloads
  13. 2026.1.8CoreChatX 2026.1.8May 19, 2026

    CoreChatX 2026.1.8

    Added

    - Added optional Discord-Minecraft account linking for Discord inbound chat, with Minecraft /discord link, /discord unlink, /discord linked, admin link override, Discord /link code:<code>, Discord /unlink, persistent discordlinks.yml, and same-proxy-group sync. - Added linked Discord inbound identity rendering: linked Discord users can be shown with their Minecraft real name, CoreChatX nickname, and Minecraft rank data instead of Discord-only identity. - Added optional linked-user enforcement for Discord inbound, including blocked unlinked messages, optional Discord message deletion, optional DM feedback, Minecraft mute checks, and CoreChatX channel send-permission checks. - Added optional Discord link-to-play enforcement. When discord.inbound.account-linking.require-linked-to-play is true, unlinked Minecraft players are kicked after joining with a temporary Discord /link code:<code> in the kick reason.

    Changed

    - Player mention suggestions now include custom nicknames as well as real Minecraft usernames, including players online on other backends in the same Velocity network-channel group. - Mention tokens now display the custom nickname when a tagged player has one, while still resolving the player identity safely. - /realname <nickname> tab completion now includes custom nicknames from the whole current proxy group, not only the current backend.

    Fixed

    - Fixed settings updates such as PM toggles, GUI toggles, and locale changes so they preserve the saved custom nickname instead of clearing it. - Fixed Discord link sync ordering so stale remote LINK, UNLINK, or pending-code packets cannot overwrite newer account-link state between backends in the same proxy group.

    Configuration

    discord.yml now supports:
    discord:
      inbound:
        account-linking:
          enabled: false
          require-linked: false
          require-linked-to-play: false
        route-overrides: {}
    channels.yml Discord sections now support per-channel inbound account-link overrides:
    discord:
      require-linked-inbound: "inherit"
    messages.yml now supports the kick message shown to unlinked players:
    discord:
      link-required-kick: "<red>You must link your Discord account to play.</red>\n<gray>Use Discord command </gray><white>/link code:{code}</white><gray> within </gray><white>{minutes}</white><gray> minute(s).</gray>"

    Compatibility

    - CoreChatX plugin-message protocol is now 13. Paper and Velocity must both run 2026.1.8; mixed proxy/backend versions are not supported.

    Safety

    - Link-to-play joins do not publish normal join, first-join, state-sync, or quit messages for players that are immediately kicked for missing Discord linking.
    12 downloads
  14. 2026.1.7CoreChatX 2026.1.7May 17, 2026

    CoreChatX 2026.1.7

    Nicknames

    - Split player display placeholders: - {player_name} always resolves to the real Minecraft username. - {player_nickname} resolves to the custom nickname when set, otherwise the real username. - Added nicknames.prefix in config.yml. - The prefix is included directly in {player_nickname} only when a custom nickname exists. - Updated default chat, group chat, join/quit, first-join, and ChatItem preview titles to use {player_nickname} where a display name is intended. - Added safe MiniMessage support to /nick. - Allowed: named colors, formats, hex colors, and gradients. - Legacy & codes and &#rrggbb hex still work. - Unsupported MiniMessage tags are stripped silently while keeping their text. - Added nickname permissions for hex and gradients: - corechatx.nick.color.hex - corechatx.nick.color.gradient - corechatx.nick.color grants both children. - Added duplicate nickname protection. - Custom plain nicknames cannot duplicate another custom nickname or another player's real username. - A player may still set their own real username as nickname text, useful for color-only setups. - Added /realname <nickname>. - Permission: corechatx.command.realname - Tab completion suggests only custom nickname plain text, without the configured prefix.

    Proxy State Sync

    - Fixed cross-server nickname state propagation inside the same Velocity channel group. - Player state sync now fans out to the other registered backends in the same group, instead of only caching the update on the proxy. - Player state sync remains group-isolated and does not cross into other network-channel groups. - Stale or invalid state sync packets for players not currently online in the source group are ignored by Velocity.

    Network Compatibility

    - The CoreChatX plugin-message protocol remains 11. - Network chat packets carry real username and nickname separately. - Paper and Velocity should both run 2026.1.7; mixed plugin/proxy versions are not supported for this release line.
    17 downloads
  15. 2026.1.6CoreChatX 2026.1.6May 16, 2026

    CoreChatX 2026.1.6

    Added

    - Added join-quit.mode in config.yml to choose how join, first-join, and quit messages are delivered. - LOCAL keeps messages on the current Paper backend. - NETWORK forwards true network join/leave events through Velocity when proxy transport is available. - Added Velocity multi-channel proxy groups through the existing velocity-config.properties -> network-channel key. - Legacy single-channel format still works: network-channel=corechatx:main. - Multiple isolated groups use a comma-separated list: network-channel=corechatx:survival,corechatx:minigames. - Each Paper backend joins the group matching its own config.yml -> deployment.network-channel. - Added persistent /nick support on Paper. - /nick <nickname> sets your nickname. - /nick off, /nick clear, and /nick reset clear it. - /nick <player> <nickname|off> lets permitted staff change another online player's nickname.

    Changed

    - Velocity routing is now isolated per configured network channel. - Network chat, private messages, player directory, TAB/completions, state sync, ChatItem snapshot routing, and join/leave routing stay inside the source channel group. - Private message lookup now searches only players known inside the same proxy group, not the whole proxy. - ChatItem snapshot cache and pending routes are naturally isolated because each channel has its own router. - Velocity now learns backend group membership from plugin messages and a lightweight registration handshake. - Paper still does not need a new config field. - If a backend starts sending CoreChatX packets on another configured channel, Velocity moves it to that group and logs the change. - Network join/leave messages now understand group boundaries. - Moving between backend servers inside the same group does not emit fake quit/join announcements. - Moving between different CoreChatX proxy groups emits quit in the old group and join in the new group. - Proxy disconnect emits quit only in the player's last known group.

    Nicknames

    - Nicknames are persisted in player data and synchronized through CoreChatX state sync in proxy mode. - Chat, PMs, spy output, broadcasts, join/quit/first-join messages, and network chat display the nickname when one is set. - Real player identity remains unchanged: lookup, replies, ignores, privacy, routing, and state sync still use UUIDs and real Minecraft names internally. - Added dedicated permissions: - corechatx.command.nick - corechatx.command.nick.others - corechatx.nick.color - corechatx.nick.format - Added per-code nickname permissions so server owners can allow specific colors or styles only. - Example color child: corechatx.nick.color.red - Example format child: corechatx.nick.format.bold - Added nicknames.change-only-colors in config.yml. - false lets /nick IceWolf change the visible text. - true only allows color/style changes while the visible text stays exactly the player's real Minecraft username.

    Configuration

    config.yml now includes:
    nicknames:
      # false = /nick can change the visible name text and styling, for example IceWolf23X -> IceWolf.
      # true = /nick can only change allowed colors/styles; the visible text after removing formatting must stay exactly the real Minecraft username.
      # Example with true: IceWolf23X may use &cIceWolf23X, but not &cIceWolf.
      change-only-colors: false
    
    join-quit:
      # LOCAL = announce only on the current Paper backend.
      # NETWORK = in PROXY mode, announce true network join/leave through the Velocity module.
      mode: "LOCAL"
      join-enabled: true
      quit-enabled: true
    velocity-config.properties now supports a list:
    # Comma-separate values to split this proxy into isolated CoreChatX network groups.
    # Each Paper backend joins the group matching its deployment.network-channel.
    network-channel=corechatx:main
    Example multi-group setup:
    network-channel=corechatx:survival,corechatx:minigames
    Paper backends still use:
    deployment:
      network-channel: "corechatx:survival"

    Compatibility

    - Existing single-channel Velocity installs keep their previous behavior. - Existing Paper configs do not need a new deployment key. - Existing nickname-free player data remains valid. - The player state sync decoder accepts the previous protocol shape for compatibility and treats missing nickname data as blank.
    14 downloads
  16. 2026.1.5CoreChatX 2026.1.5May 12, 2026

    CoreChatX 2026.1.5

    Fixed

    - Discord -> Minecraft player mentions are now controlled by the target channel's allow-mentions.from-discord setting. - Discord custom pings such as @staff now require at least one matching Discord role ID configured in pings.yml. - Custom pings with missing or empty discord-roles now stay as plain text when used from Discord and do not notify Minecraft players. - Minecraft custom pings still use use-permission; existing receive-permission checks still apply to Minecraft recipients. - Telegram inbound mentions are now controlled by allow-mentions.from-telegram. - Network chat from other Minecraft servers remains treated as Minecraft-originated and uses allow-mentions.from-minecraft.

    Configuration

    channels.yml now uses source-specific mention gates:
    allow-mentions:
      from-minecraft: true
      from-discord: true
      from-telegram: true
    pings.yml custom pings now support Discord role allow-lists:
    custom-pings:
      staff:
        trigger: "@staff"
        use-permission: "corechatx.ping.use.staff"
        receive-permission: "corechatx.staff"
        discord-roles:
          - "123456789012345678"
        bypass-toggle: true
        token-format: "<#ff8f8f>{trigger}</#ff8f8f>"
    Empty discord-roles: [] means the ping cannot be activated from Discord.

    Migration

    - Existing scalar values like allow-mentions: true or allow-mentions: false are replaced at startup with the new nested default section. - Existing nested source values are preserved, and missing nested keys are added automatically.
    14 downloads
  17. 2026.1.4CoreChatX 2026.1.4May 11, 2026

    CoreChatX 2026.1.4

    Fixed

    - Discord -> Minecraft messages no longer force a hardcoded [Discord] sender prefix. - Discord -> Minecraft messages can now be fully formatted from discord.inbound.format. - Discord bridge formats can now be overridden per channel from channels.yml. - Telegram bridge formats can now be overridden per channel from channels.yml. - Discord -> Minecraft messages now expose {rank_prefix} as the sender's highest Discord role name. - Added {role_color} for Discord -> Minecraft messages. It resolves to the highest colored Discord role and can be used as a MiniMessage color tag. - Added {channel_prefix} for Discord -> Minecraft messages so custom channel tags can be kept in discord.inbound.format. - PlaceholderAPI placeholders are now processed in discord.format for Minecraft -> Discord messages. - Minecraft -> Discord discord.format now supports {rank_prefix}. - Minecraft formatting codes from LuckPerms or PlaceholderAPI prefixes are stripped before messages are sent to Discord or Telegram, while the actual message text is preserved. - Telegram outbound formats also support {rank_prefix} if the token is used. - Inbound bridge logging now handles unexpected/unknown source ids without throwing.

    Configuration

    Discord -> Minecraft messages are now controlled by one format key:
    discord:
      inbound:
        format: "{channel_prefix}[Discord] {role_color}{rank_prefix}</role_color>{sender_name}: {plain_text}"
    Per-channel bridge formats can be set in channels.yml:
    channels:
      mod:
        discord:
          outbound-format: "[MOD] {rank_prefix}{sender_name}: {plain_text}"
          inbound-format: "{channel_prefix}[Discord] {role_color}{rank_prefix}</role_color>{sender_name}: {plain_text}"
        telegram:
          outbound-format: "[MOD] {rank_prefix}{sender_name}: {plain_text}"
          inbound-format: "{channel_prefix}[Telegram] {sender_name}: {plain_text}"
    If a per-channel format is blank, CoreChatX falls back to the matching global bridge format. Available inbound tokens: - {source}: display source name, for example Discord or Telegram - {source_type}: raw source id, for example discord - {channel_id}: CoreChatX channel id - {channel_prefix}: prefix extracted from the channel format, or the configured channel prefix fallback - {sender_name}: bridge sender display name - {rank_prefix}: Discord sender's highest role name, blank for Telegram - {role_color}: MiniMessage color tag from the highest colored Discord role, or white - {plain_text} / {message}: sanitized message content Example with role-colored prefix and message:
    discord:
      inbound:
        format: "{channel_prefix}<dark_gray>[Discord]</dark_gray> {role_color}{rank_prefix}</role_color> <white>{sender_name}</white>: {role_color}{plain_text}</role_color>"
    Minecraft -> Discord formats can now use PlaceholderAPI placeholders and {rank_prefix}:
    discord:
      format: "[{source_server}] [{channel_id}] {rank_prefix}{sender_name}: {plain_text}"

    Safety

    - Bridge formats are now validated on config load. - Unknown placeholders and invalid inbound MiniMessage syntax produce warnings instead of failing startup. - The outbound formatter strips formatting from templates and rank prefixes, but preserves literal ampersands in the real chat message.
    12 downloads
  18. 2026.1.3CoreChatX 2026.1.3May 11, 2026

    CoreChatX Config Manager Changes

    Added

    - Added automatic default-key synchronization for Paper YAML configuration files. - When a config file exists but is missing a key from the bundled default, CoreChatX now writes that missing key back into the real file. - Existing configured values are preserved and are not overwritten by bundled defaults. - Missing nested sections and empty map sections are restored, including values such as route maps and channel overrides. - The default locale file locales/en_us.yml is also synchronized from bundled defaults. - Velocity velocity-config.properties now appends missing bundled default properties when the file exists but is incomplete.

    Safety Rules

    - Invalid or unparsable YAML files are not rewritten automatically. - Runtime data files such as playerdata.yml, state.yml, channeldata.yml, ignoredata.yml, and mutedata.yml are not treated as normal admin config for default-key synchronization. - Velocity properties are appended instead of rewriting the whole file, so existing comments and values stay intact.

    Technical

    - Added DefaultConfigSynchronizer as the Paper-side central YAML loader/synchronizer. - Updated Paper config loading paths to use the synchronizer through ConfigurationService, ConfigRegistry, and the default locale loader. - Added regression coverage for restoring missing nested defaults without overwriting existing values. - Added missing-property synchronization to the Velocity bootstrap config loader.
    9 downloads
  19. 2026.1.2CoreChatX 2026.1.2May 11, 2026

    CoreChatX 2026.1.2

    Fixed

    - Discord -> Minecraft messages no longer force a hardcoded [Discord] sender prefix. - Discord -> Minecraft messages can now be fully formatted from discord.inbound.format. - Discord -> Minecraft messages now expose {rank_prefix} as the sender's highest Discord role name. - Added {role_color} for Discord -> Minecraft messages. It resolves to the highest Discord role color and can be used as a MiniMessage color tag. - PlaceholderAPI placeholders are now processed in discord.format for Minecraft -> Discord messages. - Minecraft -> Discord discord.format now supports {rank_prefix}. - Telegram outbound formats also support {rank_prefix} if the token is used.

    Configuration

    Discord -> Minecraft messages are now controlled by one format key:
    discord:
      inbound:
        format: "[Discord] {role_color}{rank_prefix}</role_color>{sender_name}: {plain_text}"
    Available Discord inbound tokens: - {source}: display source name, for example Discord - {source_type}: raw source id, for example discord - {sender_name}: Discord sender display name - {rank_prefix}: highest Discord role name - {role_color}: MiniMessage color tag from the highest Discord role color, or white - {plain_text} / {message}: sanitized message content Example with role-colored prefix and message:
    discord:
      inbound:
        format: "<dark_gray>[Discord]</dark_gray> {role_color}{rank_prefix}</role_color> <white>{sender_name}</white>: {role_color}{plain_text}</role_color>"
    Minecraft -> Discord formats can now use PlaceholderAPI placeholders and {rank_prefix}:
    discord:
      format: "[{source_server}] [{channel_id}] {rank_prefix}{sender_name}: {plain_text}"
    11 downloads
  20. 2026.1.1CoreChatX 2026.1.1May 10, 2026

    CoreChatX 2026.1.1

    Fixed
    - Fixed a chat formatting crash when PlaceholderAPI or other plugins returned legacy Minecraft formatting codes inside MiniMessage chat formats. - Added support for converting legacy & and § formatting codes into MiniMessage before rendering. - Added support for legacy hex color formats such as &#ffa200, &x&f&f&a&2&0&0, and §x§f§f§a§2§0§0. - Fixed compatibility with EssentialsX nicknames generated with legacy hex colors, which could previously cause public chat messages to fail rendering.
    Technical
    - Added regression tests for legacy formatting conversion and Essentials-style hex nicknames. - Improved sanitization of legacy hex formatting in chat-related text paths.
    9 downloads
  21. 2026.1.0CoreChatX 2026.1.0May 6, 2026
    Velocity Version upload to Modrinth
    25 downloads

Similar projects

Plugin →