Links
Tags
Creators
Details
1.6.0
Compatibility
Changes
CatCraftTitle 1.6.0 更新日志 / Changelog
中文版本
本次更新需要注意:
本次更新是一次较大的功能与稳定性更新,新增并重做了 管理员 GUI 控制面板、面板内玩家称号管理、商店商品管理面板、商品三态(不可售卖的头衔)、内置金币 / Vault 经济与每日签到、自动称号条件引擎增强、更新检测重做、Tab / 头顶称号显示 以及 离线(非正版)服务器支持 等。所有增强功能默认处于关闭状态,需要管理员在配置或面板中手动开启。
请务必删除
.\plugins\CatCraftTitle中的config.yml文件,让插件重新生成包含全部新配置项与最新注释的干净配置文件,避免旧配置与新功能产生兼容性问题;不删除可能无法使用新功能或出现未知 BUG。删除前建议先备份一份,或先记下你自己改动过的设置。玩家数据不受影响:数据库会在启动时自动迁移(
player_titles增加is_auto列、shop_items主键改为(id, type)并增加state/note列、新增player_names名字缓存表),迁移带备份与行数校验,失败会自动回滚为原表。
新增内容:
- 管理员 GUI 控制面板重做 – 通过
/titleadmin panel打开:按「信息区 / 功能开关区 / 管理入口区 / 底部摘要」分区,可查看真实 TPS、在线人数、内存、数据库与调度器状态,一键切换语言、开关 RGB / 商店 / 属性支持 / Tab 显示 / 聊天格式、重载配置、立即检查更新 - 面板内直接管理玩家称号 – 在线玩家列表(头像分页)与 按名字或 UUID 搜索玩家(支持离线玩家),可直接发放、激活、改名、删除头衔与后缀,清空要求二次确认
- 商店商品管理面板 – 在面板中完成新增商品、修改价格、切换状态、填写备注、删除商品,无需敲命令
- 不可售卖的头衔(商品三态) – 每个商品可设为「可购买 / 展示但不可购买 / 完全隐藏」,并可写备注(如「活动限定」);隐藏商品在购买接口上与不存在的商品一视同仁,玩家无法探测
- 经济系统与每日签到 – 内置金币或 Vault 经济二选一(
shop.currency: internal|vault),支持每日签到奖励(shop.signin-reward) - 属性插件支持(自动称号系统)大幅增强 – 基于 PlaceholderAPI 与内置变量,按等级、金币、击杀数、权限等条件自动授予或移除称号;条件支持
>=、<=、==、!=、>、<(也接受=>=<<>),并支持且 / 或 / 非、括号、区间in 10..30、字符串比较、正则与真值判断 - 数值容错 –
1,234、85%、物理攻击 120这类文本都能解析出数字参与比较(旧版会直接判定为不满足,这是很多人觉得「属性插件不兼容」的原因) - 30+ 内置变量,不需要 PlaceholderAPI –
{level}{health}{food}{playtime_minutes}{kills}{deaths}{balance}{titles}{online_players}{hour}{perm:权限节点}{has_title:ID}等 - 更新检测重做 – 5 个回退来源(GitHub API → 网页 latest → tags →
build.gradle)、失败自动重试、默认每 6 小时自动检查一次;发现新版本时在控制台提示,并 在聊天栏通知在线管理员(含管理员进服时的延迟提醒) - Tab 列表 + 头顶昵称显示称号 / 后缀 – 基于记分板队伍实现,可独立开关;若玩家已被其他记分板 / Rank 插件接管,插件会尊重原有显示,不强行覆盖
- RGB 渐变色支持 –
settings.gradient-colors支持 1 段纯色到多段平滑渐变,任意文本可使用&#RRGGBB十六进制颜色 - 自定义消息文件 – 自动生成
messages_zh.yml/messages_en.yml,所有文案服主都能改;升级后新增的键会自动补进现有文件,不会覆盖你的修改 - 配置自动升级 – 插件启动 / 重载时会把新版本新增的配置项补进现有
config.yml(1.18 及以上服务端还会保留注释) - 离线(非正版)服务器支持 – 新增
player_names名字缓存表,启动时自动从usercache.json回填;面板可按名字搜索从未在插件中记录过的老玩家,离线服还会按离线 UUID 规则匹配 - 权限节点可配置 –
permissions.admin / use / shop,可对接服务器现有的权限体系 - 新增指令 –
/titleadmin panel、/titleadmin reload、/titleadmin autotest [玩家]、/titleadmin updatecheck、/titleadmin shop add / remove / setprice / state / note / list / givebalance / setbalance / toggle / currency
改进与优化:
• 调度器统一封装:Spigot / Paper / Purpur 走 Bukkit 调度器,Folia 自动识别并使用区域调度器(全局区域 + 实体调度),且任何调度失败都不会再影响插件加载
• 启动流程加固:可选功能(属性支持、TPS 统计、名字回填、更新检测、启动信息)初始化失败只记录警告并跳过,不会导致插件被禁用
• 玩家相关操作统一改到玩家线程执行:聊天栏输入回调、更新提示、自动称号判定、显示刷新等,避免异步线程操作玩家(Folia 上尤其重要)
• 命令与文案体系:/catcraft 与 /titleadmin 的 Tab 补全与执行分支完全对齐,控制台执行玩家命令不再报错;命令输出统一走颜色转换(&e &6 &#RRGGBB 正常上色),中英文案占位符顺序与类型一致
• 数据库迁移安全化:迁移前建立备份表、校验行数、失败自动回滚;余额首次建行走同一把锁,避免并发覆盖
• 构建与源码:Gradle wrapper 升级到 9.3.0(旧版 8.10.2 在 JDK 24+ 上无法构建);打包出的 jar 内已包含 MySQL / PostgreSQL / SQLite 三种驱动;移除 Java 源码内注释,只保留配置文件说明
修复问题:
• 修复商品表主键迁移会丢数据 – 旧结构迁移时只复制 4 列,会让「展示 / 隐藏」状态被重置为可购买、备注丢失;现在会保留 state / note,并在迁移后校验行数、失败自动回滚
• 修复每日签到可能白吃一次 – 旧逻辑先记录签到日期再发奖励,发奖失败会导致当天无法再签;现在奖励为 0 不算失败,发奖失败会回滚签到记录
• 修复自动称号规则可能「全服都满足」 – 比较运算符右侧解析为空(变量名写错、插件未装)时字符串比较恒为真;现在一律判定为不满足
• 修复 Folia 上插件被禁用 – 1.19.4 没有 RegionizedServer 类导致 Folia 识别失败,所有定时任务走 Bukkit 调度器并抛异常;现在改为多标记探测 + 按 API 可用性选路
• 修复聊天输入在异步线程操作界面 – 在聊天栏输入搜索 / 发放内容时,旧版直接在异步聊天线程里开界面、改显示;现在统一调度回玩家线程
• 修复离线玩家发放不查重 – 会导致同 ID 的已有头衔被覆盖成后缀;现在与在线路径一致地查重
• 修复管理面板误触发 – Q 键、数字键、交换副手等点击也会触发购买或切换状态;现在只响应左 / 右 / Shift 点击
• 修复余额并发覆盖 – 首次读取余额时「建行」不在锁内,可能覆盖刚充值的余额;现在同一把锁内完成
• 修复价格与金额校验 – 负数价格会被当作免费商品;超大金额强转 int 会溢出成负数余额;负数 ID 可被发放但永远无法显示,均已拦截
• 修复界面与文案细节 – 管理面板「首页 / 末页」箭头无效、空列表提示被背景覆盖、超长称号丢失颜色码、英文提示占位符顺序错误、控制台执行 /catcraft help 提示缺少消息键、/titleadmin autotest 不显示 PlaceholderAPI 状态、TPS 显示假值等
English Version
Note for this update:
This is a large feature and stability update: it adds and reworks an Admin GUI Control Panel, player title management inside the panel, a shop management panel, three item states (titles that are not for sale), internal coins / Vault economy with daily sign-in, a much stronger auto-title condition engine, a reworked update checker, tab / nametag title display and offline (non-premium) server support. All enhancements are disabled by default and must be enabled manually by an administrator.
You must delete the
config.ymlfile in.\plugins\CatCraftTitleso the plugin generates a clean configuration containing every new option and the latest comments; keeping an old config may cause new features to fail or produce unexpected bugs. Consider backing it up first, or write down the settings you changed yourself.Player data is not affected: the database migrates automatically on startup (
player_titlesgainsis_auto;shop_itemsmoves to the(id, type)primary key and gainsstate/note; aplayer_namescache table is created). Every migration makes a backup, verifies row counts and rolls back on failure.
New Features:
- Reworked Admin GUI Control Panel – Open with
/titleadmin panel: split into info / toggles / management entries / summary, showing real TPS, online count, memory, database and scheduler status, with one-click language switch, toggles for RGB / shop / attribute support / tab display / chat format, config reload and a manual update check - Player title management inside the panel – Online player list (paginated heads) and search by name or UUID (offline players included); grant, activate, rename and delete titles and suffixes, with a confirmation step for clearing everything
- Shop management panel – Add items, change prices, cycle states, edit notes and delete items without typing commands
- Titles that are not for sale (three item states) – Each item can be sellable, showcase only or hidden, with an optional note (e.g. "event reward"); hidden items are indistinguishable from missing ones through the purchase API
- Economy and daily sign-in – Internal coins or Vault economy (
shop.currency: internal|vault) plus a daily sign-in reward (shop.signin-reward) - Greatly improved attribute plugin support (auto titles) – Grant or revoke titles from PlaceholderAPI placeholders and built-in variables using operators
>=,<=,==,!=,>,<(SQL-style=>=<<>are also accepted), plus and / or / not, parentheses, ranges (in 10..30), string comparisons, regex and truthiness - Forgiving numbers –
1,234,85%and物理攻击 120all resolve to numbers (older builds simply failed the condition, which is why many users felt attribute plugins were unsupported) - 30+ built-in variables that need no PlaceholderAPI –
{level}{health}{food}{playtime_minutes}{kills}{deaths}{balance}{titles}{online_players}{hour}{perm:node}{has_title:ID}and more - Reworked update checker – Five fallback sources (GitHub API → web latest → tags →
build.gradle), automatic retries, a re-check every 6 hours by default, a console banner and a chat notice for online administrators (including a delayed notice when such a player joins) - Tab list + nametag display of titles and suffixes via scoreboard teams, individually toggleable, and respectful of teams owned by other scoreboard / rank plugins
- RGB gradients –
settings.gradient-colorsaccepts one or many stops with smooth interpolation, and&#RRGGBBhex colours work anywhere - Custom message files –
messages_zh.yml/messages_en.ymlare generated for you and new keys are merged into your existing file without touching your edits - Automatic config upgrade – New options are merged into your
config.ymlon startup / reload (comments preserved on 1.18+) - Offline (non-premium) server support – A
player_namescache table backfilled fromusercache.jsonon startup, so even players who never joined since the update can be found by name; offline servers also match names through the offline-UUID rule - Configurable permission nodes –
permissions.admin / use / shop - New commands –
/titleadmin panel,/titleadmin reload,/titleadmin autotest [player],/titleadmin updatecheck,/titleadmin shop add / remove / setprice / state / note / list / givebalance / setbalance / toggle / currency
Improvements & Optimizations:
• Unified scheduler layer: Bukkit scheduling on Spigot / Paper / Purpur, automatic region and entity scheduling on Folia, and no scheduling failure can disable the plugin anymore
• Hardened startup: optional subsystems (attribute support, TPS, name backfill, update checker, banner) log a warning and continue instead of failing the whole plugin
• All player work now runs on the player's own thread: chat-input callbacks, update notices, auto-title evaluation and display refreshes
• Commands and messages: /catcraft and /titleadmin tab completion now matches the executed branches exactly, console use of player-only commands no longer crashes, all output goes through colour translation, and zh / en placeholder order and types are consistent
• Safer migrations: backup table, row-count verification and automatic rollback; the first balance write now happens inside the same lock to prevent lost updates
• Build and sources: Gradle wrapper 9.3.0 (8.10.2 cannot build on JDK 24+); the produced jar bundles the MySQL / PostgreSQL / SQLite drivers; Java sources carry no comments besides configuration notes
Bug Fixes:
• Fixed data loss during the shop primary-key migration – The old rebuild copied only four columns, resetting showcase / hidden states to sellable and dropping notes; state / note are now preserved, with a row-count check and automatic rollback
• Fixed daily sign-in being consumed without a reward – The sign-in date was written before paying out; a zero reward is no longer treated as a failure and a failed payout rolls the date back
• Fixed auto-title rules matching everyone – An empty right-hand side (typo'd variable, missing plugin) made string comparisons always true; such rules are now always false
• Fixed the plugin being disabled on Folia – 1.19.4 has no RegionizedServer class, so Folia was not detected and scheduled tasks threw; detection now uses multiple markers and picks the scheduler by API availability
• Fixed chat input touching GUIs on an async thread – Opening inventories and changing displays from the chat thread is now scheduled back onto the player's thread
• Fixed offline grants skipping the duplicate check – An existing title could be overwritten into a suffix; the offline path now checks like the online one
• Fixed accidental admin panel actions – Q, number keys and offhand swaps triggered purchases or state changes; only left / right / shift clicks act now
• Fixed a concurrent balance overwrite – Creating the initial balance row happened outside the lock; it now happens inside the same lock
• Fixed price and amount validation – Negative prices were treated as free items, huge amounts overflowed into negative balances, and negative IDs could be granted but never displayed; all are rejected now
• Fixed UI and message details – Dead first / last page arrows, empty-state items overwritten by the background filler, colour codes lost on very long titles, swapped English placeholders, a missing message key for console /catcraft help, the PlaceholderAPI status missing from /titleadmin autotest, and fake TPS values
修复问题 / Bug Fixes:
• 修复 /titleadmin 部分子命令补全不全的问题 / Fixed incomplete TabComplete for /titleadmin subcommands
• 修复旧版 config.yml 缺少新配置项导致功能无法启用 / Fixed missing config entries blocking new features
• 统一玩家命令为 /catcraft,避免与原版 /title 冲突 / Player command unified as /catcraft to avoid the vanilla /title conflict
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:Gr4HKSYI:CnEr1hwV"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Gr4HKSYI:CnEr1hwV"
}

