配置文件说明
config.yml
主配置文件,位于 plugins/Malkuth/config.yml,用于配置数据库、Redis、文件监听、交易安全、邮箱后端和玩家商店方块等全局行为。
# 连接配置
database:
# 是否启用数据库,否则 sqlite
enable: false
# 地址
host: localhost
# 端口
port: 3306
# 用户名
user: root
# 密码
password: "your_password"
# 数据库
database: "malkuth"
# 表名前缀
prefix: "malkuth"
# 使用 Redis 缓存可高效同步跨服数据,避免数据库卡顿
redis:
enable: false
host: 127.0.0.1
port: 6379
# password:
# user
file:
enable_listen: true
# 物品溢出配置
# 当玩家背包满时,购买、下架、上架回滚等操作产生的物品如何处理
item-overflow:
# 是否将溢出物品掉落在玩家脚下;关闭时已接入兜底的路径会写入邮箱
drop_on_ground: true
# 掉落的物品是否标记归属(仅该玩家可拾取,需服务端支持)
drop_item_owner: false
# 调试日志配置
# matcher-detail 会输出大量匹配细节,仅建议短时排查时开启
debug:
enabled: false
matcher-detail: false
matcher-summary: true
max-lines-per-action: 30
# 购物车配置
cart:
max-capacity: 50
# 交易安全配置
trade:
max-purchase-amount: 999999
# 分布式锁安全配置
lock:
redis_fail_open: false
# 通知配置
notification:
enabled: true
max-queue-per-player: 100
mailbox:
backend: internal
cleanup-days: 7
assiah:
sender_name: '&6Malkuth 商店'
expire_time: 604800000
fallback: true
配置项说明
| 配置项 | 说明 | 默认值 |
|---|---|---|
database.enable | 启用 MySQL,false 则使用 SQLite | false |
database.host | 数据库地址 | localhost |
database.port | 数据库端口 | 3306 |
database.user | 数据库用户名 | root |
database.password | 数据库密码 | your_password |
database.database | 数据库名 | malkuth |
database.prefix | 表名前缀 | malkuth |
redis.enable | 启用 Redis 缓存(跨服同步) | false |
redis.host | Redis 地址 | 127.0.0.1 |
redis.port | Redis 端口 | 6379 |
redis.password | Redis 密码(可选) | 空 |
redis.user | Redis 用户名(可选) | 空 |
file.enable_listen | 自动监听 goods/、shop/、recycle/、ui/、currency.yml 与 autosell_chest.yml 的变更 | true |
item-overflow.drop_on_ground | 背包满时溢出物品是否掉落在地;关闭时已接入兜底的路径会写入邮箱 | true |
item-overflow.drop_item_owner | 掉落的溢出物品是否标记归属(仅该玩家可拾取,需服务端支持) | false |
debug.enabled | 是否启用调试日志总开关 | false |
debug.matcher-detail | 是否输出逐条 matcher 细节;会显著增加日志量 | false |
debug.matcher-summary | 是否输出每次匹配动作的摘要日志 | true |
debug.max-lines-per-action | 单次匹配动作允许输出的最大日志行数;至少为 1 | 30 |
cart.max-capacity | 购物车最大商品种类数 | 50 |
trade.max-purchase-amount | 玩家输入购买数量、购物车合并数量和发货数量的安全上限,避免超大数量导致溢出 | 999999 |
lock.redis_fail_open | Redis 分布式锁异常时是否放行交易;默认 false 为 fail-close,跨服环境不建议开启 | false |
notification.enabled | 启用通知系统(拍卖成交、邮箱到达等) | true |
notification.max-queue-per-player | 每个离线玩家的待投递通知队列上限 | 100 |
mailbox.backend | 邮箱后端:internal(内置)或 assiah(对接 Assiah 插件) | internal |
mailbox.cleanup-days | 已领取邮件自动清理天数(每小时执行一次) | 7 |
mailbox.assiah.sender_name | Assiah 后端发件人名称 | &6Malkuth 商店 |
mailbox.assiah.expire_time | Assiah 后端邮件过期时间(毫秒,0=永不过期) | 604800000 |
mailbox.assiah.fallback | Assiah 不可用时自动降级到内置邮箱 | true |
当 mailbox.backend: assiah 时,赠送、补偿等常规邮件会写入 Assiah;拍卖流拍/中标、全球市场到期退回、全球求购供货退回/成交投递等幂等邮件仍固定走 Malkuth 内置邮箱,以避免跨服或重试时重复发放。
当 debug.enabled: true 且 debug.matcher-detail: true 时,回收、上传限制和物品匹配链路会输出大量明细日志。它适合排查某一件物品为什么被拒绝或匹配到了哪条规则,不适合作为长期常驻监控;排查完成后建议立即关闭。
autosell_chest.yml
自动售卖箱独立配置位于 plugins/Malkuth/autosell_chest.yml。默认关闭,开启后玩家可以放置带有 malkuth_autosell_type 标记的售卖箱物品,系统会按间隔扫描箱内物品,并复用 recycle/*.yml 的货币奖励规则估价后发放收益。
enabled: false
tick-interval: 20
hologram-update-interval: 20
unload-chunk-behavior: pause
limits:
default: 1
permission-prefix: 'malkuth.autosell.limit.'
currency:
mode: vault
types:
basic:
display: '&a自动售卖箱'
block: chest
item:
material: chest
name: '&a自动售卖箱'
lore:
- '&7放置后会周期自动出售箱内物品'
- '&7右键打开升级界面'
price-source:
mode: recycle_shop
shop: default_recycle
input:
hopper: true
manual: true
hopper-output: false
merge:
allow-double-chest: false
require-same-owner: true
require-same-type: true
require-same-level: true
large-chest-upgrade-cost-multiplier: 2.0
hologram:
enabled: true
lines:
- '&a自动售卖箱 &7Lv.{level}'
- '&7下次售卖: &f{remaining}'
- '&7倍率: &e{multiplier}x'
levels:
'1':
interval: 60s
multiplier: 1.0
upgrade-cost: 0
max-items-per-run: 64
'2':
interval: 30s
multiplier: 1.25
upgrade-cost: 5000
max-items-per-run: 128
| 配置项 | 说明 | 默认值 |
|---|---|---|
enabled | 自动售卖箱总开关;关闭时放置会被拦截,定时售卖任务不会启动 | false |
tick-interval | 主检查间隔,单位 tick;只有到期箱子才会扫描库存 | 20 |
hologram-update-interval | 全息刷新预留配置,当前售卖箱不会生成全息实体 | 20 |
unload-chunk-behavior | 区块未加载时的处理策略;pause 会延后下次售卖,simulate 当前仍是预留 | pause |
limits.default | 玩家无额外权限时可放置的数量 | 1 |
limits.permission-prefix | 数量上限权限前缀,例如 malkuth.autosell.limit.5 | malkuth.autosell.limit. |
currency.mode | 售卖收益与升级扣费使用的货币模式,可填 vault、playerpoints 或 currency.yml 自定义货币键 | vault |
types.<类型>.display | 类型显示名,用于提示和升级界面 | &a自动售卖箱 |
types.<类型>.block | 放置后允许绑定的方块材质 | chest |
types.<类型>.item | /malkuth autosell give 发放给玩家的物品外观 | 见默认配置 |
types.<类型>.price-source | 价格来源配置;当前实现会复用 recycle/*.yml 中的货币奖励规则估价 | recycle_shop / default_recycle |
types.<类型>.input.hopper | 是否允许漏斗向箱子输入物品 | true |
types.<类型>.input.manual | 是否允许玩家手动放入物品;当前仍保留普通箱子交互 | true |
types.<类型>.input.hopper-output | 是否允许漏斗从售卖箱抽出物品 | false |
types.<类型>.merge.allow-double-chest | 是否允许和相邻售卖箱形成大箱子 | false |
types.<类型>.hologram | 售卖箱全息文本预留配置,当前不会生成全息实体 | 见默认配置 |
types.<类型>.levels.<等级>.interval | 该等级的售卖间隔,支持 ms、s、m、h | 60s / 30s |
types.<类型>.levels.<等级>.multiplier | 该等级的收益倍率 | 1.0 / 1.25 |
types.<类型>.levels.<等级>.upgrade-cost | 升到该等级需要扣除的货币;一级通常为 0 | 0 / 5000 |
types.<类型>.levels.<等级>.max-items-per-run | 单次最多售卖物品数量 | 64 / 128 |
当前自动售卖箱只结算能被回收规则命中且包含货币奖励的物品。它不会发放回收规则中的物品奖励或 Kether 奖励;收益会按售卖箱等级倍率、单次数量上限和配置货币发放给箱主。
玩家商店方块
config.yml 还包含一组玩家商店方块绑定配置,控制 /malkuth place 的目标方块、生成模式与保护行为。
player-shop-block:
enabled: true
target-distance: 5
# BIND_EXISTING: 绑定玩家当前指向方块
# PLACE_ABOVE: 在玩家指向方块上方生成方块并绑定
mode: BIND_EXISTING
bind-existing:
allowed-materials:
- CHEST
- BARREL
place-above:
base-materials:
- STONE
- COBBLESTONE
require-air-above: true
generated-material: CHEST
generated-block: CHEST
hologram:
enabled: true
default-enabled: true
default-lines:
- '&6{owner} 的商店'
- '&f商品数量: &a{goods_count}'
- '&7右键点击打开'
height: 1.2
min-height: 0.0
max-height: 5.0
line-spacing: 0.25
min-line-spacing: 0.1
max-line-spacing: 1.0
refresh-interval-ticks: 200
cleanup-radius: 1.5
max-lines: 6
max-line-length: 80
stall-entity:
enabled: false
type: ARMOR_STAND
click-to-open: true
name-display: '&6{owner} 的摊位'
name-visible: true
gravity: false
cleanup-radius: 2.0
default-model:
helmet: PLAYER_HEAD
chestplate: ''
leggings: ''
boots: ''
main-hand: ''
off-hand: ''
use-owner-head: true
small: false
invisible: false
arms: true
display: '&a默认形象'
icon: PLAYER_HEAD
models:
merchant:
permission: 'malkuth.stall.merchant'
display: '&6商人形象'
icon: EMERALD
equipment:
helmet: PLAYER_HEAD
chestplate: 'LEATHER_CHESTPLATE:#8B4513'
leggings: 'LEATHER_LEGGINGS:#5C4033'
boots: 'LEATHER_BOOTS:#2F1B0C'
use-owner-head: true
small: false
invisible: false
arms: true
offset:
x: 0.5
y: 0.0
z: 0.5
facing: BLOCK_FACE
protection:
disable-vanilla-interact: true
deny-break-by-others: true
| 配置项 | 说明 | 默认值 |
|---|---|---|
player-shop-block.enabled | 总开关,关闭后 /malkuth place 与绑定方块交互都会失效 | true |
player-shop-block.target-distance | 玩家视线检测距离;源码会把该值限制在 1~32 之间 | 5 |
player-shop-block.mode | 绑定模式:BIND_EXISTING 绑定现有方块,PLACE_ABOVE 在目标方块上方生成并绑定 | BIND_EXISTING |
player-shop-block.bind-existing.allowed-materials | BIND_EXISTING 模式允许直接绑定的方块材质列表 | CHEST, BARREL |
player-shop-block.place-above.base-materials | PLACE_ABOVE 模式允许作为底座的方块材质列表 | STONE, COBBLESTONE |
player-shop-block.place-above.require-air-above | 生成模式下是否要求目标方块上方必须为空气 | true |
player-shop-block.place-above.generated-material | 生成模式下实际放置并绑定的方块材质 | CHEST |
player-shop-block.place-above.generated-block | 生成模式下的方块来源,支持原版方块或 CraftEngine 方块 ID | CHEST |
player-shop-block.hologram.enabled | 是否启用玩家商店方块全息显示 | true |
player-shop-block.hologram.default-enabled | 新绑定商店方块时是否默认显示全息 | true |
player-shop-block.hologram.default-lines | 默认全息文本,支持 {owner}、{shop_id}、{shop_title}、{goods_count}、坐标等变量 | 见默认配置 |
player-shop-block.hologram.height | 全息第一行相对方块顶部的高度 | 1.2 |
player-shop-block.hologram.min-height / max-height | 玩家命令可设置的全息高度范围,源码会自动夹紧到范围内 | 0.0 / 5.0 |
player-shop-block.hologram.line-spacing | 多行全息的行间距 | 0.25 |
player-shop-block.hologram.min-line-spacing / max-line-spacing | 玩家命令可设置的行距范围 | 0.1 / 1.0 |
player-shop-block.hologram.refresh-interval-ticks | 动态占位符刷新间隔,源码最低按 20 tick 处理 | 200 |
player-shop-block.hologram.cleanup-radius | 重载或刷新时清理残留全息实体的水平扫描半径 | 1.5 |
player-shop-block.hologram.max-lines | 玩家自定义全息最多行数,源码限制在 1~20 | 6 |
player-shop-block.hologram.max-line-length | 玩家自定义单行最大字符数,源码限制在 8~200 | 80 |
player-shop-block.stall-entity.enabled | 是否启用摆摊实体系统 | false |
player-shop-block.stall-entity.type | 实体类型;当前已实现 ARMOR_STAND,NPC 仍会跳过生成 | ARMOR_STAND |
player-shop-block.stall-entity.click-to-open | 右键摆摊实体是否打开对应玩家商店 | true |
player-shop-block.stall-entity.name-display | 摆摊实体显示名,支持店主、商店、商品数量和坐标变量 | &6{owner} 的摊位 |
player-shop-block.stall-entity.name-visible | 是否显示摆摊实体名称;name-display 为空时不会显示 | true |
player-shop-block.stall-entity.gravity | 盔甲架实体是否启用重力,建议保持关闭避免模型掉落 | false |
player-shop-block.stall-entity.cleanup-radius | 清理残留摆摊实体时的扫描半径 | 2.0 |
player-shop-block.stall-entity.default-model | 默认盔甲架装备与外观;PLAYER_HEAD 可配合 use-owner-head 显示店主头颅 | 见默认配置 |
player-shop-block.stall-entity.models | 可选模型列表,可用 permission 控制玩家能否选择 | 见默认配置 |
player-shop-block.stall-entity.offset | 实体生成偏移,相对于绑定方块坐标 | 0.5, 0.0, 0.5 |
player-shop-block.stall-entity.facing | 实体朝向:BLOCK_FACE 或 OWNER_FACING | BLOCK_FACE |
player-shop-block.protection.disable-vanilla-interact | 右键已绑定方块打开商店后,是否取消原版交互(如箱子/木桶界面) | true |
player-shop-block.protection.deny-break-by-others | 是否阻止非店主破坏已绑定方块 | true |
如果你只有一个服务器且不需要 MySQL,可以将 database.enable 设为 false,插件会自动使用 SQLite 存储数据,无需额外配置数据库。
如果你使用 BungeeCord 或 Velocity 群组服,需要同时启用 MySQL 和 Redis。所有子服连接同一个数据库和 Redis 实例,即可实现商城数据跨服同步。
/malkuth reload 会重载主配置(含 player-shop-block.* 与 debug.*)、currency.yml、autosell_chest.yml、shop/、goods/、ui/、recycle/ 与语言文件,并重新建立玩家商店方块绑定缓存。同时它还会重置缓存服务与邮箱后端、清空随机商品结果/购物车/回收统计缓存、刷新商店占位符缓存、关闭所有在线玩家当前打开的商店界面,并广播一次跨服缓存失效通知。
语言文件
语言文件位于 plugins/Malkuth/lang/ 目录(默认包含 zh_CN.yml 与 en_US.yml),你可以自定义插件中所有提示消息的文本。
格式说明
- 支持
&颜色代码(如&a绿色、&c红色、&e黄色) - 使用
{0}、{1}、{2}等位置变量替换动态内容
消息分类
语言文件中的消息按功能模块分类:
| 分类 | 说明 |
|---|---|
auction-* | 拍卖行相关消息(竞拍成功/失败、余额不足等) |
player-shop-* | 玩家商店消息(购买成功、售罄等) |
shopblock-* / shopblock_hologram-* / shopblock_stall-* | 玩家商店方块、全息显示和摆摊实体消息 |
global-market-* | 全球市场相关消息(筛选、排序、搜索、购买/下架等) |
global-request-* | 全球求购相关消息(创建、供货、审核、取消、过期、通知与 UI 输入) |
upload-* | 上架相关消息(上架成功、黑白名单拦截等) |
edit-* | 编辑商品消息 |
recycle-* | 回收系统消息(回收成功、无可回收物品等) |
order-* | 挂单相关消息 |
buy-* | 购买相关消息(无权限、限购等) |
mailbox-* | 邮箱消息(登录提醒、领取成功等) |
favorite-* | 收藏夹消息 |
cart-* | 购物车消息(加入、移除、结算等) |
gift-* | 赠送消息(输入玩家名、赠送成功等) |
pricecompare-* | 比价搜索消息 |
ui-* | 聊天输入与界面交互提示(搜索/数量输入等) |
item-source-* | 物品源挂钩与解析错误提示 |
matcher-* | 物品匹配拒绝原因提示(source / nbt / locked) |
limit-* | 新限购系统提示(商店级/商品级数量与金额限制) |
command-tax-* | 税收报表命令输出 |
command-extract-* | 默认资源释放命令输出 |
autosell-* | 自动售卖箱发放、放置、升级、售卖和管理提示 |
config-* | 配置加载与热重载提示(goods/shop/ui/currency/recycle) |
cross-server-* | 跨服同步提示 |
schedule-* | 定时任务提示 |
command-* | 命令执行提示(重载、调试、同步等) |
system-* | 系统级提示(权限不足、商店不可用等) |
serializer-* | 配置序列化错误与校验提示 |
banner-* | 启动横幅文本 |
prefix | 全局消息前缀 |