- 版权类型
- 原创
- 插件中文名称
- 马库斯
- 插件英文名称
- Malkuth
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- PufferFish
- Leaves
- 其他核心
- 语言支持
- 多语言
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
[MD]# Malkuth — 全能商店系统
> 一个插件,覆盖服务器经济的所有场景。
Malkuth 是基于 TabooLib 6 构建的 Minecraft 商店系统插件,提供 **普通商店、限时商店、回收商店、玩家商店、拍卖行、全球市场** 六大模式,配合购物车、收藏夹、邮箱、搜索比价等完整的用户体验链路,为你的服务器打造一站式经济生态。
---
## 六大商店模式
### 普通商店
经典的 NPC / 命令商店,支持分页浏览、自定义布局、商品模板。
```yaml
mode: 'normal'
currency:
mode: vault
layout:
- '#########'
- ' ggggggg '
- ' ggggggg '
- ' ggggggg '
- ' ggggggg '
- 'P#######N'
```
### 限时商店
设定时间窗口,到期自动关闭。支持全局限购(所有玩家共享库存)和倒计时显示,适合节日活动、赛季奖励等场景。
### 回收商店
灵活的物品匹配规则(正则 / 包含 / 材质 / NBT / ModelData),支持动态价格计算和一键回收背包所有可回收物品。
### 玩家商店
玩家自主上架、下架、编辑商品(价格 / 名称 / 描述 / 材质 / CustomModelData)。离线卖家自动收款,支持白名单 / 黑名单控制可上架物品。
### 拍卖行
竞价系统,加价比例可配置,实时出价更新,支持搜索拍品和个人拍品管理。
### 全球市场 ⭐ NEW
跨服玩家自由交易平台,相同物品自动按价格排序,买家优先看到最便宜的商品。支持多维度词条筛选(品质/类型/等级等),实时显示近期交易平均价帮助玩家判断价格合理性。采用独创的"双层锁"架构(本地锁 + Redis 分布式锁),确保毫秒级并发安全,杜绝超卖和重复购买。
---
## 核心特性
### 全球市场 — 独创双层锁架构
Malkuth 的全球市场采用业界领先的并发安全设计,确保高并发场景下的数据一致性:
**技术亮点:**
- **双层锁机制**:本地 ReentrantLock(公平锁)+ Redis 分布式锁,处理单服和跨服并发
- **毫秒级响应**:100 个玩家同时购买同一商品(库存 1),只有 1 个成功,其余 99 个瞬间收到"已售罄"提示
- **双重检查**:获取锁后重新查询数据库,防止脏读和重复购买
- **自动降级**:Redis 异常时自动降级为本地锁,保证高可用性
- **死锁预防**:锁超时自动释放(5 秒),定期清理未使用的锁对象
**玩家体验:**
- 相同物品自动按价格从低到高排序,买家优先看到最便宜的商品
- 多维度词条筛选(品质/类型/等级等),快速定位目标商品
- 实时显示近期交易平均价(默认 24 小时),帮助判断价格合理性
- 支持白名单/黑名单控制可上架物品,防止垃圾商品泛滥
### 20+ 物品源兼容
通过 Arim 物品框架统一管理,无缝对接主流物品插件:
| 直接支持 | ItemBridge 扩展 |
|---|---|
| MythicMobs, Zaphkiel, ItemsAdder, NeigeItems, MMOItems, Oraxen, CraftEngine, DragonArmourers | SX-Item, Slimefun, HeadDatabase, ExecutableItems, AzureFlow, MagicGem, PxRpg, Ratziel, CustomFishing, Nexo, Nova, HMCCosmetics, Sertraline, Eco 全系列 |
切换物品插件无需改动商店配置,一行 `material` 搞定:
```yaml
display:
material: "mm: 强化宝石" # MythicMobs
# material: "ia: ruby_sword" # ItemsAdder
# material: "ni: 暗影之刃" # NeigeItems
```
### 灵活的货币系统
每个商店可独立配置货币类型,内置 Vault 和 PlayerPoints 支持。更强大的是,任意 PlaceholderAPI 变量都可以作为货币,通过 Kether 脚本定义扣除和给予逻辑:
```yaml
custom_points:
mode: "%custom_points%"
take: |-
command inline "points take {{ sender }} {{ &money }}" as console
give: |-
command inline "points give {{ sender }} {{ &money }}" as console
```
### 限购 & 动态定价
- 四种限购维度:每日 / 每周 / 永久 / 自定义时间窗口
- 个人限购 + 全局限购,支持 Kether 条件表达式(如 VIP 差异化额度)
- 供需公式驱动的动态定价,交易量自动影响价格,支持 min/max 约束
### 6 种物品给予模式
| 模式 | 说明 |
|---|---|
| `none` | 不给物品,仅执行脚本动作(纯服务类商品) |
| `source` | 从物品源获取原始物品 |
| `display` | 给予 UI 展示的物品(含所有 display 修改) |
| `ignore_lore` | 原始物品 + display 的 lore |
| `ignore_name` | 原始物品 + display 的 name |
| `attribute` | 给予属性加成(AttributePlus / SX-Attribute) |
---
## 用户体验
### 购物车
跨商品批量选购,同商品自动合并数量,一键结算。部分失败不影响其他商品。
### 收藏夹
右键商品快速收藏,收藏列表一键跳转源商店,数据库持久化存储。
### 搜索 & 比价
关键词搜索跨所有商店匹配商品名称和 lore。比价功能自动汇总同物品在不同商店的价格,按价格升序排列,点击结果直接跳转。
### 赠送系统
购买确认界面直接赠送给其他玩家,支持离线玩家(通过邮箱投递)。
### 邮箱系统
赠送物品、背包溢出、管理员发放、待领取货币,四种邮件类型。上线自动推送未读数量,支持逐件领取或一键全部领取。
### 交易历史
记录所有交易类型(购买 / 出售 / 回收 / 拍卖 / 赠送),个人模式和管理员模式,按时间倒序展示。
### 挂单系统
创建求购挂单(匹配规则 + 最高价 + 数量),系统自动撮合,支持查看和取消挂单。
---
## 脚本驱动
内置 Kether、JavaScript、Jexl 三种脚本引擎。价格公式、购买条件、购买后动作、商店开关条件均可通过脚本控制:
```yaml
# 购买条件
if: 'perm vip'
# 购买后动作
actions: |-
tell color inline "&7购买了 {{ &amount }} &f{{ &display-name }}"
tell inline "共消费 {{ &price }}"
# 商店开关条件
enable: 'check time < 1740672000000'
```
---
## 性能
- 缓存分层:本地 ConcurrentHashMap + 可选 Redis 跨服共享 + 数据库持久化
- 全异步 IO,主线程零阻塞
- 热重载:命令触发或文件监听自动重载,不影响在线玩家
---
## 开发者 API
提供完整的公开接口和事件系统,方便二次开发:
```kotlin
val api = MalkuthAPI.instance
// 打开商店
api.openShop(player, "my_shop")
// 注册自定义货币
api.registerCurrency("gems", myCurrency)
// 查询余额 / 限购 / 动态价格
api.getCurrencyBalance(player, "vault")
api.getRemainingPurchaseLimit(player, "shop", "goods_1")
api.getEffectivePrice("shop", "goods_1")
// 邮箱
api.sendMailItem(player, itemStack, "来自管理员的礼物")
```
事件:`PlayerOpenShopEvent` / `PlayerCloseShopEvent` / `PlayerPurchaseEvent` / `PlayerRecycleEvent` / `PlayerSellEvent` / `MalkuthReloadEvent`
---
## 为什么选择 Malkuth?
### 功能完整度 — 六大商店模式覆盖所有经济场景
大多数商店插件只提供基础的买卖功能,Malkuth 提供完整的经济生态:
- **普通商店**:经典 NPC 商店,支持自定义布局和模板
- **限时商店**:节日活动、赛季奖励的最佳选择
- **回收商店**:灵活的匹配规则,支持动态价格计算
- **玩家商店**:玩家自主上架、编辑、交易,离线自动收款
- **拍卖行**:竞价系统,实时出价更新
- **全球市场**:跨服交易平台,价格排序 + 词条筛选 + 近期均价 + 毫秒级并发安全
### 技术领先性 — 独创双层锁架构
**并发安全**是商店插件的核心痛点。Malkuth 采用独创的"双层锁"架构:
- **本地锁(ReentrantLock)**:处理单服务器内的毫秒级并发,公平锁机制确保先到先得
- **Redis 分布式锁**:处理跨服务器并发,支持多服务器集群部署
- **双重检查机制**:获取锁后重新查询数据库,确保数据最新状态
- **自动降级策略**:Redis 异常时自动降级为本地锁,保证高可用性
**实测数据**:100 个玩家同时购买同一商品(库存 1),只有 1 个成功,其余 99 个瞬间收到"已售罄"提示,零超卖。
### 配置灵活性 — YAML + Kether 脚本驱动
无需写代码,服主通过配置文件即可定制几乎所有行为:
- **价格公式**:支持动态定价,交易量自动影响价格
- **购买条件**:Kether 条件表达式,支持权限、变量、时间等复杂判断
- **购买动作**:执行命令、发送消息、给予属性等,完全自定义
- **货币系统**:任意 PlaceholderAPI 变量都可作为货币,通过 Kether 脚本定义扣除和给予逻辑
### 用户体验 — 完整的购物链路
不仅仅是"买"和"卖",Malkuth 提供完整的购物体验:
- **购物车**:跨商品批量选购,一键结算
- **收藏夹**:右键收藏常买商品,快速定位
- **搜索 & 比价**:关键词搜索 + 跨商店价格对比
- **赠送系统**:购买后直接赠送给其他玩家(支持离线)
- **邮箱系统**:离线交易、背包溢出、管理员发放,四种邮件类型
- **交易历史**:记录所有交易,个人/管理员双视图
- **挂单系统**:创建求购挂单,系统自动撮合
### 性能优化 — 主线程零阻塞
- **缓存分层**:本地 ConcurrentHashMap + 可选 Redis 跨服共享 + 数据库持久化
- **全异步 IO**:所有数据库读写在异步线程执行,主线程零阻塞
- **热重载**:命令触发或文件监听自动重载,不影响在线玩家
- **UI 构建缓存**:商品展示 ItemStack 缓存,避免重复构建
### 开发者友好 — 完整的 API 和事件系统
提供 30+ 公开接口和 14 个事件(Pre/Post 双事件模式),方便二次开发:
- 打开商店、注册自定义货币、查询余额/限购/动态价格
- 邮箱系统、购物车、收藏夹等功能的 API 接口
- 生命周期事件(打开/关闭商店、重载)+ 交易行为事件(购买/出售/回收/拍卖/赠送)
---
## 环境要求
| 项目 | 要求 |
|---|---|
| 服务端 | Bukkit / Spigot / Paper 1.12+ |
| Java | 8+ |
| 必需依赖 | 无 |
| 可选依赖 | Vault, PlayerPoints, PlaceholderAPI, 各物品源插件 |
| 数据库 | SQLite(默认) / MySQL |
| 缓存 | 本地(默认) / Redis |
---
## 快速开始
1. 将 `Malkuth.jar` 放入 `plugins/` 目录
2. 启动服务器,插件自动生成默认配置和示例商店
3. 使用 `/malkuth reload` 热重载配置
4. 使用 `/malshop open <商店ID>` 打开商店
---
## 购买 & 售后
- 售价:**100R**
- 联系作者 QQ:**1747484670**
- 售后支持:可根据用户需求更新功能
---
## 链接
- 文档:[plugin.hhhhhy.kim/docs/malkuth](https://plugin.hhhhhy.kim/docs/malkuth)
- 购买咨询 / 问题反馈:QQ 1747484670
[/MD]