配置说明
LySell 的默认配置文件为 plugins/LySell/config.yml。修改配置后,使用 /lsell reload 重载配置。
配置文件
| 文件 | 用途 |
|---|---|
config.yml | 出售界面、物品筛选、收益类型、快捷按钮和预设售价 |
配置加载规则
重载配置时,插件会重新读取以下内容:
prohibit-sell-lore禁止出售描述关键词。economy收益类型。extra-button底部快捷按钮。sell-preset预设售价。
额外按钮编号只接受 0 到 8。超出范围或无法转换为数字的节点不会被加载。
基础配置
| 配置项 | 类型 | 说明 |
|---|---|---|
clear-item-button | 布尔值 | 是否允许对出售按钮使用 Shift + 右键清空界面内的物品。默认值为 false。 |
prohibit-sell-lore | 字符串列表 | 物品描述中只要有任意一行包含列表中的任意关键词,该物品就不会被统计或出售。 |
关键词使用包含匹配,不要求完整匹配整行描述。配置中的 & 颜色代码会转换为游戏内颜色代码后再匹配。
yaml
# 是否开启 Shift + 右键出售按钮清空物品
clear-item-button: false
# 包含以下关键词的物品禁止被统计和出售
prohibit-sell-lore:
- '已绑定'警告
开启 clear-item-button 后,对出售按钮使用 Shift + 右键会直接清空出售界面内的物品,并发送“清空成功!”提示。此操作不会先出售物品。
出售界面
配置节点:gui
出售界面为 54 格箱子界面:
0到35:物品放置区域。36到44:界面填充区域,40格为出售按钮。45到53:额外按钮区域,对应按钮编号0到8。
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.title | 字符串 | 出售界面标题。 |
gui.fill-item | 字符串 | 填充界面空白位置的物品 ID。支持数字 ID、数字 ID 加子 ID,以及英文物品 ID。 |
gui.fill-name | 字符串 | 填充物品名称。 |
gui.button-item | 字符串 | 出售按钮物品 ID。 |
gui.button-name | 字符串 | 出售按钮名称。 |
gui.button-lore | 字符串列表 | 出售按钮的基础描述。插件会在基础描述后追加当前界面内的收益统计。 |
界面中的收益统计每秒刷新一次。统计时会检查出售区域内的物品,并将符合条件的各收益类型汇总到出售按钮描述中。
物品 ID 可以使用以下形式:
160:0:数字 ID 和子 ID。BOOK:英文物品 ID。BOOK:0:英文物品 ID 和子 ID。
yaml
gui:
title: '&6出售物品界面'
fill-item: '160:0'
fill-name: '&7封锁'
button-item: '355:0'
button-name: '&6点击出售'
button-lore:
- ''
- '&7售价统计刷新间隔1秒.'
- '&7本次出售可获得:'
- ''点击出售按钮后,符合出售条件的物品会从界面中移除,并按照 economy 配置发放收益。关闭界面时,出售区域内尚未出售的物品会返还到玩家背包。
额外按钮
配置节点:extra-button
额外按钮显示在界面底部的 45 到 53 格。配置编号与界面槽位的对应关系如下:
| 配置编号 | 界面槽位 |
|---|---|
0 | 45 |
1 | 46 |
2 | 47 |
3 | 48 |
4 | 49 |
5 | 50 |
6 | 51 |
7 | 52 |
8 | 53 |
每个按钮包含以下配置项:
| 配置项 | 类型 | 说明 |
|---|---|---|
extra-button.<编号>.type | 字符串 | 按钮操作类型。 |
extra-button.<编号>.item | 字符串 | 按钮显示物品 ID。 |
extra-button.<编号>.name | 字符串 | 按钮名称。 |
extra-button.<编号>.lore | 字符串列表 | 按钮描述。可以省略,省略时使用空描述。 |
type 操作类型
| 类型 | 说明 |
|---|---|
get | 将出售界面内的全部物品取回玩家背包。背包空间不足时会停止取回。 |
put:not-lore | 将玩家背包中没有物品元数据的物品放入出售界面。 |
put:<关键词> | 将玩家背包中任意一行描述包含指定关键词的物品放入出售界面。 |
putid:<物品列表> | 按物品 ID 和子 ID 将匹配的物品放入出售界面。 |
putid 的物品列表使用英文逗号分隔,每个物品使用 物品ID:子ID 表示。省略子 ID 时,子 ID 按 0 处理。
例如:
yaml
extra-button:
0:
type: 'put:&7品质: &a一般'
item: '160:5'
name: '&7一键放入&a一般&7品质的装备'
lore:
- '[点我]'
1:
type: 'put:&7品质: &b优秀'
item: '160:6'
name: '&7一键放入&b优秀&7品质的装备'
lore: []
2:
type: 'putid:1,2,3,4:0,5:0'
item: '160:8'
name: '&7一键放入&b原版&7品质的装备'
lore: []
8:
type: 'get'
item: '160:7'
name: '&7一键取回全部装备'
lore: []put:<关键词> 会直接检查物品描述中的原始文本,配置颜色代码时应按实际描述文本填写。按钮点击后有 1 秒操作冷却,冷却期间再次点击会提示“请1秒后再尝试!”。
收益类型
配置节点:economy.<收益类型>。
economy 下的每个一级节点代表一种收益类型,例如 金币、点券 或自定义名称。收益类型名称会用于收益统计、发放消息和控制台日志。
| 配置项 | 类型 | 说明 |
|---|---|---|
economy.<收益类型>.key | 字符串列表 | 正则表达式列表。插件会逐行检查物品描述,并从匹配结果中读取数字作为基础售价。 |
economy.<收益类型>.formula | 字符串 | 基于 {value} 计算最终收益的算式。支持 +、-、*、/ 和括号。 |
economy.<收益类型>.round | 字符串 | Java 数字格式化字符串,用于最终收益显示和发放。例如 %.2f 保留两位小数,%.0f 取整。 |
economy.<收益类型>.format | 字符串 | 出售按钮中显示该收益类型统计结果的文本。使用 {value} 插入格式化后的收益。 |
economy.<收益类型>.give-from | 字符串 | 收益发放方式。支持 Vault、PlayerPoints 或控制台指令。 |
economy.<收益类型>.message | 字符串 | 出售成功后发送给玩家的消息。使用 {value} 插入实际发放数量。 |
key 正则匹配
插件会遍历物品描述的每一行,并使用 key 中的正则表达式查找匹配内容。匹配到的文本必须能够转换为数字,否则该售价配置无法正常计算。
颜色代码会在正则匹配前过滤,因此正则表达式不需要匹配描述中的 § 颜色代码。
同一件物品的数量会参与计算。基础值计算方式为:
text
匹配到的数字 × 物品数量formula 计算
formula 中的 {value} 会替换为上一步得到的数值,然后进行四则运算。支持:
- 加法:
+ - 减法:
- - 乘法:
* - 除法:
/ - 分组:
(和)
例如:
yaml
formula: '{value}*1.5'round 格式化
round 同时影响出售按钮中的统计文本、玩家收到的消息以及实际发放数值。
| 配置值 | 效果 |
|---|---|
%.2f | 保留两位小数。 |
%.0f | 格式化为整数。 |
give-from 发放方式
| 配置值 | 说明 | 需要的插件 |
|---|---|---|
Vault | 通过 Vault 经济接口给玩家发放经济。 | Vault 以及已注册的经济服务。 |
PlayerPoints | 通过 PlayerPoints API 给玩家发放点券,最终数值会按整数发放。 | PlayerPoints。 |
| 控制台指令 | 以控制台身份执行配置中的指令。 | PlaceholderAPI 用于处理占位符。 |
使用控制台指令时,可以在指令中使用:
{value}:替换为经过round格式化后的收益。- PlaceholderAPI 占位符:会先替换为当前玩家对应的值。
例如:
yaml
give-from: 'lshop give %player_name% nb {value}'使用 Vault 时,服务器必须存在可用的 Vault 经济服务。使用 PlayerPoints 时,服务器必须启用 PlayerPoints。否则对应收益发放方式无法正常工作。
收益配置示例
yaml
economy:
金币:
key:
- '(?<=出售可获得)[0-9]*(?=金币)'
formula: '{value}*1'
round: '%.2f'
format: '&e{value}金币'
give-from: 'Vault'
message: '&7本次出售物品, 获得了&e{value}金币!'
点券:
key:
- '(?<=出售可获得)[0-9]*(?=点券)'
formula: '{value}*1'
round: '%.0f'
format: '&b{value}点券'
give-from: 'PlayerPoints'
message: '&7本次出售物品, 获得了&b{value}点券!'
其他:
key:
- '(?<=出售可获得)[0-9]*(?=牛币)'
formula: '{value}*1'
round: '%.0f'
format: '&d{value}牛币'
give-from: 'lshop give %player_name% nb {value}'
message: '&7本次出售物品, 获得了&d{value}牛币!'预设售价
配置节点:sell-preset.<物品 ID>。
sell-preset 用于给没有物品描述的物品配置固定售价。一个物品可以同时配置多种收益类型。
| 配置项 | 类型 | 说明 |
|---|---|---|
sell-preset.<物品 ID>.<收益类型> | 数字 | 该物品每个单位对应的收益数量。收益类型名称必须与 economy 下的节点名称一致。 |
物品 ID 支持以下形式:
数字ID:子ID,例如16000:0。英文物品ID:子ID,例如BOOK:0。
配置键必须使用引号包裹,避免 YAML 将物品 ID 解析为其他类型。
yaml
sell-preset:
'16000:0':
金币: 1预设售价按物品类型和子 ID 匹配。带有物品元数据的物品不会使用预设售价;带有描述的物品则按照 economy.<收益类型>.key 进行匹配。包含 prohibit-sell-lore 关键词的物品不会参与界面统计和出售。
完整配置示例
yaml
clear-item-button: false
prohibit-sell-lore:
- '已绑定'
gui:
title: '&6出售物品界面'
fill-item: '160:0'
fill-name: '&7封锁'
button-item: '355:0'
button-name: '&6点击出售'
button-lore:
- ''
- '&7售价统计刷新间隔1秒.'
- '&7本次出售可获得:'
- ''
extra-button:
0:
type: 'put:&7品质: &a一般'
item: '160:5'
name: '&7一键放入&a一般&7品质的装备'
lore:
- '[点我]'
1:
type: 'put:&7品质: &b优秀'
item: '160:6'
name: '&7一键放入&b优秀&7品质的装备'
lore: []
2:
type: 'putid:1,2,3,4:0,5:0'
item: '160:8'
name: '&7一键放入&b原版&7品质的装备'
lore: []
8:
type: 'get'
item: '160:7'
name: '&7一键取回全部装备'
lore: []
economy:
金币:
key:
- '(?<=出售可获得)[0-9]*(?=金币)'
formula: '{value}*1'
round: '%.2f'
format: '&e{value}金币'
give-from: 'Vault'
message: '&7本次出售物品, 获得了&e{value}金币!'
点券:
key:
- '(?<=出售可获得)[0-9]*(?=点券)'
formula: '{value}*1'
round: '%.0f'
format: '&b{value}点券'
give-from: 'PlayerPoints'
message: '&7本次出售物品, 获得了&b{value}点券!'
其他:
key:
- '(?<=出售可获得)[0-9]*(?=牛币)'
formula: '{value}*1'
round: '%.0f'
format: '&d{value}牛币'
give-from: 'lshop give %player_name% nb {value}'
message: '&7本次出售物品, 获得了&d{value}牛币!'
sell-preset:
'16000:0':
金币: 1