用来统计盲盒中物品获得情况的插件。支持特殊配给货箱、庆典礼物箱、上锁的宝箱、九宫幻卡包、能源包、宇宙好运道信用点等多种容器,一键查看已获得与未获得的物品。
- 查看各类盲盒中包含的所有物品及其获得状态
- 物品按颜色区分状态:
- 🟢 绿色 — 已获得
- ⬜ 白色 — 未获得,可交易
- ⬛ 灰色 — 未获得,不可交易
- 带
*标记的物品为仅可从当前途径获取 - 支持按「所有 / 已获得 / 未获得」筛选显示
- 盲盒按系列分组,支持下拉框快速筛选系列
- 左侧盲盒列表 + 右侧物品详情的双栏布局
- 直接渲染游戏内物品图标
- 点击物品名称自动复制到剪切板、发送带品质颜色的物品链接到聊天框,并弹出游戏内提示
- 配置自动保存(当前选中的盲盒、系列筛选、显示模式)
- 设置界面提供物品名称 → 物品 ID 批量查询工具
| 分类 | 名称 |
|---|---|
| 特殊配给货箱 | 特殊配给货箱(重生/苍穹)、特殊配给货箱(红莲) |
| 庆典礼物箱 | 庆典礼物箱 |
| 无人岛 | 无人岛特殊配给货箱 |
| 上锁的宝箱 | 常风地带、恒冰地带、涌火地带、丰水地带、南方战线、高原 |
| 九宫幻卡包 | 白金包、铜包、银包、金包、灵银包、帝国包、梦想包 |
| 能源包 | 俄匊斯能源包、奥克塞西亚能源包 |
| 宇宙好运道 | 月球信用点、法恩娜信用点、俄匊斯信用点、奥克塞西亚信用点 |
| 死者宫殿 | 铜饰宝藏、铁饰宝藏、银饰宝藏、金饰宝藏 |
| 天之御柱 | 白银宝藏、黄金宝藏、白金宝藏 |
| 正统优雷卡 | 银辉宝藏、金辉宝藏、铂辉宝藏 |
| 神圣交错路 | 银光宝藏、金光宝藏、铂光宝藏 |
| 命令 | 说明 |
|---|---|
/blindbox |
打开盲盒信息界面 |
/blindbox config |
打开设置界面 |
也可通过卫月插件列表中的「打开主界面」/「打开设置」按钮访问。
- 卫月设置 → 测试版
- 添加仓库
https://raw.githubusercontent.com/yimo0908/DalamudPlugin/main/repo.json并启用 - 从插件列表中安装
FFXIVBlindBoxPlugin/
├── BlindBoxPlugin/ # 插件主项目
│ ├── BlindBoxPlugin.csproj # 项目文件,SDK 为 Dalamud.CN.NET.Sdk
│ ├── BlindBoxPlugin.json # 插件元数据(名称、描述、图标等)
│ ├── blind_boxes.json # 盲盒数据(嵌入式资源,编译时打包进 DLL)
│ ├── Plugin.cs # 插件入口,注册命令与窗口
│ ├── Configuration.cs # 插件配置(选中的盲盒 ID、系列筛选、显示模式)
│ ├── Data.cs # 盲盒数据加载与查找表 BlindBoxInfoMap
│ ├── Models.cs # DisplayMode 枚举
│ ├── GameFunctions.cs # 物品解锁状态检测
│ └── Windows/
│ ├── MainWindows.cs # 主窗口:布局、盲盒选择列表、物品表格
│ ├── MainWindows.Draw.cs # 主窗口:图标绘制、颜色状态、* 标记
│ └── MainWindows.Game.cs # 主窗口:聊天链接、剪切板复制、游戏内提示
├── images/ # 截图与图标
├── BlindBoxPlugin.sln # 解决方案文件
├── LICENSE # MIT 许可证
└── README.md
| 文件 | 职责 |
|---|---|
Plugin.cs |
插件入口点,注册 /blindbox 命令,初始化 MainWindow 与 ConfigWindow,提供 ItemSheet 等静态服务访问 |
Data.cs |
盲盒数据的加载入口。从嵌入式资源 blind_boxes.json 读取分组与首盒数据,构建 BlindBoxInfoMap 查找表和 SeriesGroups 系列分组 |
Models.cs |
DisplayMode 枚举(所有/已获得/未获得)控制显示筛选 |
GameFunctions.cs |
通过 FFXIVClientStructs 的 UIState->IsItemActionUnlocked 判断物品是否已解锁 |
Configuration.cs |
持久化配置:当前选中的盲盒 ID、系列筛选索引和显示模式 |
MainWindows.*.cs |
主窗口使用 partial class 拆分为三个文件,分别负责布局、绘制和游戏交互。通过 UpdateConfig 统一修改并保存配置 |
前提:.NET 10 SDK,XIVLauncher / Dalamud 已安装(用于运行插件)
构建:
dotnet build BlindBoxPlugin\BlindBoxPlugin.csproj -c Debug安装(开发者模式):
- 构建后获取
BlindBoxPlugin.dll(位于bin\x64\Debug\) - 在 Dalamud 设置 → Experimental → Dev Plugin Locations 中添加 DLL 所在文件夹路径
- 在 Dalamud 插件管理器的 Dev Tools 中启用已加载的开发插件
盲盒数据存储在 BlindBoxPlugin/blind_boxes.json 中,作为嵌入式资源编译进 DLL。新增或修改盲盒只需编辑此 JSON 文件:
[
{
"name": "系列名称",
"boxes": [
{
"id": 36635,
"name": "盲盒名称",
"items": [6003, 6004, 6005],
"uniqueItems": [6003]
}
]
}
]字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
name(系列级) |
string | 系列分组名称,显示在下拉筛选框中 |
boxes |
array | 该系列下的所有盲盒条目 |
id |
uint | 盲盒道具 ID |
name(首盒级) |
string | 盲盒名称(仅用于 JSON 可读性,运行时从 ExcelSheet 获取) |
items |
uint[] | 盲盒包含的所有物品 ID |
uniqueItems |
uint[] | 仅可从当前途径获取的物品 ID(可选,界面中显示 * 标记) |
关于 UniqueItems:标记为 unique 的物品在界面中会显示 * 前缀,表示该物品仅可从当前盲盒途径获取。如果某物品可通过多种途径获得,则不应加入 unique 列表。
获取物品 ID:可使用设置界面(/blindbox config →「获取物品Id」标签页)输入物品名称批量查询 ID,也可通过 Garland Tools 或游戏解包数据查找。
- ExcelSheet 访问:统一使用
Plugin.ItemSheet获取物品表,避免散布的GetExcelSheet<Item>()调用 - 配置修改:使用
UpdateConfig(Action<Configuration>)方法修改并自动保存配置,防止遗漏Save()调用 - 物品名称:统一使用
Name.ExtractText()获取纯文本名称,不使用Name.ToString() - 可见性:
BlindBoxInfo为public类,BlindBoxGroupJSON/BlindBoxEntryJSON为internalDTO,仅插件内部使用
GameFunctions.IsUnlocked(Item item) 通过以下方式判断物品是否已获得:
- 调用
ExdModule.GetItemRowById获取物品的 EXD 行数据 - 调用
UIState.Instance()->IsItemActionUnlocked(row)检查物品动作是否已解锁 - 返回
1表示已解锁(已获得),其他值表示未获得
该方法依赖 FFXIVClientStructs 的原生函数,游戏大版本更新后可能需要更新 ClientStructs 绑定。
以下列出 GameFunctions.IsUnlocked 涉及的物品动作类型(ActionType)及其 RowId,供维护时参考。该枚举已从源码中移除,仅保留为文档:
| ActionType | RowId | 说明 |
|---|---|---|
| Companion | 853 | 宠物 |
| BuddyEquip | 1013 | 鸟甲 |
| Mount | 1322 | 坐骑 |
| SecretRecipeBook | 2136 | 秘籍 |
| UnlockLink | 2633 | 解锁链接(骑乘图、青魔法图腾、情感动作/舞蹈、发型等) |
| TripleTriadCard | 3357 | 九宫幻卡 |
| FolkloreTome | 4107 | 传承录 |
| OrchestrionRoll | 25183 | 管弦乐琴乐谱 |
| FramersKit | 29459 | 画框套装 |
| Ornament | 20086 | 时装配件 |
| Glasses | 37312 | 眼镜 |
| CompanySealVouchers | 41120 | 军团券(use = 在军团中,is unlocked = 始终 false) |
- 查询物品获取情况的函数来自 CriticalCommonLib
- 盲盒数据来自 最终幻想XIV中文维基
