开源地址:https://github.com/SuperBigDummy/DummyPool/
更多使用相关信息可在此查看
DummyPool
一个基于 Paper 服务端的高性能台球插件,由 AI Agent 辅助开发。
插件特色
1. 球台类型与尺寸
创建提示:创建时请站在目标位置,面朝球台 长边方向;斯诺克按 4×7 特殊对齐(长边中心在方块,短边在边界)。
蹲下触发:非创建者站在球台尾部边界外一格(高度差 0~2 格),副手持球杆时蹲下,若拥有相应权限将打开球库。创建者可以打开球台管理菜单。
2. 创建与管理指令
2.1 创建球台
2.2 查看与删除
2.3 创建成功
自动生成该球台对应的默认球组,并用粒子特效绘制台面轮廓。
3. 管理菜单(Dialog)
创建者执行以下指令打开功能强大的管理面板:
菜单共包含 8 个核心功能按钮:
蹲下感应区
非创建者站在球台尾部边界外一格(高度差 0~2 格),且副手持球杆时蹲下:
4. 权限设置(4 项开关)
5. 球库系统
6. 一键摆球
指令
流程
各球台默认球组
7. 物理参数列表(共 34 项,每台独立)
键名即 config.yml 及菜单中的英文标识。管理菜单中可逐项调整。
8. 完整指令大全
---
DummyPool 致力于为 Minecraft 服务器带来最真实、最可定制的台球体验。欢迎提交 Issue 反馈建议或 Bug!
更多使用相关信息可在此查看
DummyPool
一个基于 Paper 服务端的高性能台球插件,由 AI Agent 辅助开发。
提供 五种球台、真实物理引擎 与 完整的中八 / 九球 / 斯诺克 对战规则。每张球台的 34 项物理参数均可独立调节,所有文案、粒子与音效完全自定义。
-
五种球台:中式八球、九球、斯诺克、开伦、圆形球台 -
独立物理:每张球台独立保存 34 项物理参数(摩擦力、弹性、旋转衰减等) -
完全自定义:聊天文案(message.yml)、粒子与音效(config.yml)服主自由修改 -
AI 辅助:代码稳定、逻辑严谨,性能消耗优化
| 类型 | 参数值(Key) | 台面尺寸(格) | 球袋 | 说明 |
|---|---|---|---|---|
cn8 | 3 × 5(半宽 1.5,半长 2.5) | 6 个 | 实色(混凝土 1~7)+ 花色(羊毛 9~15)+ 黑八 | |
9-ball / nine_ball | 3 × 5(半宽 1.5,半长 2.5) | 6 个 | 1~9 号菱形摆放,首球必须触碰最小号球 | |
snooker | 4 × 7(半宽 2.0,半长 3.5) | 6 个 | 15 红 + 6 彩,D 形开球区 | |
carom | 3 × 5 | 无 | 无袋球台,靠撞击得分 | |
round | 半径 = [size] 格 | 无 | 圆形台面,粒子轮廓为圆形 |
2.1 创建球台
代码:
/dummypool create <名称> <类型> [大小]
- 类型(必填,不区分大小写):cn8 / 9-ball / snooker / carom / round
- 大小:仅 round 需要,表示半径(格),其他类型忽略
2.2 查看与删除
代码:
/dummypool list # 列出所有球台
/dummypool remove <名称> # 删除球台(仅创建者)
2.3 创建成功
自动生成该球台对应的默认球组,并用粒子特效绘制台面轮廓。
创建者执行以下指令打开功能强大的管理面板:
代码:
/dummypool ui <球台> main
# 或简写
/dummypool set <球台>
菜单共包含 8 个核心功能按钮:
| 按钮 | 功能说明 |
|---|---|
| 进入 34 项物理参数列表(分 3 页),点击单项后修改数值,超限自动钳位 | |
| 4 项开关( | |
| 以原版箱子形式打开该球台的球库 | |
| 按当前规则自动摆球(缺球时弹出确认提示) | |
| 打开 54 格编辑箱:拿出的球自动去标签,放回自动打标签 | |
| 打开对战 Dialog(支持中八 / 九球 / 斯诺克) | |
| 将台面上所有球收进球库(满则掉落感应区) | |
| 关闭管理菜单 |
非创建者站在球台尾部边界外一格(高度差 0~2 格),且副手持球杆时蹲下:
- 若拥有 球库权限 → 打开球库
- 若球台无主 → 第一个触发者自动被认领为创建者并打开管理菜单
| 权限项 | ||
|---|---|---|
| 打开球库 | 非创建者可打开球库 | 非创建者无法通过蹲下或命令打开 |
| 放置/取走球 | 可放球、捡球、摆球 | 放置与摆球操作被拒绝 |
| 击打台面球 | 可瞄准并击球 | 无法进入蓄力状态 |
| 对战模式 | 可打开对战菜单、加入对局 | 菜单提示无权限 |
- 打开方式:创建者或有权限的玩家通过菜单、
/dummypool ball lib <球台>或蹲下感应区打开 - 交互逻辑:操作方式与原版箱子完全一致。关闭时,非球类物品或其他球台的球会自动退回玩家背包
- 编辑机制:从编辑界面拿出的球会自动移除球台标签(Lore 归属行一并删除);无标签或 pending 标签的球放回时会自动打上本台标签;来自其他球台的球会被拒绝入库
- 收球指令:
/dummypool clear <球台>或点击菜单按钮可将台面球全部收库(对战模式下禁用) - 满库处理:球库最多 54 格,满时进球会掉落到球台尾部感应区地面,可手动捡起
指令
代码:
/dummypool ball place <球台> [模式]
- 中式八球 / 斯诺克:不需要模式参数
- 开伦:需要指定模式(如
/dummypool ball place <台> <模式>)
流程
- 预清理:摆球前自动将台面现有球收库(球库满则掉落感应区)
- 缺球处理:若缺少必要球种,聊天栏会提示缺少列表,并附带 [点击确认继续] / [点击取消] 交互按钮
- 开球机制:摆球完成后,下一杆击打母球视为开球(速度 ×1.3,并触发开球特效)
各球台默认球组
| 球台类型 | 球组配置 |
|---|---|
| 中式八球 | 母球 + 实色 1~7 号 + 黑八 + 花色 9~15 号,三角排列,两角球不同组 |
| 九球 | 母球 + 1~9 号,菱形排列:1 号在顶点,9 号在中心,其余随机 |
| 斯诺克 | 母球 + 15 颗红球 + 黄/绿/咖啡/蓝/粉/黑,按标准点位摆放 |
| 开伦 | 母球 + 黄球 + 红球 + 蓝球 |
键名即 config.yml 及菜单中的英文标识。管理菜单中可逐项调整。
代码:
| 参数(键) | 默认值 | 调高影响 ↑ | 调低影响 ↓ |
|---------------------------|--------|--------------------------------------|--------------------------------------|
| tableFriction | 0.11 | 球减速快、杆法消耗大 | 球滑得更远 |
| slipThreshold | 0.01 | 更早进入纯滚动、球走得远 | 滑动摩擦更久、减速快 |
| rollingDeceleration | 0.3 | 纯滚动很快停 | 滚得久 |
| stopThreshold | 0.02 | 球早停 | 球磨蹭更久 |
| spinDecayX | 0.999 | 前后旋保留久 | 前后旋消失快 |
| spinDecayY | 0.985 | 侧旋持久 | 侧旋很快消失 |
| spinDecayScale | 1.0 | 所有旋转掉得快 | 旋转掉得慢 |
| spinFrictionCouplingX | 0.55 | 摩擦更快洗白前后旋 | 拉回/跟进更持久 |
| maxSpinSpeed | 150 | 可打出更转的球 | 杆法效果受限 |
| collisionDistance | 0.30 | 过早判定 | 被加载/解算钳回 0.30 |
| collisionIterations | 15 | 贴球/高速更稳但更耗性能 | 可能穿模 |
| collisionRestitution | 0.93 | 碰撞更弹 | 碰撞更软 |
| collisionSpinTransfer | 0.4 | 目标球容易被带转 | 加塞对目标球影响小 |
| ballHitFriction | 0.3 | 母球偏得多 | 几乎不偏 |
| cushionRestitution | 0.83 | 弹得猛 | 被胶条吸能 |
| cushionFriction | 0.6 | 香蕉球明显 | 撞库不偏 |
| masseMinAngle | 45 | 更难扎 | 小角度也能扎 |
| masseMaxAngle | 80 | 大角度继续增强 | 弧线提前封顶 |
| masseCurveCoeff | 6.0 | 弯得急 | 弧线平缓 |
| masseAxisTiltMax | 60 | 弧线侧偏更强 | 轴偏小、弧线弱 |
| masseDecayOmegaRef | 30 | 弧线早回正(短弧) | 弧线久(长弧) |
| masseBankMax | 15 | 倾斜夸张 | 倾斜轻微 |
| masseBankOmegaRef | 30 | 需高转速才压弯 | 小转速就压弯 |
| masseOffsetBoost | 3.0 | 更易打转、弧线强 | 扎杆塞弱 |
| jumpAngleThreshold | 75 | 更难跳 | 更容易跳 |
| jumpMinPowerLevel | 4 | 需更大力度 | 轻打也能跳 |
| jumpVelocityScale | 0.5 | 跳得高远 | 跳得低 |
| jumpMaxHeight | 1.0 | 可跳更高 | 跳不高 |
| landingSpinLoss | 0.6 | 落地后旋转基本消失 | 落地仍带旋转 |
| collisionSpinTransferX | 0.12 | 高低杆带转明显 | 碰撞只轻微损耗旋转 |
| cushionSpinTransferX | 0.05 | 吸库/跟进强 | 只靠台面摩擦 |
| cushionSpinLossX | 0.25 | 撞库后前后旋掉得多 | 保留多 |
| cushionSpinLossY | 0.3 | 加塞撞库后旋转消失快 | 连续撞库仍偏 |
| cushionTangentialLoss | 0.1 | 贴库滑行衰减快 | 贴库滑得远 |
| 指令 | 说明 | 权限 |
|---|---|---|
/dummypool create <名称> <类型> [大小] | 创建球台 | 所有人 |
/dummypool remove <名称> | 删除球台 | 创建者 |
/dummypool list | 列出所有球台 | 所有人 |
/dummypool clear <球台> | 收台面球入库(对战模式拦截) | 放置权限 |
/dummypool ui <球台> <操作> | 管理 Dialog(main/params/param/perms/lib/place/edit/game/invite/close) | 创建者 |
/dummypool set <球台> | 同 ui main | 创建者 |
/dummypool game <球台> enable | 开启对战模式 | 创建者 |
/dummypool game <球台> menu | 打开对战 Dialog | 对战权限 |
/dummypool game <球台> invite <玩家> | 邀请加入 | 成员 |
/dummypool game <球台> join | 加入对战 | 所有人 |
/dummypool game <球台> reject | 拒绝邀请(5 分钟屏蔽) | 所有人 |
/dummypool game <球台> start | 开始对战 | 成员 |
/dummypool game <球台> end | 结束本场(模式保持) | 成员 |
/dummypool game <球台> concede | 斯诺克被超分方认输 | 成员 |
/dummypool game <球台> choice own/let | 斯诺克犯规选择 | 非犯规方 |
/dummypool ball get <类型> | 获取球(如 concrete-white、glass-yellow) | OP |
/dummypool ball lib <球台> | 打开球库 | 球库权限 |
/dummypool ball place <球台> [模式] | 摆球;confirm/cancel 缺球处理 | 放置权限 |
/dummypool cue get <名称> | 领取球杆 | 所有人 |
/dummypool reloadmessages | 重载 message.yml | OP |
/dummypool reloadconfig | 重载 config.yml | OP |
---