## 简介
NpcShop是一个功能强大的Minecraft商店插件,提供与Citizens2插件联动的NPC商店功能。玩家可以与NPC互动打开商店GUI,购买管理员设置的商品。支持多种货币类型,界面美观,操作简单直观。
**版本要求**: Spigot/Paper 1.21.4+
## 主要特点
**完整的物品数据保留** - 上架物品的所有属性、附魔、Lore等完全保留
**多种货币支持** - 支持Vault和PlayerPoints两种经济系统
**美观的GUI界面** - 使用现代化设计的GUI,支持自定义样式
**完整的权限系统** - 细粒度权限控制,可设置管理员和普通用户权限
**多页面显示** - 自动分页显示商品,无商品数量限制
**商店类型系统** - 支持普通商店和礼包商店两种类型
**物品名称自动翻译** - 自动翻译物品名称为中文,提升用户体验
**实时数据保存** - 使用SQLite数据库,确保数据安全性和一致性
浏览附件94898浏览附件94899浏览附件94900
## 安装说明
1. 下载插件: [点击下载](插入下载链接)
2. 将NpcShop.jar放入服务器的plugins文件夹
3. 安装必要依赖:
- [SagaLib]
- [Citizens2]
- [Vault]
- [PlayerPoints]
4. 重启服务器
5. 配置插件,根据需要修改config.yml
## 使用方法
### 创建商店
1. 创建一个Citizens NPC
2. 选择该NPC: `/ns select <NPC ID>`
3. 创建商店: `/ns create <商店名称> [shop/gift]`
- shop: 普通商店,可添加单个物品销售
- gift: 礼包商店,可将多个物品打包销售
### 添加商品
**普通商店**:
1. 选择商店NPC: `/ns select <NPC ID>`
2. 手持要添加的物品
3. 添加商品: `/ns add <价格> <货币类型>`
- 货币类型: 1(Vault金币) 或 2(PlayerPoints点券)
**礼包商店**:
1. 选择商店NPC: `/ns select <NPC ID>`
2. 创建礼包: `/ns gift create <材质> <显示名称> <价格> <货币类型>`
3. 手持要添加的物品
4. 添加到礼包: `/ns gift add`
### 使用商店
玩家只需右键点击NPC即可打开商店界面:
- 在普通商店中点击商品直接购买
- 在礼包商店中可先查看礼包内容,确认后购买整个礼包
## 命令列表
## 权限节点
## 配置文件
### config.yml 主要配置项
### 商店样式
插件提供了多种预设商店样式,可以通过`/ns style <样式名称>`设置:
- default: 默认样式
- dark: 暗色主题
- light: 亮色主题
- colorful: 彩色主题
## 特色功能
1. **礼包商店系统**:
- 将多个物品打包为一个礼包
- 玩家可以查看礼包内容后决定是否购买
- 管理员可以轻松管理礼包内容
2. **商品管理功能**:
- 显示商品ID,方便管理员编辑和移除
- 右键删除礼包或礼包内物品
- 支持单价和总价显示
3. **操作优化**:
- 冷却系统防止误操作和刷单
- 物品名称自动翻译
- 命令自动补全功能
- 智能错误处理和提示
## 常见问题
**Q: 如何让不同NPC显示不同的商店?**
A: 每个NPC可以绑定不同的商店,使用`/ns select <NPC ID>`选择不同的NPC,然后创建商店即可。
**Q: 如何删除商店?**
A: 目前需要删除NPC来删除商店,或直接编辑数据库文件。
**Q: 支持哪些版本的Minecraft?**
A: 目前插件支持Spigot/Paper 1.21.4及以上版本。
NpcShop是一个功能强大的Minecraft商店插件,提供与Citizens2插件联动的NPC商店功能。玩家可以与NPC互动打开商店GUI,购买管理员设置的商品。支持多种货币类型,界面美观,操作简单直观。
**版本要求**: Spigot/Paper 1.21.4+
## 主要特点








浏览附件94898浏览附件94899浏览附件94900
## 安装说明
1. 下载插件: [点击下载](插入下载链接)
2. 将NpcShop.jar放入服务器的plugins文件夹
3. 安装必要依赖:
- [SagaLib]
- [Citizens2]
- [Vault]
- [PlayerPoints]
4. 重启服务器
5. 配置插件,根据需要修改config.yml
## 使用方法
### 创建商店
1. 创建一个Citizens NPC
2. 选择该NPC: `/ns select <NPC ID>`
3. 创建商店: `/ns create <商店名称> [shop/gift]`
- shop: 普通商店,可添加单个物品销售
- gift: 礼包商店,可将多个物品打包销售
### 添加商品
**普通商店**:
1. 选择商店NPC: `/ns select <NPC ID>`
2. 手持要添加的物品
3. 添加商品: `/ns add <价格> <货币类型>`
- 货币类型: 1(Vault金币) 或 2(PlayerPoints点券)
**礼包商店**:
1. 选择商店NPC: `/ns select <NPC ID>`
2. 创建礼包: `/ns gift create <材质> <显示名称> <价格> <货币类型>`
3. 手持要添加的物品
4. 添加到礼包: `/ns gift add`
### 使用商店
玩家只需右键点击NPC即可打开商店界面:
- 在普通商店中点击商品直接购买
- 在礼包商店中可先查看礼包内容,确认后购买整个礼包
## 命令列表
YAML:
| 命令 | 描述 |
|------|------|
| `/ns select <NPC ID>` | 选择NPC |
| `/ns create <商店名称> [类型:shop/gift]` | 创建商店并绑定到选中的NPC |
| `/ns add <价格> <货币类型>` | 添加手持物品到商店 |
| `/ns remove <商品ID>` | 从商店移除指定商品 |
| `/ns edit <商品ID> <价格> <货币类型>` | 编辑商店中的商品 |
| `/ns info` | 查看选中NPC的商店信息 |
| `/ns style <样式>` | 设置商店样式 |
| `/ns gift create <材质> <显示名称> <价格> <货币类型>` | 创建礼包 |
| `/ns gift add` | 添加手持物品到礼包 |
| `/ns gift sel <礼包ID>` | 选择指定ID的礼包 |
| `/ns reload` | 重新加载插件配置 |
## 权限节点
YAML:
| 权限 | 描述 |
|------|------|
| `npcshop.admin` | 所有权限(包含下列所有权限) |
| `npcshop.create` | 允许创建NPC商店 |
| `npcshop.edit` | 允许编辑商店商品 |
| `npcshop.remove` | 允许移除商店商品 |
| `npcshop.reload` | 允许重载插件配置 |
| `npcshop.select` | 允许选择NPC |
| `npcshop.use` | 允许玩家使用NPC商店 |
## 配置文件
### config.yml 主要配置项
YAML:
# NpcShop 配置文件
# 基础配置
settings:
debug: false
save-interval: 300 # 自动保存间隔(秒)
error-handling:
detailed-errors: true # 是否显示详细错误信息
log-errors: true # 是否记录错误到日志
translation:
enabled: true # 是否启用物品名称翻译
always-translate: false # 是否总是翻译物品名称(即使有自定义名称)
cooldown:
enabled: true # 是否启用GUI点击冷却
time: 1000 # 点击冷却时间(毫秒)
message: false # 是否显示冷却提示消息
# 商店默认设置
default-shop:
rows: 4 # 商店界面行数
title-format: "{name}" # 标题格式
style: "default" # 默认样式
# 经济设置
economy:
default-currency: 1 # 默认货币类型 (1: Vault, 2: PlayerPoints)
currency-symbols:
1: "&6金币" # Vault
2: "&3点券" # PlayerPoints
# GUI设置
gui:
border-item: BLACK_STAINED_GLASS_PANE
prev-page-item: ARROW
next-page-item: ARROW
close-item: BARRIER
admin-only-item-id: true # 是否仅管理员可见物品ID
# 商店样式设置
shop-styles:
default:
border-item: BLACK_STAINED_GLASS_PANE
background-item: GRAY_STAINED_GLASS_PANE
button-color: WHITE
title-color: "&e"
dark:
border-item: BLACK_STAINED_GLASS_PANE
background-item: GRAY_STAINED_GLASS_PANE
button-color: GRAY
title-color: "&8"
light:
border-item: WHITE_STAINED_GLASS_PANE
background-item: LIGHT_GRAY_STAINED_GLASS_PANE
button-color: WHITE
title-color: "&f"
colorful:
border-item: CYAN_STAINED_GLASS_PANE
background-item: LIGHT_BLUE_STAINED_GLASS_PANE
button-color: PINK
title-color: "&d"
YAML:
# NpcShop 消息配置文件
prefix: "&7[&bNpcShop&7] "
messages:
# 通用消息
no-permission: "&c你没有权限执行此命令"
invalid-number: "&c无效的数字格式"
invalid-currency: "&c无效的货币类型,请使用 1(金币) 或 2(点券)"
invalid-price: "&c价格必须大于0"
invalid-material: "&c无效的物品材质: {0}"
invalid-shop-type: "&c无效的商店类型,请使用 shop 或 gift"
# 商店创建
create-usage: "&c用法: /ns create <商店名称> [类型:shop/gift]"
create-processing: "&a正在创建商店..."
shop-created: "&a成功创建商店 &f{0}"
shop-exists: "&c该NPC已经绑定了商店"
# NPC相关
select-usage: "&c用法: /ns select <NPC ID>"
npc-selected: "&a已选中NPC: &f{0}"
npc-not-found: "&c未找到ID为 {0} 的NPC"
no-npc-selected: "&c你没有选中任何NPC,请先使用 /ns select <NPC ID> 选择一个NPC"
citizens-required: "&cCitizens插件是必需的,但未找到"
# 商品管理
add-usage: "&c用法: /ns add <价格> <货币类型>"
add-processing: "&a正在添加商品..."
item-added: "&a成功添加商品,价格: &f{0} {1}"
no-item-in-hand: "&c你手中没有物品"
no-shop-selected: "&c你没有选择任何商店,请先创建或选择一个商店"
# 商品编辑
remove-usage: "&c用法: /ns remove <商品ID>"
edit-usage: "&c用法: /ns edit <商品ID> <价格> <货币类型>"
edit-success: "&a成功编辑商品,新价格: &f{0} {1}"
item-removed: "&a成功移除商品"
item-not-found: "&c未找到ID为 {0} 的商品"
# 商店操作
shop-opened: "&a已打开商店 &f{0}"
no-shop: "&c该NPC没有商店"
no-shop-found: "&c该NPC没有关联的商店"
reload-success: "&a成功重载配置"
# 商店样式
style-usage: "&c用法: /ns style <样式>"
style-success: "&a成功设置商店样式为 &f{0}"
style-not-found: "&c未找到样式 {0}"
# 商店信息
info-header: "&e====== &6商店信息 &e======"
info-name: "&a商店名称: &f{0}"
info-npc: "&aNPC ID: &f{0}"
info-items: "&a商品数量: &f{0}"
info-footer: "&e======================"
# 商品显示
lore-price: "&a价格: &f{0} {1}"
lore-item-id: "&7(商品ID: {0})"
lore-gift-id: "&7(礼包ID: &f{0}&7)"
lore-gift-item-id: "&7(物品ID: &f{0}&7)"
lore-empty-line: ""
# 购买相关
purchase-success: "&a购买成功,花费: &f{0} {1},剩余: &f{2} {3}"
purchase-failed: "&c购买失败,余额不足"
inventory-full: "&c你的背包已满"
purchase-confirm: "&a点击确认购买 &f{0} &a价格: &f{1} {2}"
# 冷却提示
cooldown: "&c请稍等片刻再进行操作"
# 礼包相关
gift-usage: "&c用法: /ns gift <create|add|sel>"
gift-create-usage: "&c用法: /ns gift create <礼包图标材质> <显示名称> <价格> <货币类型>"
gift-sel-usage: "&c用法: /ns gift sel <礼包ID>"
gift-created: "&a成功创建礼包 &f{0}"
gift-not-found: "&c未找到指定的礼包"
gift-add-processing: "&a正在添加物品到礼包..."
gift-item-added: "&a成功添加物品到礼包"
gift-item-removed: "&a成功从礼包中移除物品"
gift-item-not-found: "&c未找到指定ID的物品"
gift-purchase-success: "&a成功购买礼包 &f{0},花费: &f{1} {2}"
gift-selected: "&a已选择礼包: &f{0}"
no-gift-selected: "&c你没有选择任何礼包,请先选择或创建一个礼包"
gifts-loaded: "&a成功加载 &f{0} &a个礼包"
# 插件消息
plugin-enabled: "§a§lNpcShop §f插件已启动"
plugin-disabled: "§c§lNpcShop §f插件已关闭"
# 命令消息
command-usage: "&e用法: &f/ns <create|add|remove|edit|info|style|reload>"
command-reload: "&a配置文件已重新加载"
# 错误处理
error-shop-load: "&c加载商店时出错: {0}"
error-item-serialize: "&c序列化物品时出错"
error-item-deserialize: "&c反序列化物品时出错"
error-database: "&c数据库操作失败: {0}"
economy-not-found: "&c错误: 未找到经济系统,请安装Vault插件"
playerpoints-not-found: "&c错误: 未找到点券系统,请安装PlayerPoints插件"
citizens-not-found: "&c错误: 未找到Citizens插件,请安装Citizens插件"
wrong-shop-type: "&c该NPC绑定的是礼包商店,不能直接添加商品,请使用 /ns gift create 和 /ns gift add 命令"
not-gift-shop: "&c该NPC绑定的不是礼包商店,无法添加礼包物品"
# 购买消息
buy-success: "&a成功购买 &f{0}x{1}&a,花费: &f{2} {3}&a,余额: &f{4} {3}"
buy-failed-no-money: "&c购买失败,你没有足够的{0},需要: &f{1}&c,余额: &f{2}"
buy-failed-inventory-full: "&c购买失败,你的背包已满"
# GUI商品Lore
lore-click-buy: "&7点击购买"
lore-shift-left-click: "&7Shift+左键购买10个"
lore-shift-right-click: "&7Shift+右键购买一组({0}个)"
lore-amount: "&a数量: &f{0}"
lore-unit-price: "&a单价: &f{0} {1}"
# 物品翻译消息
translation-enabled: "&a已启用物品名称翻译"
translation-load-success: "&a成功加载 &f{0} &a个物品翻译"
translation-load-failed: "&c加载物品翻译文件失败"
# 冷却消息
cooldown-active: "&c操作过于频繁,请稍后再试!"
cooldown-remaining: "&c请等待 &f{0} &c秒后再操作"
# 商店相关消息
shop-created: "&a成功创建商店 &f{0}"
shop-exists: "&c该NPC已经绑定了商店"
citizens-required: "&cCitizens插件是必需的,但未找到"
# 商品管理
add-usage: "&c用法: /ns add <价格> <货币类型>"
add-processing: "&a正在添加商品..."
item-added: "&a成功添加商品,价格: &f{0} {1}"
invalid-number: "&c无效的数字格式"
invalid-currency: "&c无效的货币类型,请使用 1(金币) 或 2(点券)"
invalid-price: "&c价格必须大于0"
invalid-material: "&c无效的物品材质: {0}"
no-item-in-hand: "&c你手中没有物品"
no-shop-selected: "&c你没有选择任何商店,请先创建或选择一个商店"
# 商品管理
add-usage: "&c用法: /ns add <价格> <货币类型>"
add-processing: "&a正在添加商品..."
item-added: "&a成功添加商品,价格: &f{0} {1}"
invalid-number: "&c无效的数字格式"
invalid-currency: "&c无效的货币类型,请使用 1(金币) 或 2(点券)"
invalid-price: "&c价格必须大于0"
invalid-material: "&c无效的物品材质: {0}"
no-item-in-hand: "&c你手中没有物品"
no-shop-selected: "&c你没有选择任何商店,请先创建或选择一个商店"
# 商品管理
add-usage: "&c用法: /ns add <价格> <货币类型>"
add-processing: "&a正在添加商品..."
item-added: "&a成功添加商品,价格: &f{0} {1}"
invalid-number: "&c无效的数字格式"
invalid-currency: "&c无效的货币类型,请使用 1(金币) 或 2(点券)"
invalid-price: "&c价格必须大于0"
invalid-material: "&c无效的物品材质: {0}"
no-item-in-hand: "&c你手中没有物品"
no-shop-selected: "&c你没有选择任何商店,请先创建或选择一个商店"
### 商店样式
插件提供了多种预设商店样式,可以通过`/ns style <样式名称>`设置:
- default: 默认样式
- dark: 暗色主题
- light: 亮色主题
- colorful: 彩色主题
## 特色功能
1. **礼包商店系统**:
- 将多个物品打包为一个礼包
- 玩家可以查看礼包内容后决定是否购买
- 管理员可以轻松管理礼包内容
2. **商品管理功能**:
- 显示商品ID,方便管理员编辑和移除
- 右键删除礼包或礼包内物品
- 支持单价和总价显示
3. **操作优化**:
- 冷却系统防止误操作和刷单
- 物品名称自动翻译
- 命令自动补全功能
- 智能错误处理和提示
## 常见问题
**Q: 如何让不同NPC显示不同的商店?**
A: 每个NPC可以绑定不同的商店,使用`/ns select <NPC ID>`选择不同的NPC,然后创建商店即可。
**Q: 如何删除商店?**
A: 目前需要删除NPC来删除商店,或直接编辑数据库文件。
**Q: 支持哪些版本的Minecraft?**
A: 目前插件支持Spigot/Paper 1.21.4及以上版本。