• 「7周年限定勋章」正式上线!4/5/6周年的纪念勋章也限时返场了噢~【点我去看看】
NpcShop - 全功能NPC 商店/礼包 系统

原创 开源 经济 NpcShop - 全功能NPC 商店/礼包 系统 1.0.2.1

版权类型
原创
插件中文名称
全功能NPC 商店/礼包 系统
插件英文名称
NpcShop
原帖地址
#
支持的核心(服务端)
  1. Spigot
适配版本(Java)
  1. 1.21
## 简介

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即可打开商店界面:
- 在普通商店中点击商品直接购买
- 在礼包商店中可先查看礼包内容,确认后购买整个礼包

## 命令列表
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及以上版本。
作者
linghun91
价格
35金粒
下载
9
查看
354
首次发布
最后更新

评分

0.00 星 0 次评分

linghun91 的其他资源

最新更新

  1. 1.0.2.1 优化 管理员编辑 礼包商店GUI

    1.0.2.1 优化 管理员编辑 礼包商店GUI
后退
顶部 底部