跳到主要内容

配置文件说明

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 则使用 SQLitefalse
database.host数据库地址localhost
database.port数据库端口3306
database.user数据库用户名root
database.password数据库密码your_password
database.database数据库名malkuth
database.prefix表名前缀malkuth
redis.enable启用 Redis 缓存(跨服同步)false
redis.hostRedis 地址127.0.0.1
redis.portRedis 端口6379
redis.passwordRedis 密码(可选)
redis.userRedis 用户名(可选)
file.enable_listen自动监听 goods/shop/recycle/ui/currency.ymlautosell_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单次匹配动作允许输出的最大日志行数;至少为 130
cart.max-capacity购物车最大商品种类数50
trade.max-purchase-amount玩家输入购买数量、购物车合并数量和发货数量的安全上限,避免超大数量导致溢出999999
lock.redis_fail_openRedis 分布式锁异常时是否放行交易;默认 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_nameAssiah 后端发件人名称&6Malkuth 商店
mailbox.assiah.expire_timeAssiah 后端邮件过期时间(毫秒,0=永不过期)604800000
mailbox.assiah.fallbackAssiah 不可用时自动降级到内置邮箱true
邮箱后端边界

mailbox.backend: assiah 时,赠送、补偿等常规邮件会写入 Assiah;拍卖流拍/中标、全球市场到期退回、全球求购供货退回/成交投递等幂等邮件仍固定走 Malkuth 内置邮箱,以避免跨服或重试时重复发放。

调试日志只建议短时开启

debug.enabled: truedebug.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.5malkuth.autosell.limit.
currency.mode售卖收益与升级扣费使用的货币模式,可填 vaultplayerpointscurrency.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该等级的售卖间隔,支持 mssmh60s / 30s
types.<类型>.levels.<等级>.multiplier该等级的收益倍率1.0 / 1.25
types.<类型>.levels.<等级>.upgrade-cost升到该等级需要扣除的货币;一级通常为 00 / 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-materialsBIND_EXISTING 模式允许直接绑定的方块材质列表CHEST, BARREL
player-shop-block.place-above.base-materialsPLACE_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 方块 IDCHEST
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~206
player-shop-block.hologram.max-line-length玩家自定义单行最大字符数,源码限制在 8~20080
player-shop-block.stall-entity.enabled是否启用摆摊实体系统false
player-shop-block.stall-entity.type实体类型;当前已实现 ARMOR_STANDNPC 仍会跳过生成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_FACEOWNER_FACINGBLOCK_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.ymlautosell_chest.ymlshop/goods/ui/recycle/ 与语言文件,并重新建立玩家商店方块绑定缓存。同时它还会重置缓存服务与邮箱后端、清空随机商品结果/购物车/回收统计缓存、刷新商店占位符缓存、关闭所有在线玩家当前打开的商店界面,并广播一次跨服缓存失效通知。

语言文件

语言文件位于 plugins/Malkuth/lang/ 目录(默认包含 zh_CN.ymlen_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全局消息前缀