一个强大的Minecraft Bukkit/Spigot/Folia插件,允许玩家自定义加入和退出消息,支持多种消息模式、分离的权限系统和颜色代码。
- 自定义加入和退出消息:玩家可以设置自己的加入和退出消息
- 多种消息模式:支持完整消息模式和前缀-后缀模式
- 分离的权限系统:加入和退出消息拥有独立的权限节点
- 自定义权限组:支持通过配置文件创建自定义权限组,如VIP、Premium等
- 动态权限注册:自定义权限组会自动注册对应的权限节点
- 优先级系统:支持自定义权限组和预设权限组的优先级配置
- 颜色支持:支持标准颜色代码(&a、&b等)和十六进制颜色代码(&#RRGGBB)
- 数据库支持:使用SQLite或MySQL数据库存储玩家消息
- PlaceholderAPI集成:支持使用PlaceholderAPI的占位符
- 多语言支持:消息完全可配置,支持自定义语言
- 命令系统:完整的命令系统,包括权限检查和帮助信息
- 异步操作:所有数据库操作都是异步的,不会阻塞主线程
- Tab补全:支持命令的Tab补全功能
- 下载最新版本的CustomJoinMessage.jar文件
- 将文件放入服务器的
plugins目录 - 重启服务器或使用
/reload命令加载插件 - 插件将自动生成配置文件和数据库
插件使用分离的权限系统,加入和退出消息拥有独立的权限节点:
customjoinmessage.join.use:基本加入消息权限customjoinmessage.join.use.color:加入消息颜色权限customjoinmessage.join.use.nocolor:加入消息基本权限(无颜色)customjoinmessage.join.vip:加入消息VIP权限(示例)customjoinmessage.join.<组名>:加入消息自定义权限组
customjoinmessage.quit.use:基本退出消息权限customjoinmessage.quit.use.color:退出消息颜色权限customjoinmessage.quit.use.nocolor:退出消息基本权限(无颜色)customjoinmessage.quit.vip:退出消息VIP权限(示例)customjoinmessage.quit.<组名>:退出消息自定义权限组
customjoinmessage.admin:管理员权限,可以管理其他玩家的消息和重载配置customjoinmessage.vip:通用VIP权限,同时拥有加入和退出消息的VIP权限customjoinmessage.<组名>:通用权限组,同时拥有加入和退出消息的对应权限组
为了保持向后兼容性,以下旧权限仍然支持:
customjoinmessage.use:等同于同时拥有customjoinmessage.join.use和customjoinmessage.quit.usecustomjoinmessage.use.color:等同于同时拥有customjoinmessage.join.use.color和customjoinmessage.quit.use.colorcustomjoinmessage.use.nocolor:等同于同时拥有customjoinmessage.join.use.nocolor和customjoinmessage.quit.use.nocolorcustomjoinmessage.use.<组名>:等同于同时拥有customjoinmessage.join.<组名>和customjoinmessage.quit.<组名>
- 管理员(customjoinmessage.admin):拥有所有权限,包括管理其他玩家的消息
- 颜色用户(customjoinmessage.join/quit.use.color):可以在消息中使用颜色代码
- 普通用户(customjoinmessage.join/quit.use.nocolor):只能使用纯文本消息
- 无权限:无法自定义消息
插件支持通过配置文件创建自定义权限组,例如VIP、Premium等。每个自定义权限组可以:
- 设置优先级(数值越高优先级越高)
- 定义完整的加入和退出消息(完整模式)
- 定义加入和退出前缀和后缀(前后缀模式)
- 自动注册对应的权限节点(如
customjoinmessage.join.vip和customjoinmessage.quit.vip)
系统按照以下优先级处理消息:
- 最高优先级:玩家个人自定义消息(数据库中存储的消息)
- 次高优先级:玩家最高优先级权限组的消息配置
- 默认优先级:插件默认配置的消息
预设权限组的优先级也可以在配置文件中自由调整。
/setjoin:查看当前消息模式和你的加入消息/setjoin <消息>:设置你的加入消息(完整模式)/setjoin reset:清除你的加入消息/setjoin prefix <前缀>:设置加入消息前缀(前缀-后缀模式)/setjoin suffix <后缀>:设置加入消息后缀(前缀-后缀模式)/setjoin help:显示帮助信息
/setquit:查看当前退出消息/setquit set <消息>:设置你的退出消息/setquit remove:移除你的退出消息/setquit prefix <前缀>:设置退出消息前缀(前缀-后缀模式)/setquit suffix <后缀>:设置退出消息后缀(前缀-后缀模式)/setquit help:显示帮助信息
/cjm reload:重载配置文件/cjm permission check <玩家>:检查玩家的权限级别/cjm permission help:显示权限命令帮助/cjm help:显示管理命令帮助/setjoin <玩家> <消息>:为其他玩家设置加入消息/setjoin <玩家> reset:清除其他玩家的加入消息/setquit <玩家> set <消息>:为其他玩家设置退出消息/setquit <玩家> remove:为其他玩家移除退出消息/cjm group list:列出所有自定义权限组和预设权限组/cjm group info <组名>:查看指定权限组的详细信息/cjm group help:显示权限组管理命令的帮助信息
# Message mode: "full" or "prefix_suffix"
message-mode: "full"
# Default join message when player hasn't set a custom one
default-join-message: "&e%player_name% 加入了服务器"
# Default join prefix and suffix for prefix-suffix mode
default-join-prefix: "&e欢迎 "
default-join-suffix: " 加入服务器!"
# Default quit message when player hasn't set a custom one
default-quit-message: "&e%player_name% 离开了服务器"
# Default quit prefix and suffix for prefix-suffix mode
default-quit-prefix: "&e再见 "
default-quit-suffix: " 离开了服务器!"
# Message length limits (excluding color codes)
length-limits:
full-mode: 50
prefix: 20
suffix: 20
# Whether to hide the default join/quit messages
hide-default-join-message: true
hide-default-quit-message: true
# PlaceholderAPI support
placeholders:
enabled: true
# Database settings
database:
type: sqlite
sqlite:
file: joinmessages.db
mysql:
host: localhost
port: 3306
database: minecraft
username: root
password: password
table: joinmessages
# Custom permission groups
permission-groups:
vip:
priority: 10
join-message: "&6[&eVIP&6] &e%player_name% 加入了服务器"
join-prefix: "&6[&eVIP&6] &e欢迎 "
join-suffix: " 加入服务器!"
quit-message: "&6[&eVIP&6] &e%player_name% 离开了服务器"
quit-prefix: "&6[&eVIP&6] &e再见 "
quit-suffix: " 离开了服务器!"
premium:
priority: 20
join-message: "&b[&3PREMIUM&b] &3%player_name% 加入了服务器"
join-prefix: "&b[&3PREMIUM&b] &3欢迎 "
join-suffix: " 加入服务器!"
quit-message: "&b[&3PREMIUM&b] &3%player_name% 离开了服务器"
quit-prefix: "&b[&3PREMIUM&b] &3再见 "
quit-suffix: " 离开了服务器!"
# Predefined permission groups with their priorities
predefined-permissions:
admin:
priority: 100
permission: "customjoinmessage.admin"
color:
priority: 50
permission: "customjoinmessage.use.color"
nocolor:
priority: 10
permission: "customjoinmessage.use.nocolor"所有消息都可以在此文件中自定义,包括:
- 玩家消息(成功、错误、权限等)
- 错误消息(命令使用错误、玩家未找到等)
- 帮助消息(命令帮助、权限说明等)
- 其他消息(当前模式、重载成功等)
玩家设置一个完整的消息,例如:
/setjoin &a欢迎 %player_name% 来到服务器!
/setquit set &c再见 %player_name%,期待下次见面!
玩家分别设置前缀和后缀,系统会自动组合:
/setjoin prefix &a[VIP]
/setjoin suffix &b刚刚加入了游戏!
/setquit prefix &c[VIP]
/setquit suffix &e刚刚离开了游戏!
最终显示为:[VIP] 玩家名 刚刚加入了游戏!和[VIP] 玩家名 刚刚离开了游戏!
插件支持以下颜色代码格式:
- 标准颜色代码:
&a、&b、&c等 - 十六进制颜色代码:
&#RRGGBB,例如&#FF0000表示红色 - 格式代码:
&l(粗体)、&n(下划线)、&o(斜体)等
如果启用了PlaceholderAPI支持,可以在消息中使用任何PlaceholderAPI提供的占位符,例如:
%player_name%:玩家名称%player_displayname%:玩家显示名称%player_world%:玩家所在世界%player_health%:玩家生命值%player_level%:玩家经验等级
插件支持两种数据库类型:
- 默认选项,无需额外配置
- 数据存储在插件目录的
joinmessages.db文件中 - 适合小型服务器
- 适合大型服务器或多服务器网络
- 需要在config.yml中配置连接参数
- 支持远程数据库连接
- 版本:1.2
- Minecraft版本:
- Folia:1.20.1+
- Spigot:1.16+
- 依赖:PlaceholderAPI(可选)
- 数据库:SQLite或MySQL
在v1.2版本中,我们对插件的核心架构进行了重要重构,将所有工具类从静态方法转换为实例方法。这一改进带来了以下好处:
- 更好的依赖管理:通过依赖注入明确各组件之间的关系
- 提高可测试性:实例方法更容易进行单元测试
- 增强封装性:每个工具类可以维护自己的状态
- 符合面向对象原则:更清晰的职责分离
以下工具类已从静态方法转换为实例方法:
- MessageManager - 负责消息处理和格式化
- PermissionUtils - 负责权限检查和管理
- SchedulerUtils - 负责异步任务调度
- PlaceholderUtil - 负责占位符处理
- MessageLengthUtil - 负责消息长度计算
所有工具类现在通过CustomJoinMessage主类初始化,并通过依赖注入传递给需要它们的类,使插件更加模块化,便于维护和扩展。
-
命令不工作
- 检查是否有正确的权限
- 确认插件已正确加载
- 查看控制台是否有错误信息
-
颜色代码不显示
- 确认你有
customjoinmessage.join/quit.use.color权限 - 检查颜色代码格式是否正确
- 确认你有
-
消息没有保存
- 检查数据库文件是否可写
- 查看控制台是否有数据库错误
-
权限组不生效
- 确认权限组配置正确
- 检查玩家是否有对应的权限
- 使用
/cjm permission check <玩家>命令检查权限级别
如果遇到问题,请:
- 查看控制台日志
- 检查配置文件是否正确
- 确认所有依赖都已安装
- 尝试重载配置(
/cjm reload) - 检查玩家权限(
/cjm permission check <玩家>)
- 重构权限系统,将加入和退出消息权限分离
- 新增
customjoinmessage.join/quit.use.color等分离权限节点 - 添加
customjoinmessage.vip等通用权限,同时拥有加入和退出权限 - 保持向后兼容性,旧权限节点仍然有效
- 新增退出消息命令
/setquit - 完善退出消息功能,与加入消息功能保持一致
- 优化权限检查逻辑,提高系统性能
- 更新配置文件,添加退出消息相关配置项
- 架构重构:将所有工具类从静态方法转换为实例方法,实现依赖注入
- 改进离线玩家权限检查逻辑,避免假设离线玩家权限状态
- 修复管理员权限显示异常问题,确保权限检查的一致性
- 添加MySQL数据库支持
- 优化异步操作,所有数据库操作都是异步的
- 修复数据库存储互斥问题:现在加入消息和退出消息可以独立存储,不再相互覆盖
- 添加自定义权限组功能,支持通过配置文件创建自定义权限组
- 实现动态权限注册,自定义权限组会自动注册对应的权限节点
- 增强优先级系统,支持自定义权限组和预设权限组的优先级配置
- 添加权限组管理命令(/cjm group list/info/help)
- 预设权限组优先级可在配置文件中自由调整
- 修复配置文件和消息文件的自动更新机制
- 改进文件加载错误处理,提高系统稳定性
- 优化消息文件读取,支持UTF-8编码
- 增强配置版本检查,确保平滑升级
- 添加更详细的日志记录,便于问题排查
- 初始版本发布
- 支持自定义加入消息
- 实现权限系统
- 添加颜色代码支持
- 集成PlaceholderAPI
- 添加多语言支持
本项目采用MIT许可证。详情请参阅LICENSE文件。
欢迎提交问题报告和功能请求!如果您想贡献代码,请:
- Fork本项目
- 创建功能分支
- 提交更改
- 发起Pull Request
MC506LW