一个面向 Paper 1.21.11+ 与 Purpur 1.21.11+ 的斗地主插件原型。
- 3 人建桌、加入、准备、开局
- 随机叫分,最高叫分者成为地主
- 发 17 张手牌,地主获得 3 张底牌
- 实体手牌选择与出牌
- 牌面贴图、按钮图标与完整斗地主音效资源包
- 单牌、对子、三张、三带一、三带二
- 四带二、四带两对、顺子、连对
- 飞机、飞机带单翼、飞机带双翼
- 炸弹、王炸与基础倍数结算
- 无牌可压时自动跳过
- 对局中离线/踢出自动重置
- 自动生成 CraftEngine bundle,可导出到
CraftEngine/resources/doudizhupaper - 提供一套默认关闭的第三方 AI gateway,可按 DeepSeek 或其他 OpenAI 兼容接口接入
/muz create <high|mid|low|fun> [id]/muz create <doudizhu|texas> <high|mid|low|fun> [id]/muz set <牌桌id> <high|mid|low|fun>/muz chip mode <gold|chip>/muz chip setitem/muz chip balance <玩家> [数量]/muz remove <牌桌名>/muz reload/muz admin/muz bot <add|remove> [名字]/muz list/muz settings(不在牌桌里也能打开)/muz labels(兼容旧命令,等同/muz settings)/muz status/muz forceend
./gradlew.bat build产物位于:
build/libs/MUZ-1.6.18.jarbuild/libs/MUZ-1.6.18-dev.jarbuild/distributions/MUZ-resourcepack-1.6.18.zipbuild/distributions/MUZ-craftengine-1.6.18.zipbuild/release/MUZ-1.6.18.jarbuild/release/MUZ-1.6.18-resourcepack.zipbuild/release/MUZ-1.6.18-craftengine.zip
推荐把重映射后的 MUZ-1.6.18.jar 放进服务端 plugins/。
如果你不用 CraftEngine,就给客户端下发 MUZ-1.6.18-resourcepack.zip。
如果你使用 CraftEngine,可以直接用 MUZ-1.6.18-craftengine.zip,或者让插件在检测到 CraftEngine 后自动把 bundle 导出到其数据目录。
- 这个版本优先实现可玩的核心流程,暂时没有 Bot 和积分持久化。
- 现在已经有最简单可用的机器人,可以补满 3 人桌。
- 现在已经支持实体桌椅与桌边交互按钮,桌体使用 CraftEngine 家具资源。
- 现在可选接入 Vault;启用后德州桌的筹码会直接同步到服务器经济余额,支持通过
config.yml配置汇率。 - 现在会额外诊断
CMI / EzEconomy / XConomy / Vault挂钩状态,并支持用economy.vault.preferred-providers指定优先使用哪个 Vault provider。 - 现在牌桌支持
low / mid / high / fun四种场次;顶栏会显示场次名和倍率,fun娱乐场默认不走金币结算。 - 现在支持
/muz set直接修改已创建牌桌的场次倍率,也支持全局金币/筹码两种结算模式。 - 筹码模式会用全局玩家筹码余额结算,支持
%muz_chip_<玩家>%占位符。 - 现在支持 SQL 持久化,默认使用插件目录内的 SQLite 文件,也可切换到 MySQL。
- 重启后会自动恢复已放置牌桌;并新增
/muz history [玩家] [页码]查看历史战绩。 - 每个座位上方会显示玩家/机器人信息、准备状态、角色和剩余牌数。
- 手牌与出牌区的牌现在是固定朝向的摆放实体,不再是朝向玩家的 billboard。
- 对手手牌现在会以背面牌实体围桌显示,自己只会看到自己的正面手牌。
- 叫分/出牌/不要/清选/点数切换都可以直接通过桌下小按钮完成。
create现在会直接创建并放置牌桌。- 可以通过
/muz reload动态重载配置、重新导出 CE bundle,并刷新已放置的实体牌桌。 - 可以通过
/muz admin打开管理员全局配置菜单;现在已经拆成模型 / 渲染 / 音频 / 机器人四页,且名字调节已经进一步拆到独立子页,左键增加、右键减少、Shift 可按 10 倍步长调整。 - 现在支持单独的个人微调菜单 GUI,不在牌桌里也能打开;每位玩家都可以单独调整自己的私人手牌横向/竖向/纵深偏移、左右牌间距,并单独切换点数标签显示;Shift 也可以按 10 倍步长调整。
- 手牌箱子 GUI 已移除,当前只保留实体手牌与桌边按钮交互。
config.yml里桌子和椅子现在直接使用完整item-model写法,像magicstore:medieval_furnitures_fullpack_v4_6这种可以直接填写。config.yml里的私人手牌偏移是全局默认值,个人微调会在这个基础上额外叠加。- 插件启动和
/muz reload时会自动补全空配置、迁移旧版namespace/model-path配置,并对错误模型配置给出警告后回退到默认桌椅。 - GUI 图标与入口定义现在直接跟随主配置和页面逻辑维护,不再依赖额外的独立图标配置文件。
- 可以通过
config.yml开关控制牌面上的全息字符标签,并支持仅在重复点数牌上显示。 - GUI 现在已经使用独立命名空间
item_model资源,不再是纯原版占位图标。 - 服务器重启时会自动检查并导出 CraftEngine bundle;执行
/ce reload前也会自动检查并导出。 config.yml现在会生成ai.deepseek配置段,默认关闭,但保留了公开的 OpenAI 兼容 AI gateway;只改base-url / api-key / model就能切换到 DeepSeek 或其他兼容第三方接口。- 开局会随机播放斗地主 BGM,播完会继续下一首,结束时停止并播放结算音效。
- 判型与流程参考了
tml104/-Minecraft-Dou-Dizhu的状态机思路,并借鉴了Arbousier1/MahjongEngine的 Paper 1.21.11+ 与 CraftEngine bundle 构建路线。
- 插件会暴露
DoudizhuPlugin#getAiChatGateway(),返回一个可直接调用的 OpenAI 兼容 gateway。 - 默认配置走 DeepSeek 兼容格式;官方文档可参考 DeepSeek API 文档。
- 如果你要接别的兼容平台,只需要改
config.yml里的ai.deepseek.base-url、api-key和model。
AiChatGateway gateway = plugin.getAiChatGateway();
if (gateway.isEnabled()) {
AiChatGateway.ChatResponse response = gateway.chat(
new AiChatGateway.ChatRequest(
List.of(AiChatGateway.Message.user("帮我总结这一局的战绩")),
null,
null,
null
)
);
String reply = response.content();
}