Skip to content

配置说明

LySell 的默认配置文件为 plugins/LySell/config.yml。修改配置后,使用 /lsell reload 重载配置。

配置文件

文件用途
config.yml出售界面、物品筛选、收益类型、快捷按钮和预设售价

配置加载规则

重载配置时,插件会重新读取以下内容:

  • prohibit-sell-lore 禁止出售描述关键词。
  • economy 收益类型。
  • extra-button 底部快捷按钮。
  • sell-preset 预设售价。

额外按钮编号只接受 08。超出范围或无法转换为数字的节点不会被加载。

基础配置

配置项类型说明
clear-item-button布尔值是否允许对出售按钮使用 Shift + 右键清空界面内的物品。默认值为 false
prohibit-sell-lore字符串列表物品描述中只要有任意一行包含列表中的任意关键词,该物品就不会被统计或出售。

关键词使用包含匹配,不要求完整匹配整行描述。配置中的 & 颜色代码会转换为游戏内颜色代码后再匹配。

yaml
# 是否开启 Shift + 右键出售按钮清空物品
clear-item-button: false

# 包含以下关键词的物品禁止被统计和出售
prohibit-sell-lore:
  - '已绑定'

警告

开启 clear-item-button 后,对出售按钮使用 Shift + 右键会直接清空出售界面内的物品,并发送“清空成功!”提示。此操作不会先出售物品。

出售界面

配置节点:gui

出售界面为 54 格箱子界面:

  • 035:物品放置区域。
  • 3644:界面填充区域,40 格为出售按钮。
  • 4553:额外按钮区域,对应按钮编号 08
配置项类型说明
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

额外按钮显示在界面底部的 4553 格。配置编号与界面槽位的对应关系如下:

配置编号界面槽位
045
146
247
348
449
550
651
752
853

每个按钮包含以下配置项:

配置项类型说明
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字符串收益发放方式。支持 VaultPlayerPoints 或控制台指令。
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