[MD]
# 🛒 商店系统插件 - 使用说明
## 📦 插件概述
商店系统插件旨在为生存服务器提供基本的购买、出售和自动售出功能,并支持玩家开设个人商店进行物品交易。目前支持系统商店、玩家商店、物品分类、搜索、表达式计算等功能。虽然功能还在不断完善中,但基本可以满足日常使用需求。如果在使用过程中遇到问题,欢迎反馈。
> **兼容性说明:** 本插件的 `shopdata.json` 配置文件格式兼容 [TMEssential](https://www.minebbs.com/resources/tmessential.2974/) 的商店配置,本插件正是基于 TMEssential 的商店配置文件格式开发的。如果你之前使用过 TMEssential 的商店功能,可以直接使用原有的配置文件。
---
## 🎯 核心功能
### 1. 购买系统
- 从商店购买物品,使用服务器金币
- 支持分类浏览和搜索
- 支持表达式计算购买数量(如 `2*3+1`)
- **支持SNBT物品**:可购买带有自定义NBT数据的物品(如附魔武器、自定义名称物品等)
### 2. 出售系统
- 出售物品获得金币
- 自动检测背包中物品数量
- 支持批量出售
- **支持SNBT物品**:可出售带有自定义NBT数据的物品
### 3. 自动售出系统
- 设置特定物品自动出售
- 定时检查并自动出售设置的物品
- 可配置检查间隔时间
### 4. 搜索功能
- 按名称搜索物品(目前仅支持精确匹配,模糊匹配功能还在开发中)
- 跨分类搜索
- **支持搜索玩家商店(v1.1.0)**:搜索系统商店的同时,也会搜索所有玩家商店的物品,并标注来源商店
### 5. 分类管理
- 支持分类图标
- 灵活的配置结构
- **完全支持多级分类**:支持无限层级的分类嵌套,方便管理大量物品
### 6. 排行榜系统
- 支持查看购买次数、出售次数、购买总额、出售总额排行
- 数据自动统计,无需手动配置
- 通过 `/shop rank` 命令查看
### 7. GUI商店配置(v1.0.4新增)
- 管理员可通过游戏内GUI界面直接管理商店配置
- 无需手动编辑JSON文件,降低配置门槛
- 支持添加/删除分类、添加/删除物品、修改价格
- 支持从背包选择物品快速设置商品
- 操作路径:`/shop open` → 设置系统商店 → 购买/出售
### 8. 玩家商店系统(v1.1.0新增)
- 每位玩家都可以创建自己的商店并设置商店名称
- **上架物品**:从背包选择物品设置价格和数量,其他玩家购买后金币直接归店主
- **回收物品**:店主预先支付金币作为收购资金,其他玩家可将物品出售给商店
- **商店仓库**:回收的物品自动存入仓库,可单个领取或一键全部领取
- 所有玩家都可以浏览并购买/出售其他玩家商店的物品
- OP可代为管理其他玩家的商店(设置上架/回收物品)
- **搜索支持玩家商店**:搜索功能会同时搜索系统商店与所有玩家商店的物品
- **自动售出暂不支持玩家商店**:自动售出功能仅对系统商店生效
- 操作路径:`/shop open` → 玩家商店
---
## 📝 命令列表
| 命令 | 权限 | 说明 |
|------|------|------|
| `/shop open` | 无 | 打开商店界面(可进入系统商店、玩家商店、搜索;OP可进入设置模式) |
| `/shop list` | 无 | 查看自动售出物品列表 |
| `/shop rank` | 无 | 查看商店排行榜 |
### 命令使用示例
```
/shop open # 打开商店主界面(OP额外显示"设置系统商店"按钮)
/shop list # 查看当前设置的自动售出物品
/shop rank # 查看购买/出售排行榜
```
---
## ⚙️ 配置文件
### 1. 插件配置文件
**位置:** `plugins/shop/config.json`
```json
{
"AutoSell": true,
"AutoSellTime": 60
}
```
**配置项说明:**
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `AutoSell` | 布尔值 | `true` | 是否启用自动售出功能 |
| `AutoSellTime` | 数字 | `60` | 自动售出检查间隔(秒) |
---
### 2. 商品数据配置文件
**位置:** `plugins/shop/shopdata.json`
**在线编辑工具:** [shopdata.json 编辑器](https://ai.zhangsanyynb.top/shopdata.html)
#### 配置文件结构
```json
{
"Buy": [
{
"name": "分类名称",
"type": "group",
"image": "图标路径",
"data": [
{
"name": "物品名称",
"type": "exam",
"image": "图标路径",
"data": {
"type": "minecraft:物品ID",
"aux": 0,
"remark": "备注",
"money": 价格
}
}
]
}
],
"Sell": [
// 结构与 Buy 相同
]
}
```
#### 字段详细说明
**分类对象(group):**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `name` | 字符串 | ✅ | 分类显示名称 |
| `type` | 字符串 | ✅ | 固定值 `"group"` |
| `image` | 字符串 | ❌ | 分类图标路径(可为空) |
| `data` | 数组 | ✅ | 子物品列表 |
**物品对象(exam):**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `name` | 字符串 | ✅ | 物品显示名称 |
| `type` | 字符串 | ✅ | 固定值 `"exam"` |
| `image` | 字符串 | ❌ | 物品图标路径(可为空) |
| `data` | 对象 | ✅ | 物品详细信息 |
**物品数据对象(data):**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `type` | 字符串 | ✅ | Minecraft 物品ID(如 `minecraft:diamond`) |
| `aux` | 数字 | ❌ | 物品附加值/数据值(购买已支持,出售暂不支持) |
| `remark` | 字符串 | ❌ | 备注信息 |
| `money` | 数字 | ✅ | 价格(金币) |
| `snbt` | 字符串 | ❌ | SNBT字符串(用于自定义NBT物品,与`type`字段二选一) |
---
## 📋 配置示例
### 示例1:简单分类配置
```json
{
"Buy": [
{
"name": "矿物",
"type": "group",
"image": "",
"data": [
{
"name": "钻石",
"type": "exam",
"image": "",
"data": {
"type": "minecraft:diamond",
"aux": 0,
"remark": "diamond",
"money": 2000
}
},
{
"name": "铁锭",
"type": "exam",
"image": "",
"data": {
"type": "minecraft:iron_ingot",
"aux": 0,
"remark": "iron_ingot",
"money": 100
}
}
]
}
],
"Sell": []
}
```
> **提示:** 配置中的 `aux` 字段在购买时已生效,出售暂不支持。建议保留该字段以备后续版本使用。
### 示例2:带图标的配置
```json
{
"Buy": [
{
"name": "红石相关",
"type": "group",
"image": "textures/items/redstone_dust.png",
"data": [
{
"name": "红石",
"type": "exam",
"image": "textures/items/redstone_dust.png",
"data": {
"type": "minecraft:redstone",
"aux": 0,
"remark": "redstone",
"money": 20
}
}
]
}
],
"Sell": [
{
"name": "矿物出售",
"type": "group",
"image": "",
"data": [
{
"name": "钻石",
"type": "exam",
"image": "",
"data": {
"type": "minecraft:diamond",
"aux": 0,
"remark": "diamond",
"money": 1800
}
}
]
}
]
}
```
### 示例3:SNBT物品配置(自定义NBT物品)
```json
{
"Buy": [
{
"name": "特殊物品",
"type": "group",
"image": "",
"data": [
{
"name": "锋利钻石剑",
"type": "exam",
"image": "textures/items/diamond_sword.png",
"data": {
"snbt": "{Count:1b,Damage:0s,Name:\"minecraft:diamond_sword\",tag:{ench:[{id:9s,lvl:5s},{id:17s,lvl:3s}]}}",
"remark": "enchanted_diamond_sword",
"money": 5000
}
},
{
"name": "自定义名称苹果",
"type": "exam",
"image": "textures/items/apple.png",
"data": {
"snbt": "{Count:1b,Damage:0s,Name:\"minecraft:apple\",tag:{display:{Name:\"§6金苹果\"}}}",
"remark": "custom_name_apple",
"money": 100
}
}
]
}
],
"Sell": [
{
"name": "特殊物品出售",
"type": "group",
"image": "",
"data": [
{
"name": "锋利钻石剑",
"type": "exam",
"image": "textures/items/diamond_sword.png",
"data": {
"snbt": "{Count:1b,Damage:0s,Name:\"minecraft:diamond_sword\",tag:{ench:[{id:9s,lvl:5s},{id:17s,lvl:3s}]}}",
"remark": "enchanted_diamond_sword",
"money": 4000
}
}
]
}
]
}
```
> **SNBT说明:**
> - SNBT(Stringified NBT)是NBT数据的字符串表示形式
> - 使用 `snbt` 字段时,不需要填写 `type` 字段
> - 可通过游戏内命令 `/test` 获取手持物品的SNBT数据
> - SNBT格式参考:[LSE NBT文档](https://lse.levimc.org/zh/apis/NbtAPI/NBT/)
---
## 🔧 高级功能
### 1. 表达式计算
购买/出售数量支持数学表达式:
```
2*3+1 → 7
10/2 → 5
(2+3)*4 → 20
2^3 → 8
10 mod 3 → 1
```
**支持的运算符:**
- `+` 加法
- `-` 减法
- `*` 乘法
- `/` 除法
- `%` 或 `mod` 取模
- `^` 幂运算
- `()` 括号
**支持的输入格式:**
- 全角/半角数字
- 全角/半角运算符
- 中文括号/英文括号
### 2. 自动售出系统
**工作原理:**
1. 玩家通过商店界面设置要自动售出的物品
2. 系统按配置的时间间隔检查在线玩家
3. 自动出售玩家背包中设置的物品
4. 金币自动添加到玩家账户
**设置方法:**
1. 执行 `/shop open`
2. 选择"自动售出设置"
3. 选择物品分类
4. 开启要自动售出的物品开关
**查看设置:**
```
/shop list # 查看当前自动售出物品列表
```
### 3. 搜索功能
- 在购买/出售界面点击"搜索"
- 输入物品名称进行搜索
- 搜索结果会显示物品所在分类
- **v1.1.0 起支持搜索玩家商店**:搜索购买/出售时,会同时搜索所有玩家商店的物品,并标注物品来源商店名称
> **注意:** 目前搜索功能仅支持精确匹配,暂时还不支持模糊搜索。如果搜索不到结果,请尝试输入完整的物品名称。这个功能后续可能会改进。
### 4. 排行榜功能
**查看方法:**
```
/shop rank # 打开排行榜界面
```
**支持的排行类型:**
- 购买次数排行榜
- 出售次数排行榜
- 购买总金额排行榜
- 出售总金额排行榜
**统计规则:**
- 所有购买/出售操作自动计入统计
- 自动售出的物品也会计入出售统计
- 数据按玩家维度累计,不会因配置更新而清空
---
## 📁 文件结构
```
plugins/shop/
├── shop.js # 插件主文件
├── shopdata.json # 商品数据配置
├── config.json # 插件配置
├── db/ # 数据库目录(自动创建)
│ └── (LevelDB文件)
└── playerShopDB/ # 玩家商店数据库目录(自动创建)
└── (LevelDB文件)
```
---
## 🛠️ 安装与部署
### 1. 安装步骤
1. 将 `shop.js` 放入 `plugins/` 目录
2. 创建 `plugins/shop/` 目录
3. 将 `shopdata.json` 放入 `plugins/shop/` 目录
4. 可选:创建 `plugins/shop/config.json` 自定义配置
5. 在服务器的 `server.properties` 文件中添加 `language=zh_CN`(详见下方"4. 语言设置")
### 2. 配置步骤
1. 编辑 `shopdata.json` 添加商品
- 可使用在线编辑器:https://ai.zhangsanyynb.top/shopdata.html
2. 编辑 `config.json` 调整插件设置
3. 重启服务器或重新加载插件
### 3. 重载配置
- 修改 `shopdata.json` 后,系统会自动检测变化
- 如果商品配置发生变化,会清空所有玩家的自动售出设置
- 系统会广播通知玩家重新设置
### 4. 语言设置(重要)
> **⚠️ 注意:** 请务必在服务器的 `server.properties` 配置文件中添加一行:
>
> ```
> language=zh_CN
> ```
>
> 只有设置了 `language=zh_CN`,游戏内物品名称才会显示为中文,商店中的物品名称、搜索、玩家商店上架物品等才会正常显示中文。如果未设置,物品名称会显示为英文(如 `minecraft:diamond`),影响使用体验。
>
> **修改后需要重启服务器才能生效。**
---
## 数据存储
- **玩家数据**:使用 LevelDB 存储在 `plugins/shop/db/` 目录
- **玩家商店数据**:使用 LevelDB 存储在 `plugins/shop/playerShopDB/` 目录
- **配置数据**:JSON 文件存储
- **自动售出设置**:按玩家 xuid 存储
---
## 🔄 更新日志
### v1.1.0
- **新增玩家商店系统**:玩家可创建个人商店并与其他玩家交易
- 设置商店名称
- 上架物品出售:从背包选择物品,设置价格和数量,其他玩家购买后金币直接归店主
- 回收物品收购:店主预先支付金币作为收购资金,其他玩家可出售物品给商店
- 商店仓库:回收的物品自动存入仓库,可单个领取或一键全部领取
- 所有玩家均可浏览、购买/出售其他玩家商店的物品
- OP可代为管理其他玩家的商店
- **搜索支持玩家商店**:搜索购买/出售时,会同时搜索系统商店与所有玩家商店的物品,并标注来源商店
- **自动售出暂不支持玩家商店**:自动售出功能仅对系统商店生效
- **新增语言设置说明**:需在 `server.properties` 中配置 `language=zh_CN`,物品名称才会显示为中文
- 使用 DeepSeek V4 Flash、GPT 5.6 Sol 对代码进行了全面的 bug 排查与修复
- 版本号更新至1.1.0
### v1.0.4
- **新增GUI修改商店配置**:管理员可通过游戏内GUI界面直接管理商店配置,无需手动编辑JSON文件
- 支持添加/删除购买和出售分类
- 支持添加/删除物品
- 支持从背包选择物品快速设置
- 支持修改物品价格(支持表达式计算)
- 支持设置自定义NBT物品(SNBT)
- 操作路径:`/shop open` → 设置系统商店 → 购买/出售
- 版本号更新至1.0.4
### v1.0.3
- **完全支持多级分类**:支持无限层级的分类嵌套
- **支持SNBT物品**:可购买/出售带有自定义NBT数据的物品
- 优化自动售出系统对SNBT物品的支持
- 更新文档说明
### v1.0.0
- 初始版本发布
- 支持基本的购买/出售功能
- 支持自动售出系统
- 支持搜索功能(目前仅支持精确匹配)
- 支持表达式计算
- 购买支持物品附加值(aux)
- 新增排行榜/统计功能
**已知限制:**
- 出售暂不支持物品附加值(aux)
- 搜索功能暂不支持模糊匹配
- 自动售出暂不支持玩家商店物品
---
## 📝 在线编辑工具
### 🌐 商品配置编辑器
**访问地址:** https://ai.zhangsanyynb.top/shopdata.html
这是一个专门用于编辑 `shopdata.json` 文件的在线可视化工具,无需手动编写 JSON 代码。
[/MD]
[MD] ### 🎯 工具功能 #### 1. 可视化编辑界面 - 直观的图形界面,无需了解 JSON 语法 - 实时预览配置效果 - 支持拖拽排序分类和物品 #### 2. 分类管理 - 添加新的购买/出售分类 - 修改分类名称和图标 - 删除不需要的分类 - 调整分类顺序 #### 3. 物品管理 - 在分类中添加新物品 - 编辑物品属性(名称、ID、价格、图标、SNBT) - 批量修改物品价格 - 复制物品到其他分类 - **支持SNBT物品配置**:可添加带有自定义NBT数据的物品 #### 4. 数据验证 - 自动验证物品ID格式 - 检查价格设置是否合理 - 提示必填字段缺失 - 防止配置错误 #### 5. 导入导出 - 导出标准 JSON 配置文件 - 导入现有 shopdata.json 文件 - 保存配置到本地 - 分享配置给其他玩家 ### 📖 使用步骤 #### 步骤1:访问编辑器 打开浏览器,访问 https://ai.zhangsanyynb.top/shopdata.html #### 步骤2:创建或导入配置 - **新建配置**:点击"新建"按钮开始创建 - **导入配置**:点击"导入"按钮上传现有的 `shopdata.json` 文件 #### 步骤3:编辑商品数据 1. **添加分类**: - 点击"添加分类"按钮 - 输入分类名称(如"矿物"、"食物") - 可选:设置分类图标路径 2. **添加物品**: - 在分类下点击"添加物品" - 填写物品信息: - 名称:显示给玩家的名称 - 物品ID:Minecraft 物品ID(如 `minecraft:diamond`) - 价格:金币价格 - 图标:可选,纹理路径 - **SNBT**:可选,自定义NBT物品的SNBT字符串(与物品ID二选一) 3. **编辑属性**: - 点击已有物品进行编辑 - 修改价格、名称等属性 - 调整物品在分类中的位置 #### 步骤4:导出配置 1. 点击"导出"按钮 2. 下载生成的 `shopdata.json` 文件 3. 将文件放入服务器的 `plugins/shop/` 目录 #### 步骤5:应用配置 1. 重启服务器或重新加载插件 2. 系统会自动检测配置变化 3. 玩家可以开始使用更新后的商店 ### 💡 使用技巧 #### 物品ID查找 - 使用游戏内 `/give` 命令查看物品ID - 参考 Minecraft Wiki 物品ID列表 - 常用物品ID: - 钻石:`minecraft:diamond` - 铁锭:`minecraft:iron_ingot` - 金锭:`minecraft:gold_ingot` - 绿宝石:`minecraft:emerald` - 红石:`minecraft:redstone` #### 价格设置建议 - 购买价格 > 出售价格(防止刷金) - 稀有物品设置较高价格 - 基础资源设置较低价格 - 参考服务器经济平衡 #### 图标设置 - 使用 Minecraft 纹理路径 - 格式:`textures/items/物品名.png` - 示例:`textures/items/diamond.png` - 可以为空,使用默认图标 #### SNBT物品配置 - **获取SNBT数据**:在游戏内手持物品,执行 `/shop test` 命令获取SNBT字符串 - **配置格式**:在物品数据中使用 `snbt` 字段代替 `type` 字段 - **适用场景**:附魔武器、自定义名称物品、自定义Lore物品等 - **注意事项**:SNBT字符串必须完整且格式正确,建议使用在线编辑器生成 ### ⚠️ 注意事项 1. **备份配置**:修改前建议备份原始 `shopdata.json` 文件,以防万一 2. **格式验证**:请确保导出的 JSON 格式正确 3. **物品ID**:需要使用完整的 Minecraft 物品ID 4. **编码格式**:建议使用 UTF-8 编码保存文件 5. **重启生效**:修改配置后可能需要重启服务器才能生效 6. **aux字段**:购买已支持 aux,出售暂不支持,该功能计划在后续版本完善 7. **多级分类**:完全支持无限层级分类嵌套 8. **SNBT物品**:支持自定义NBT物品,使用`snbt`字段时无需填写`type`字段 9. **语言设置**:服务器需在 `server.properties` 中设置 `language=zh_CN`,否则物品名称将显示为英文 ### 🔧 常见问题 #### Q1: 为什么自动售出设置被清空了? A: 当 `shopdata.json` 文件内容发生变化时,系统会自动清空所有自动售出设置,这是为了确保数据的一致性,还请理解。 #### Q2: 如何添加新物品? A: 可以编辑 `shopdata.json` 文件,在对应的 `Buy` 或 `Sell` 数组中添加新的物品配置。推荐使用在线编辑器,会方便很多。 #### Q3: 支持哪些物品图标? A: 支持 Minecraft 纹理路径,如 `textures/items/diamond.png`。也可以留空,会使用默认图标。 #### Q4: 如何修改自动售出检查间隔? A: 编辑 `plugins/shop/config.json` 文件,修改 `AutoSellTime` 值(单位:秒)即可。 #### Q5: 表达式计算支持哪些功能? A: 支持加减乘除、幂运算、取模、括号,以及全角/半角字符自动转换,应该能满足大部分计算需求。 #### Q6: 编辑器无法加载怎么办? A: 可以检查一下网络连接,尝试刷新页面,或者换个浏览器试试。 #### Q7: 如何修改已有物品的价格? A: 在编辑器中找到对应物品,点击编辑按钮修改价格,然后重新导出配置即可。 #### Q8: 导出的文件无法使用? A: 请检查 JSON 格式是否正确,确保没有语法错误,文件编码建议使用 UTF-8。 #### Q9: 可以同时编辑购买和出售吗? A: 是的,编辑器支持同时编辑 `Buy` 和 `Sell` 两个部分。 #### Q10: 如何恢复默认配置? A: 可以使用编辑器的"重置"功能,或者从备份恢复原始文件。 #### Q11: 为什么出售时aux字段不生效? A: 目前插件购买已支持 aux(物品附加值),但出售功能暂不支持。出售的 aux 支持正在计划中,后续版本会完善。 #### Q12: 多级分类可以使用吗? A: 是的,插件完全支持多级分类功能。可以创建无限层级的分类嵌套,方便管理大量物品。 #### Q13: 如何添加SNBT物品(自定义NBT物品)? A: 在配置中使用 `snbt` 字段代替 `type` 字段。可以通过游戏内 `/shop test` 命令获取手持物品的SNBT数据。详细示例请参考配置示例3。 #### Q14: 通过GUI添加的物品名称显示为英文怎么办? A: 请先确认服务器的 `server.properties` 中是否设置了 `language=zh_CN`(设置后需重启服务器生效)。如果已设置仍然显示英文,则可能是物品本身为英文ID(如 `minecraft:diamond`),可以在 `shopdata.json` 中手动修改对应的 `name` 字段为中文名称,或使用在线编辑器修改。 --- ## 🤖 开发说明 **配置文件兼容性:** 本插件的 `shopdata.json` 格式参考并兼容 [TMEssential](https://www.minebbs.com/resources/tmessential.2974/) 的商店配置文件格式。如果你之前使用过 TMEssential 的商店功能,可以尝试直接迁移原有的配置文件。 **开发过程中使用的 AI 工具:** - **Qwen3** - 早期开发阶段 - **DeepSeek V4 Pro** - 中期开发 - **Mimo V2.5 Pro** - 后期开发与文档编写 - **DeepSeek V4 Flash** - v1.1.0 开发与 bug 排查 - **GPT 5.6 Sol** - v1.1.0 开发与 bug 排查 **在线编辑器开发工具:** - **Qwen3.7 Max** - shopdata.html 编辑器开发 - **Kimi k3** - shopdata.html 编辑器第二次开发(本来是准备用qwen3.8max做的,结果连qwen3.7max都比不上) --- **最后更新:** 2026-08-04 **版本:** 1.1.0 **作者:** zhangsanYYNB --- ## 🎮 GUI商店配置使用指南(v1.0.4新增) ### 操作入口 1. 执行 `/shop open` 打开商店主界面 2. 如果你是OP(管理员),会看到额外的 **"设置系统商店"** 按钮 3. 点击进入后可选择 **"购买"** 或 **"出售"** 进行配置 ### 功能说明 #### 1. 分类管理 - **添加分类**:在分类列表底部点击"添加物品or分类"→ 选择"添加分类"→ 输入分类名称 - **删除分类**:进入要删除的分类 → 点击"删除所在分类" → 确认删除 - **浏览分类**:点击分类名称可进入查看/编辑其中的物品 #### 2. 物品管理 - **添加物品**:在分类中点击"添加物品or分类"→ 选择"添加物品"→ 从背包选择物品 - **删除物品**:点击物品 → 开启"删除物品"开关 → 确认删除 - **修改价格**:点击物品 → 在价格输入框中输入新价格(支持表达式如 `2*100`) #### 3. 从背包选择物品 - 添加物品后,系统会自动扫描你的背包 - 下拉菜单中显示物品名称和数量 - 选择物品后,系统会自动填充物品信息 - 如果物品含有附魔、自定义名称等特殊数据,会自动保存SNBT #### 4. 价格设置 - 价格支持数学表达式计算(如 `10*5+20`) - 价格必须为正整数 - 修改后立即生效,无需重启 ### 注意事项 - ⚠️ 只有OP(管理员)才能看到"设置系统商店"按钮 - ⚠️ 删除分类会同时删除其中的所有物品,请谨慎操作 - ⚠️ 修改商店配置后,所有玩家的自动售出设置会被清空(系统会广播通知) - 💡 建议先使用在线编辑器规划好分类结构,再通过GUI添加具体物品 --- ## 🎮 玩家商店使用指南(v1.1.0新增) ### 操作入口 1. 执行 `/shop open` 打开商店主界面 2. 选择 **"玩家商店"** 进入玩家商店菜单 ### 创建与设置自己的商店 1. 进入"玩家商店"后,选择 **"查看自己商店"** 2. 首次进入会提示设置 **商店名称**(名称不能为空) 3. 设置完成后即可管理自己的商店 **管理选项:** - **重新设置商店名称**:修改商店名称 - **上架物品设置**:管理出售给其他玩家的物品 - **回收物品设置**:管理收购其他玩家物品的项目 - **查看商店仓库**:领取其他玩家出售给你的物品 ### 上架物品(出售) 1. 进入"上架物品设置"→ 点击"添加物品" 2. 从背包下拉列表中选择要出售的物品 3. 输入 **数量** 和 **价格**(均支持表达式计算) 4. 确认后物品会从背包中扣除并上架,其他玩家购买后金币直接归你 > **说明:** 上架数量不足时可进入物品设置进行"补货";删除上架物品时剩余数量会退回仓库。 ### 回收物品(收购) 1. 进入"回收物品设置"→ 点击"添加物品" 2. 选择要收购的物品,输入 **数量** 和 **价格** 3. 系统会按 `价格 × 数量` 预先扣除你的金币作为收购资金 4. 其他玩家出售对应物品给你时,物品会存入你的商店仓库 > **说明:** 回收来的物品可在"商店仓库"中单个领取或一键全部领取;删除回收物品时,剩余数量的收购资金会退还给你。 ### 浏览与交易其他玩家的商店 1. 进入"玩家商店"菜单,选择要查看的玩家商店 2. 可选择"查看商店物品"购买物品,或"查看商店回收的物品"出售物品 3. 交易规则与系统商店一致(金币实时结算) ### 注意事项 - ⚠️ **自动售出暂不支持玩家商店**:自动售出功能仅对系统商店生效 - ⚠️ 搜索功能支持同时搜索系统商店和所有玩家商店的物品 - 💡 OP可以代为管理任意玩家的商店(设置上架/回收物品)知) - 💡 建议先使用在线编辑器规划好分类结构,再通过GUI添加具体物品 [/MD]
[MD] ### 🎯 工具功能 #### 1. 可视化编辑界面 - 直观的图形界面,无需了解 JSON 语法 - 实时预览配置效果 - 支持拖拽排序分类和物品 #### 2. 分类管理 - 添加新的购买/出售分类 - 修改分类名称和图标 - 删除不需要的分类 - 调整分类顺序 #### 3. 物品管理 - 在分类中添加新物品 - 编辑物品属性(名称、ID、价格、图标、SNBT) - 批量修改物品价格 - 复制物品到其他分类 - **支持SNBT物品配置**:可添加带有自定义NBT数据的物品 #### 4. 数据验证 - 自动验证物品ID格式 - 检查价格设置是否合理 - 提示必填字段缺失 - 防止配置错误 #### 5. 导入导出 - 导出标准 JSON 配置文件 - 导入现有 shopdata.json 文件 - 保存配置到本地 - 分享配置给其他玩家 ### 📖 使用步骤 #### 步骤1:访问编辑器 打开浏览器,访问 https://ai.zhangsanyynb.top/shopdata.html #### 步骤2:创建或导入配置 - **新建配置**:点击"新建"按钮开始创建 - **导入配置**:点击"导入"按钮上传现有的 `shopdata.json` 文件 #### 步骤3:编辑商品数据 1. **添加分类**: - 点击"添加分类"按钮 - 输入分类名称(如"矿物"、"食物") - 可选:设置分类图标路径 2. **添加物品**: - 在分类下点击"添加物品" - 填写物品信息: - 名称:显示给玩家的名称 - 物品ID:Minecraft 物品ID(如 `minecraft:diamond`) - 价格:金币价格 - 图标:可选,纹理路径 - **SNBT**:可选,自定义NBT物品的SNBT字符串(与物品ID二选一) 3. **编辑属性**: - 点击已有物品进行编辑 - 修改价格、名称等属性 - 调整物品在分类中的位置 #### 步骤4:导出配置 1. 点击"导出"按钮 2. 下载生成的 `shopdata.json` 文件 3. 将文件放入服务器的 `plugins/shop/` 目录 #### 步骤5:应用配置 1. 重启服务器或重新加载插件 2. 系统会自动检测配置变化 3. 玩家可以开始使用更新后的商店 ### 💡 使用技巧 #### 物品ID查找 - 使用游戏内 `/give` 命令查看物品ID - 参考 Minecraft Wiki 物品ID列表 - 常用物品ID: - 钻石:`minecraft:diamond` - 铁锭:`minecraft:iron_ingot` - 金锭:`minecraft:gold_ingot` - 绿宝石:`minecraft:emerald` - 红石:`minecraft:redstone` #### 价格设置建议 - 购买价格 > 出售价格(防止刷金) - 稀有物品设置较高价格 - 基础资源设置较低价格 - 参考服务器经济平衡 #### 图标设置 - 使用 Minecraft 纹理路径 - 格式:`textures/items/物品名.png` - 示例:`textures/items/diamond.png` - 可以为空,使用默认图标 #### SNBT物品配置 - **获取SNBT数据**:在游戏内手持物品,执行 `/shop test` 命令获取SNBT字符串 - **配置格式**:在物品数据中使用 `snbt` 字段代替 `type` 字段 - **适用场景**:附魔武器、自定义名称物品、自定义Lore物品等 - **注意事项**:SNBT字符串必须完整且格式正确,建议使用在线编辑器生成 ### ⚠️ 注意事项 1. **备份配置**:修改前建议备份原始 `shopdata.json` 文件,以防万一 2. **格式验证**:请确保导出的 JSON 格式正确 3. **物品ID**:需要使用完整的 Minecraft 物品ID 4. **编码格式**:建议使用 UTF-8 编码保存文件 5. **重启生效**:修改配置后可能需要重启服务器才能生效 6. **aux字段**:购买已支持 aux,出售暂不支持,该功能计划在后续版本完善 7. **多级分类**:完全支持无限层级分类嵌套 8. **SNBT物品**:支持自定义NBT物品,使用`snbt`字段时无需填写`type`字段 9. **语言设置**:服务器需在 `server.properties` 中设置 `language=zh_CN`,否则物品名称将显示为英文 ### 🔧 常见问题 #### Q1: 为什么自动售出设置被清空了? A: 当 `shopdata.json` 文件内容发生变化时,系统会自动清空所有自动售出设置,这是为了确保数据的一致性,还请理解。 #### Q2: 如何添加新物品? A: 可以编辑 `shopdata.json` 文件,在对应的 `Buy` 或 `Sell` 数组中添加新的物品配置。推荐使用在线编辑器,会方便很多。 #### Q3: 支持哪些物品图标? A: 支持 Minecraft 纹理路径,如 `textures/items/diamond.png`。也可以留空,会使用默认图标。 #### Q4: 如何修改自动售出检查间隔? A: 编辑 `plugins/shop/config.json` 文件,修改 `AutoSellTime` 值(单位:秒)即可。 #### Q5: 表达式计算支持哪些功能? A: 支持加减乘除、幂运算、取模、括号,以及全角/半角字符自动转换,应该能满足大部分计算需求。 #### Q6: 编辑器无法加载怎么办? A: 可以检查一下网络连接,尝试刷新页面,或者换个浏览器试试。 #### Q7: 如何修改已有物品的价格? A: 在编辑器中找到对应物品,点击编辑按钮修改价格,然后重新导出配置即可。 #### Q8: 导出的文件无法使用? A: 请检查 JSON 格式是否正确,确保没有语法错误,文件编码建议使用 UTF-8。 #### Q9: 可以同时编辑购买和出售吗? A: 是的,编辑器支持同时编辑 `Buy` 和 `Sell` 两个部分。 #### Q10: 如何恢复默认配置? A: 可以使用编辑器的"重置"功能,或者从备份恢复原始文件。 #### Q11: 为什么出售时aux字段不生效? A: 目前插件购买已支持 aux(物品附加值),但出售功能暂不支持。出售的 aux 支持正在计划中,后续版本会完善。 #### Q12: 多级分类可以使用吗? A: 是的,插件完全支持多级分类功能。可以创建无限层级的分类嵌套,方便管理大量物品。 #### Q13: 如何添加SNBT物品(自定义NBT物品)? A: 在配置中使用 `snbt` 字段代替 `type` 字段。可以通过游戏内 `/shop test` 命令获取手持物品的SNBT数据。详细示例请参考配置示例3。 #### Q14: 通过GUI添加的物品名称显示为英文怎么办? A: 请先确认服务器的 `server.properties` 中是否设置了 `language=zh_CN`(设置后需重启服务器生效)。如果已设置仍然显示英文,则可能是物品本身为英文ID(如 `minecraft:diamond`),可以在 `shopdata.json` 中手动修改对应的 `name` 字段为中文名称,或使用在线编辑器修改。 --- ## 🤖 开发说明 **配置文件兼容性:** 本插件的 `shopdata.json` 格式参考并兼容 [TMEssential](https://www.minebbs.com/resources/tmessential.2974/) 的商店配置文件格式。如果你之前使用过 TMEssential 的商店功能,可以尝试直接迁移原有的配置文件。 **开发过程中使用的 AI 工具:** - **Qwen3** - 早期开发阶段 - **DeepSeek V4 Pro** - 中期开发 - **Mimo V2.5 Pro** - 后期开发与文档编写 - **DeepSeek V4 Flash** - v1.1.0 开发与 bug 排查 - **GPT 5.6 Sol** - v1.1.0 开发与 bug 排查 **在线编辑器开发工具:** - **Qwen3.7 Max** - shopdata.html 编辑器开发 - **Kimi k3** - shopdata.html 编辑器第二次开发(本来是准备用qwen3.8max做的,结果连qwen3.7max都比不上) --- **最后更新:** 2026-08-04 **版本:** 1.1.0 **作者:** zhangsanYYNB --- ## 🎮 GUI商店配置使用指南(v1.0.4新增) ### 操作入口 1. 执行 `/shop open` 打开商店主界面 2. 如果你是OP(管理员),会看到额外的 **"设置系统商店"** 按钮 3. 点击进入后可选择 **"购买"** 或 **"出售"** 进行配置 ### 功能说明 #### 1. 分类管理 - **添加分类**:在分类列表底部点击"添加物品or分类"→ 选择"添加分类"→ 输入分类名称 - **删除分类**:进入要删除的分类 → 点击"删除所在分类" → 确认删除 - **浏览分类**:点击分类名称可进入查看/编辑其中的物品 #### 2. 物品管理 - **添加物品**:在分类中点击"添加物品or分类"→ 选择"添加物品"→ 从背包选择物品 - **删除物品**:点击物品 → 开启"删除物品"开关 → 确认删除 - **修改价格**:点击物品 → 在价格输入框中输入新价格(支持表达式如 `2*100`) #### 3. 从背包选择物品 - 添加物品后,系统会自动扫描你的背包 - 下拉菜单中显示物品名称和数量 - 选择物品后,系统会自动填充物品信息 - 如果物品含有附魔、自定义名称等特殊数据,会自动保存SNBT #### 4. 价格设置 - 价格支持数学表达式计算(如 `10*5+20`) - 价格必须为正整数 - 修改后立即生效,无需重启 ### 注意事项 - ⚠️ 只有OP(管理员)才能看到"设置系统商店"按钮 - ⚠️ 删除分类会同时删除其中的所有物品,请谨慎操作 - ⚠️ 修改商店配置后,所有玩家的自动售出设置会被清空(系统会广播通知) - 💡 建议先使用在线编辑器规划好分类结构,再通过GUI添加具体物品 --- ## 🎮 玩家商店使用指南(v1.1.0新增) ### 操作入口 1. 执行 `/shop open` 打开商店主界面 2. 选择 **"玩家商店"** 进入玩家商店菜单 ### 创建与设置自己的商店 1. 进入"玩家商店"后,选择 **"查看自己商店"** 2. 首次进入会提示设置 **商店名称**(名称不能为空) 3. 设置完成后即可管理自己的商店 **管理选项:** - **重新设置商店名称**:修改商店名称 - **上架物品设置**:管理出售给其他玩家的物品 - **回收物品设置**:管理收购其他玩家物品的项目 - **查看商店仓库**:领取其他玩家出售给你的物品 ### 上架物品(出售) 1. 进入"上架物品设置"→ 点击"添加物品" 2. 从背包下拉列表中选择要出售的物品 3. 输入 **数量** 和 **价格**(均支持表达式计算) 4. 确认后物品会从背包中扣除并上架,其他玩家购买后金币直接归你 > **说明:** 上架数量不足时可进入物品设置进行"补货";删除上架物品时剩余数量会退回仓库。 ### 回收物品(收购) 1. 进入"回收物品设置"→ 点击"添加物品" 2. 选择要收购的物品,输入 **数量** 和 **价格** 3. 系统会按 `价格 × 数量` 预先扣除你的金币作为收购资金 4. 其他玩家出售对应物品给你时,物品会存入你的商店仓库 > **说明:** 回收来的物品可在"商店仓库"中单个领取或一键全部领取;删除回收物品时,剩余数量的收购资金会退还给你。 ### 浏览与交易其他玩家的商店 1. 进入"玩家商店"菜单,选择要查看的玩家商店 2. 可选择"查看商店物品"购买物品,或"查看商店回收的物品"出售物品 3. 交易规则与系统商店一致(金币实时结算) ### 注意事项 - ⚠️ **自动售出暂不支持玩家商店**:自动售出功能仅对系统商店生效 - ⚠️ 搜索功能支持同时搜索系统商店和所有玩家商店的物品 - 💡 OP可以代为管理任意玩家的商店(设置上架/回收物品)知) - 💡 建议先使用在线编辑器规划好分类结构,再通过GUI添加具体物品 [/MD]