BoatRacing

一个适用于Paper的F1式冰上船比赛插件,拥有简洁、类似原版的GUI。管理队伍,使用内置的船竞选工具配置赛道,进行带检查点、维修区惩罚的计时比赛,并提供引导设置向导。

资源图片
## 船竞 [![Modrinth](https://img.shields.io/modrinth/v/boatracing?logo=modrinth&label=Modrinth)](https://modrinth.com/plugin/boatracing) [![下载量](https://img.shields.io/modrinth/dt/boatracing?logo=modrinth&label=Downloads)](https://modrinth.com/plugin/boatracing) [![bStats](https://bstats.org/signatures/bukkit/BoatRacing.svg)](https://bstats.org/plugin/bukkit/BoatRacing/26881) 一个适用于 Bukkit/Spigot (与Paper/Purpur兼容) 的 F1 风格冰上船竞插件,具有简洁、原版风格的 GUI。管理团队,使用内置的 BoatRacing 选择工具配置赛道,进行计时比赛,带有检查点、维修区惩罚和引导式设置向导。 > 状态:公共发行版 (1.0.9) 查看 [CHANGELOG.md](https://github.com/Jaie55/BoatRacing/blob/main/CHANGELOG.md) 中的更新日志。 这是测试插件以验证每次更新后其行为的方法:查看 [CHECKLIST.md](CHECKLIST.md) 中的质量检查清单 ## 新特性 (1.0.9) 兼容性和修复: - 官方支持:Bukkit/Spigot/Paper/Purpur 1.19 → 1.21.8。需要 Java 17+。 - 更安全的船类型跨版本:动态解析船/木筏的材质(包括竹筏和浅色橡木变体)避免了旧 API 上的 NoSuchFieldError,并删除了 CraftLegacy 警告。 - 在 Paper 上被归类为 Bukkit/Spigot 插件 (paper-plugin.yml 从 JAR 中排除)。Paper-only API 被替换为 Bukkit-safe 的调用。 - 文档:README、CHANGELOG 和质量检查清单更新 (EN/ES)。 更新节奏: - 后台检查每 5 分钟运行一次。当在运行时首次检测到新版本时,会立即在控制台中打印一个 WARN(每个版本一次)。 - 每小时提醒与每小时的顶部对齐 (00:00、01:00、...) 在过时时(尊重 `updates.console-warn`)。 - 管理员加入:始终在聊天中通知(如果启用),玩家加入时从不在控制台中打印。 ## 新特性 (1.0.8) 改进和开关: - 可定制的 HUD:新的配置标志可显示/隐藏侧边栏和 ActionBar 的部分。 - `racing.ui.scoreboard.show-position|show-lap|show-checkpoints|show-pitstops|show-name` - `racing.ui.actionbar.show-lap|show-checkpoints|show-pitstops|show-time` - HUD 上的维修区:当 `racing.mandatory-pitstops > 0` 时,在侧边栏和 ActionBar 上显示“维修 A/B”(受上述开关限制)。 - 注册广播现在包含赛道名称和确切的加入命令 (`racing.registration-announce`)。 - 侧边栏顺序已更改为“L/CP - Name”;删除了居中/填充;名称显示为原样(保留 Bedrock 的前导点)。 - 冲过终点线的消息:在完成所有必需的检查点之前冲过终点线现在会显示给玩家一个清晰的消息(除了拒绝声音)。 - 设置向导:新的可选步骤“强制维修站”,带有快速按钮 [0] [1] [2] [3]。 - 设置命令:`/boatracing setup setpitstops ` 会设置并持久化 `racing.mandatory-pitstops`。 - 结果广播:前三名的🥇/🥈/🥉奖牌和排名颜色;在存在惩罚时保留后缀;名称安全渲染(保留 Bedrock 的前导点)。 - 向导流程:如果第 4 步已设置默认维修区,则向导会自动进入检查点(团队维修区仍然是可选的)。 - 权限:引入了 wildcard `boatracing.*`。管理员仍然获得所有插件权限,现在是通过 `boatracing.admin` 下面的显式子项,以避免循环继承。 - Tab 补全:玩家(非管理员)在 `/boatracing race` 下看到 `join|leave|status`;只有管理员才会建议管理员专用的谓词 (`open|start|force|stop`)。 更新器: - 控制台通知已恢复:在过时时,启动后的一段时间内会发出单次 WARN,并在仍然过时时每小时提醒一次(尊重 `updates.console-warn`)。 - 管理员加入:当管理员加入时,会运行快速检查(限流),并在几秒钟内通知他们是否刚刚发布了新版本。 ## 新特性 (1.0.7) 错误修复和质量生命: - 控制台更新检查噪音移除:在过时时,在启动后的一段时间内只会发出单次 WARN(尊重 `updates.console-warn`)。定期的 5 分钟检查仍然存在,但保持静默。 - 稳定性:更新检查期间的网络错误会被记录,服务器运行期间最多记录一次。 移除: - 内置的隐藏原生记分板数字的功能已被移除。如果您想隐藏侧边栏的右侧数字,请使用第三方插件,同时评估未来内置的方法。 UI: - 记分板重新设计:居中的行、紧凑的“Name - L X/Y CP A/B”布局、金色的排名颜色 (1=gold, 2=silver-ish, 3=bronze-ish) 和你的名字为绿色。 ## 新特性 (1.0.6) 改进和调整: - 新的侧边栏排行榜:侧边栏现在显示实时前10名。个人统计信息移动到 ActionBar。 - 个人 HUD:你的圈数、检查点和经过时间现在出现在 ActionBar 上,每 0.5 秒更新一次。 - 扇区和终点差距:紧凑的信息显示你在每个检查点和圈终点时的差距与圈/终点领先者(以及与获胜者在比赛终点时的差距)。 - 开始灯的抖动:可选地添加随机抖动到灯熄灭延迟上(通过 `racing.lights-out-jitter-seconds`)。 - 实时排行榜:侧边栏显示前 10 名;你的圈数/检查点/时间显示在 ActionBar 上(在比赛开始时自动创建,并在停止/重置时清理)。 - 原生数字隐藏:当你的服务器支持时,侧边栏的右侧数字会以原生方式隐藏(Paper 1.20.5+);无需 TAB 插件。 - 布局润色:名称左对齐,整个 “- Lap X/Y [CP]” 块居中。删除了装饰性分隔符和箭头前缀,根据最长的可见名称进行紧凑/动态填充。长名称会被截断并显示“...” ,并且在省略号后不会添加额外的填充。你的名字会高亮显示为绿色(不加粗)。 - FIN 标签:标准化为“FINISHED”。 - 显示名称:支持 EssentialsX displayName,并去除开头常见的排名包装器,如 [Admin]/(Rank),以实现更清晰的对齐。 ## 新特性 (1.0.5) 修复和润色: - 团队成员持久化:团队成员将在更新/重新加载/启动之间保留;加载会恢复团队,而不会重新应用容量限制。 - 设置维修区命令:`/boatracing setup setpit [team]` 在未提供团队时设置默认维修区,或者在提供团队名称时设置特定团队的维修区。Tab 补全会建议团队名称。 - 默认配置:在插件更新或 `/boatracing reload` 时,新的默认键会合并到你的现有 `config.yml` 中,而不会覆盖你的更改。 - 船/木筏类型:赛车员会装载到他们选择的木材变体(包括胸部变体和木筏)中(而不是始终是橡木);适用于 API 版本的安全回退。 ## 新特性 (1.0.4) - 团队特定维修区:新的统一命令 `/boatracing setup setpit [team]` 在未提供团队时设置默认维修区,或在提供团队名称时设置特定团队的维修区 。Tab 补全会建议团队名称。 - 强制维修站:新的 `racing.mandatory-pitstops` 配置 (默认 0)。当 > 0 时,赛车员必须完成至少那个数量的维修区出口才能被允许完成;维修站是在退出维修区时计数的,并且持续整个比赛。 - 向导:维修区步骤更新为提及默认维修区与每个团队的维修区之间的区别,并指导流程使用快速按钮。 - 设置命令:`/boatracing setup setpitstops ` 会设置并持久化 `racing.mandatory-pitstops`。 - 结果广播:前三名授予🥇/🥈/🥉奖牌,为前3名提供排名颜色;在存在时保留惩罚后缀;名称安全渲染(保留 Bedrock 的前导点)。 - 向导流程:如果第 4 步已经设置了默认维修区,向导会自动进入检查点(团队维修区仍然是可选的)。 - 权限:引入了 wildcard `boatracing.*`。管理员仍然获得所有插件权限,现在是通过`boatracing.admin` 下显式子项,以避免循环继承。 - Tab 补全:玩家(非管理员)看到 `/boatracing race` 下的 `join|leave|status`;只有管理员才会建议管理员专有的谓词 (`open|start|force|stop`)。 - 更新器: - 控制台通知已恢复:在过时时,启动后的一段时间内会发出单次 WARN,并在仍然过时时每小时提醒一次(尊重 `updates.console-warn`)。 - 管理员加入:当管理员加入时,会运行快速检查(限流),并在几秒钟内通知他们是否刚刚发布了新版本。 ## 新特性 (1.0.3) - 管理员轨道 GUI:管理多个命名轨道——创建和选择,删除(确认),和重新应用所选。需要 `boatracing.setup`。 - 管理员比赛 GUI:从 GUI 管理比赛生命周期——打开/关闭注册,开始/强制/停止,快速设置圈数,移除注册者,和引导式设置小贴士。 - 术语:“已加载” → “已选择”;“维修车道” → “维修区”。 - 所有轨道配置都位于每个轨道的 `plugins/BoatRacing/tracks/.yml` 下。 - 启动时,如果存在 legacy `track.yml`,会自动迁移到 `tracks/default.yml`(在游戏中向管理员发出通知)。 - 设置向导 UX:简洁,彩色,可点击。添加圈数步骤和一个明确的完成按钮;导航按钮现在使用 emoji (⟵、ℹ、✖) 并且空行放置在块的顶部以获得更好的可读性。 - 选择工具:内置的魔杖 (烈焰棒)。左键单击 = 角 A,右键单击 = 角 B。更丰富的 `/boatracing setup selinfo` 诊断信息。 - 比赛命令现在需要一个轨道参数:`open|join|leave|force|start|stop `。 - 比赛生命周期:“比赛停止”会取消该轨道上的注册和任何正在运行的比赛。开始会强制使用唯一的网格槽位,面朝前方(pitch 0),并自动将赛车员装载到他们选择的船上。 “强制”和“开始”仅使用注册的参与者。 - 注册广播现在包含轨道名称和确切的加入命令 (`racing.registration-announce`)。 - 侧边栏顺序更改为“L/CP - Name”;删除了居中/填充;名称显示为原样(Bedrock 保留前导点)。 - 完成尝试消息:在完成所有必需的检查点之前冲过终点线现在会向玩家显示清晰的消息(除了拒绝声音)。 - 设置向导:新的可选步骤“强制维修站”,带有快速按钮 [0] [1] [2] [3]。 - 设置命令:`/boatracing setup setpitstops ` 会设置并持久化 `racing.mandatory-pitstops`。 - 结果广播:前三名授予🥇/🥈/🥉奖牌,为前3名提供排名颜色;在存在时保留惩罚后缀;名称安全渲染(保留 Bedrock 的前导点)。 - 向导流程:如果第 4 步已经设置了默认维修区,向导会自动进入检查点(团队维修区仍然是可选的)。 - 权限:引入了 wildcard `boatracing.*`。管理员仍然获得所有插件权限,现在是通过 `boatracing.admin` 下面的显式子项,以避免循环继承。 - Tab 补全:玩家(非管理员)在 `/boatracing race` 下看到 `join|leave|status`;管理员专有的谓词 (`open|start|force|stop`) 只会建议给管理员。 - 更新器: - 控制台通知已恢复:在过时时,启动后的一段时间内会发出单次 WARN,并在仍然过时时每小时提醒一次(尊重 `updates.console-warn`)。 - 管理员加入:当管理员加入时,会运行快速检查(限流),并在几秒钟内通知他们是否刚刚发布了新版本。 ## 功能 - 团队 GUI:列表、查看、成员资料、退出确认;可选的成员重命名/更改颜色/解散(由配置控制) - 成员资料:船类型选择器、赛车手号码 (1–99) - 基于物品栏的 UI,带有拖拽阻止和声音反馈 - 需要时通过 AnvilGUI 输入文本 (团队名称、赛车手号码) - 轨道设置:每位赛车手的开始槽位、终点线区域、维修区区域 (可选)、有序检查点 (可选) - 网格顺序:自定义开始槽位优先;剩余赛车员按最佳记录比赛时间排列 (最快者优先),没有记录时间的赛车员排在最后。 - 比赛:带有有序检查点的圈数记忆(配置后),配置后维修区时间惩罚,结果按照总时间排列 (比赛时间 + 惩罚) - 实时排行榜:每位参与者的侧边栏跟踪圈数、检查点和经过时间(在比赛开始时自动创建,并在停止/重置时清理)。 - 注册:管理员打开一个计时注册窗口;玩家通过团队加入;支持强制启动 - 持久存储:teams.yml、racers.yml 和每个轨道的 `plugins/BoatRacing/tracks/.yml` 文件(没有中心 `track.yml`)。 Legacy 迁移:如果在启动时找到 legacy `plugins/BoatRacing/track.yml`,它将自动迁移到 `plugins/BoatRacing/tracks/default.yml`(或 `default_N.yml`),旧文件在可能时会被删除。具有 `boatracing.setup` 权限的管理员会收到游戏内通知。 ## 兼容性 - Bukkit/Spigot/Paper/Purpur 1.19–1.21.8;Java 17+ - 仅英文消息,具有原版风格的标题和说明文字 ## 注意 - 无领导团队:玩家可以创建和离开团队;管理员处理删除和成员管理。 团队重命名/颜色可选择性地允许成员通过配置 (仅 GUI) 进行。 - 作为最后一个成员离开团队会自动删除团队。 - 拒绝执行受保护操作的消息是硬编码的英文。 ## 构建 (开发者) - Maven 项目;产生 `BoatRacing.jar` 阴影。 运行 `mvn -DskipTests clean package`。 ## 许可证 在 MIT 许可证下发布。查看 `LICENSE`。