配置说明
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认它已经成功连接数据库。前置未加载或数据库连接失败时,玩家数据无法正常读取、保存;插件也会阻止玩家进入服务器,直到数据库连接完成。
修改 config.yml、cards/ 或 lottery/ 后,使用 /lykp reload 重载配置。该指令要求发送者拥有管理员权限。修改数据库开关或数据库连接参数后,建议重启服务器,并确认 LyMySQLCore 已正常连接。
配置文件
| 文件 / 目录 | 用途 |
|---|---|
config.yml | 配置玩家数据存储方式、属性接入、收集状态符号、卡牌界面和提示消息。 |
cards/ | 配置卡组、卡牌和共鸣。 |
lottery/ | 配置翻牌卡池、消耗、默认卡牌和抽取奖励。 |
playerdata/ | 使用本地 YAML 存储时保存玩家卡牌数据的目录。该目录由插件自动使用,不需要手动创建配置文件。 |
config.yml
数据存储
yaml
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
mysql.enable | 布尔值 | false | 是否启用 MySQL 存储。为 false 时使用本地 YAML 文件,为 true 时使用 MySQL。 |
mysql.databasename | 文本 | mc2 | MySQL 数据库名称。 |
mysql.username | 文本 | mc2 | MySQL 用户名。 |
mysql.password | 文本 | mc1234 | MySQL 密码。 |
mysql.port | 整数 | 3306 | MySQL 连接端口。 |
mysql.ip | 文本 | 127.0.0.1 | MySQL 服务器地址。 |
本地存储
当 mysql.enable: false 时,玩家卡牌数据保存到:
text
plugins/LyCard/playerdata/<玩家UUID>.yml玩家进入服务器时读取对应文件,退出服务器时保存卡牌数据。插件保存本地数据时会使用临时文件、备份文件和恢复逻辑,以降低文件损坏导致数据丢失的风险。
MySQL 存储
当 mysql.enable: true 时,插件会根据以上连接参数初始化数据库,并创建以插件名称为表名的数据表。玩家卡牌数据会在进入服务器时读取,在退出服务器或插件关闭时保存。
必须同时满足以下条件:
- 已安装
LyMySQLCore。 LyMySQLCore已成功连接数据库。mysql下的连接参数正确。
属性接入
yaml
attribute-plugin: 0attribute-plugin 决定插件把已收集卡牌和已激活共鸣提供的属性发送到哪个属性系统。
| 值 | 属性系统 |
|---|---|
0 | 不启用属性接入。 |
1 | AttributePlus。 |
2 | SX-Attribute 2.x。 |
3 | SX-Attribute 3.x。 |
5 | ItemLoreOrigin。 |
6 | AttributeSystem。 |
插件会定时重新计算玩家当前拥有的卡牌属性和共鸣属性,然后更新已选属性系统中的属性数据。
收集状态符号
yaml
status-format-collect: '&a√'
status-format-not-collect: '&c×'| 配置项 | 说明 |
|---|---|
status-format-collect | 玩家已经收集卡牌或完成共鸣时使用的文本。 |
status-format-not-collect | 玩家尚未收集卡牌或完成共鸣时使用的文本。 |
这两个配置项会替换卡牌和共鸣说明中的 {collect},也会作为 PlaceholderAPI 收集状态变量的返回值。
卡牌收集界面
yaml
gui:
main-title: '§c卡牌收集'
fill-item: '160:0'
fill-name: '&7封锁'
last-item: '341:0'
last-name: '&6上一页'
next-item: '341:0'
next-name: '&6下一页'| 配置项 | 说明 |
|---|---|
gui.main-title | 全部卡组列表界面的标题。 |
gui.fill-item | 翻页按钮之间填充位置使用的物品。支持数字物品 ID、子 ID 或英文物品 ID。 |
gui.fill-name | 填充物品的显示名称。 |
gui.last-item | 上一页按钮使用的物品。 |
gui.last-name | 上一页按钮的显示名称。 |
gui.next-item | 下一页按钮使用的物品。 |
gui.next-name | 下一页按钮的显示名称。 |
卡牌界面为 54 格容器,上方 45 格显示卡组内容,底部用于翻页和填充。卡组列表按照卡组文件中的 index 排序;卡组内的卡牌和共鸣按照文件中的配置顺序显示。
颜色代码支持 & 格式。示例中的 gui.main-title 使用的是原始 § 格式,插件读取后会直接作为界面标题使用。
消息
yaml
message:
not-condition: '条件不足!'
not-eco: '金币不足!'
not-point: '点券不足!'
lottery-empty: '奖池已清空, 无法重复抽取.'| 配置项 | 触发场景 |
|---|---|
message.not-condition | 玩家缺少翻牌所需的物品或离渊商店货币时提示。 |
message.not-eco | 玩家 Vault 金币不足时提示。 |
message.not-point | 玩家 PlayerPoints 点券不足时提示。 |
message.lottery-empty | 卡池处于不重复抽取模式,并且玩家已经拥有卡池中的全部卡牌时提示。 |
将消息设置为空字符串可以关闭对应提示。颜色代码支持 & 格式。
cards/
卡组文件放在 plugins/LyCard/cards/ 目录。插件会读取目录中的 YAML 文件。示例文件为 cards/四圣卡组.yml。
卡组根节点
yaml
id: '四圣'
index: 0
show-name: '&6<传奇卡组> 天地四圣'
main-info:
- '&7古老传说中的四圣兽, 镇守天地四方.'
- '&a点击进入查看卡组详情'
card: {}
resonance: {}| 配置项 | 类型 | 说明 |
|---|---|---|
id | 文本 | 卡组 ID。用于 /lykp open <卡组ID>,也用于插件内部识别卡组。 |
index | 整数 | 卡组在全部卡组界面中的排序值,默认值为 0。数值越小越靠前。 |
show-name | 文本 | 卡组在全部卡组界面中的显示名称。 |
main-info | 文本列表 | 卡组在全部卡组界面中的说明。 |
card | 节点 | 当前卡组下的卡牌配置。 |
resonance | 节点 | 当前卡组下的共鸣配置。 |
show-name、main-info、卡牌说明和共鸣说明中的 & 颜色代码会转换为 Minecraft 颜色代码。
卡牌配置
卡牌配置位于 card.<卡牌ID> 下:
yaml
card:
'朱雀':
show-name: '&c天地四圣 · 朱雀'
item: 'BOOK:0'
use: false
can-it-be-reused: true
report-command: []
first-command:
- 'bc &f%player_name%获得了 &c天地四圣 · 朱雀 &f卡牌!'
info:
- '&7古老传说中的四圣朱雀.'
- '&7收集后可获得属性:'
- '&a攻击力+1'
- ''
- '&7当前收集状态: {collect}'
attribute:
- '攻击力1'| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
card.<卡牌ID>.show-name | 文本 | 无 | 卡牌显示名称。玩家右键使用卡牌物品时,物品显示名称必须与该名称匹配。 |
card.<卡牌ID>.item | 文本 | BOOK:0 | 卡牌收集界面中的展示物品。支持数字 ID、数字 ID 加子 ID,以及英文物品 ID。 |
card.<卡牌ID>.use | 布尔值 | false | 卡牌数据读取该配置,但当前右键处理逻辑只根据物品显示名称匹配卡牌;是否开启右键获得功能不由该字段单独控制。 |
card.<卡牌ID>.can-it-be-reused | 布尔值 | true | 玩家已经拥有该卡牌时,是否仍然允许消耗同名物品并触发重复获得逻辑。 |
card.<卡牌ID>.report-command | 文本列表 | 空列表 | 玩家重复获得该卡牌时执行的控制台指令。 |
card.<卡牌ID>.first-command | 文本列表 | 空列表 | 玩家首次获得该卡牌时执行的控制台指令。 |
card.<卡牌ID>.info | 文本列表 | 空列表 | 卡牌收集界面中的说明。{collect} 会替换为收集状态符号,随后还会处理 PlaceholderAPI 变量。 |
card.<卡牌ID>.attribute | 文本列表 | 空列表 | 玩家拥有该卡牌时提供的属性文本。属性文本由所选属性系统解析。 |
卡牌物品使用
玩家手持带有显示名称的物品右键时,插件会使用物品显示名称匹配卡牌的 show-name。匹配成功后会取消交互,并根据卡牌拥有状态执行获得逻辑:
- 玩家尚未拥有卡牌时,消耗手中一件物品并给予卡牌。
- 玩家已经拥有卡牌且
can-it-be-reused: true时,消耗手中一件物品,并执行重复获得指令。 - 玩家已经拥有卡牌且
can-it-be-reused: false时,不会消耗物品,也不会再次给予卡牌。
共鸣配置
共鸣配置位于 resonance.<共鸣ID> 下:
yaml
resonance:
'水火双圣':
show-name: '&c水火双圣'
item: 'BOOK:0'
first-command:
- 'bc &f%player_name%激活了 &c天地四圣 · 水火双圣 &f共鸣!'
info:
- '&7需求卡牌:'
- '&c 天地四圣·朱雀 %lykp_state:朱雀%'
- '&c 天地四圣·玄武 %lykp_state:玄武%'
- '&7当前共鸣全部收集状态: {collect}'
cards:
- '朱雀'
- '玄武'
attribute:
- '攻击力5'| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
resonance.<共鸣ID>.show-name | 文本 | 无 | 共鸣在卡组界面中的显示名称。 |
resonance.<共鸣ID>.item | 文本 | BOOK:0 | 共鸣在卡组界面中的展示物品。 |
resonance.<共鸣ID>.first-command | 文本列表 | 空列表 | 玩家首次满足该共鸣所需卡牌时执行的控制台指令。 |
resonance.<共鸣ID>.info | 文本列表 | 空列表 | 共鸣在卡组界面中的说明。{collect} 会替换为共鸣完成状态符号,随后还会处理 PlaceholderAPI 变量。 |
resonance.<共鸣ID>.cards | 文本列表 | 无 | 激活共鸣所需的卡牌 ID。列表中的所有卡牌都被玩家拥有时,共鸣激活。 |
resonance.<共鸣ID>.attribute | 文本列表 | 空列表 | 共鸣激活后提供的属性文本。 |
当玩家获得一张卡牌后,插件会检查该卡牌所属卡组中的共鸣。如果这张卡牌使某个共鸣所需的卡牌全部集齐,则执行对应的 first-command。共鸣属性会在属性计算时加入玩家属性列表。
lottery/
卡池文件放在 plugins/LyCard/lottery/ 目录。示例文件为 lottery/四圣卡池.yml。
卡池根节点
yaml
id: '四圣'
title: '&6天地四圣卡池'
can-repeat: true
condition:
- 'papi:{%player_level% > 0}'
- 'permission:{lykp.lottery.四圣}'
take-item:
- '&6四圣符咒#1'
vault: 100
point: 100
lyshop: []
default-item:
item: '160:0'
name: '&7 神秘卡牌 '
lore:
- ' §7每次翻牌需耗费100金币和100点券.'
- ' §a<点击翻开>'
repeat-status: ' &a(已重复)'
card: {}| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | 文本 | 无 | 卡池 ID。用于 /lykp lottery <卡池ID>。 |
title | 文本 | 无 | 翻牌界面的标题。 |
can-repeat | 布尔值 | true | 是否允许抽到玩家已经拥有的卡牌。为 false 时,已拥有的卡牌不会加入本次抽取权重池。 |
condition | 文本列表 | 无 | 配置文件中可填写条件文本,但当前版本读取卡池时不会解析该节点,翻牌处理逻辑也不会根据该节点进行检查。 |
take-item | 文本列表 | 空列表 | 每次翻牌消耗的物品,格式为 物品显示名#数量。按物品显示名称匹配并扣除。 |
vault | 整数 | 0 | 每次翻牌消耗的 Vault 金币。 |
point | 整数 | 0 | 每次翻牌消耗的 PlayerPoints 点券。 |
lyshop | 文本列表 | 空列表 | 每次翻牌消耗的离渊商店货币,格式为 货币ID#数量。插件会根据已启用的 LyShop 或 LyShopReload 扣除。 |
default-item | 节点 | 无 | 翻牌前显示的默认物品。 |
repeat-status | 文本 | 无 | 重复抽到已拥有卡牌时,替换奖励名称中的 {status}。 |
card | 节点 | 无 | 卡池中的卡牌奖励和抽取权重。 |
卡池条件说明
虽然示例卡池包含以下配置:
yaml
condition:
- 'papi:{%player_level% > 0}'
- 'permission:{lykp.lottery.四圣}'但当前项目代码中的 LotteryData 不会读取 condition,翻牌点击逻辑也不会检查 PlaceholderAPI 表达式或权限。因此这些条件不会在当前版本中自动生效。不要仅依赖该节点限制玩家抽卡。
翻牌消耗
翻牌时会按顺序检查以下消耗:
| 消耗类型 | 配置格式 | 生效条件 | 扣除方式 |
|---|---|---|---|
| 物品 | 物品显示名#数量 | take-item 非空 | 检查玩家背包中显示名称完全匹配的物品数量,满足后扣除。 |
| Vault 金币 | 数字 | vault 大于 0 | 通过 Vault 经济服务检查余额并扣除。 |
| PlayerPoints 点券 | 数字 | point 大于 0 | 通过 PlayerPoints 检查并扣除点券。 |
| LyShop / LyShopReload 货币 | 货币ID#数量 | lyshop 非空且对应插件已启用 | 检查并扣除指定货币。 |
使用金币时必须有可用的 Vault 经济服务;使用点券时必须安装并启用 PlayerPoints。对应前置未启用时,相关翻牌逻辑无法正常完成。
take-item 中的物品按显示名称匹配,不根据材质、Lore 或 NBT 判断。例如:
yaml
take-item:
- '&6四圣符咒#1'默认翻牌物品
yaml
default-item:
item: '160:0'
name: '&7 神秘卡牌 '
lore:
- ' §7每次翻牌需耗费100金币和100点券.'
- ' §a<点击翻开>'| 配置项 | 说明 |
|---|---|
default-item.item | 翻牌前每个卡槽显示的物品。 |
default-item.name | 翻牌前物品的显示名称。 |
default-item.lore | 翻牌前物品的 Lore。 |
打开卡池时,54 个位置都会先显示 default-item。玩家点击某个位置后,该位置会被抽中的卡牌奖励替换,并且同一位置不能再次翻牌。
卡池卡牌
卡牌奖励配置位于 card.<卡牌ID> 下:
yaml
card:
'朱雀':
show-item: '160:1'
show-name: '&c天地四圣 · 朱雀{status}'
weight: 10
command:
- 'bc &f%player_name%翻牌获得了&c顶级卡牌!'
repeat-command:
- 'bc &f%player_name%重复翻牌到了&c顶级卡牌!'| 配置项 | 类型 | 说明 |
|---|---|---|
card.<卡牌ID>.show-item | 文本 | 翻牌后显示的奖励物品。 |
card.<卡牌ID>.show-name | 文本 | 翻牌后奖励物品的显示名称。可以包含 {status}。 |
card.<卡牌ID>.weight | 整数 | 抽取权重。权重越高,在当前权重池中的抽取概率越高。 |
card.<卡牌ID>.command | 文本列表 | 抽中该卡牌后执行的控制台指令。 |
card.<卡牌ID>.repeat-command | 文本列表 | 抽中玩家已经拥有的卡牌时执行的控制台指令。 |
卡池奖励的 card.<卡牌ID> 必须对应 cards/ 中已经存在的卡牌 ID,否则无法正常给予该卡牌。
重复抽取模式
can-repeat: true
所有卡牌都会参与权重计算。玩家抽中已拥有的卡牌时:
- 仍然执行卡牌给予逻辑,但不会重复添加卡牌。
show-name中的{status}替换为repeat-status。- 执行
repeat-command。 - 随后执行
command。
当玩家已经拥有卡池中的全部卡牌时,点击任意未翻开位置会显示 message.lottery-empty,不会继续扣除消耗。
can-repeat: false
已经拥有的卡牌会从本次权重池中排除,只根据尚未拥有的卡牌权重进行抽取。全部卡牌收集完成后,卡池没有可用奖励,插件会提示 message.lottery-empty。
配置值格式
物品格式
卡牌界面物品、共鸣界面物品、翻牌默认物品和翻牌奖励物品支持以下形式:
| 格式 | 示例 | 说明 |
|---|---|---|
| 数字 ID | 340 | 使用数字物品 ID。 |
| 数字 ID 加子 ID | 160:1 | 使用数字物品 ID 和子 ID。 |
| 英文物品 ID | BOOK | 使用英文物品名称。 |
插件包含旧版数字 ID 与英文物品 ID 的兼容处理。实际物品是否能在当前服务器版本中创建,仍取决于服务器版本提供的物品类型。
颜色代码
配置中的名称、Lore、界面标题和消息支持 & 颜色代码,例如:
yaml
show-name: '&c天地四圣 · 朱雀'部分配置示例也直接使用 § 颜色代码,例如 gui.main-title。插件不会要求所有文本统一使用同一种写法。
控制台指令
卡牌获得、重复获得、共鸣激活和翻牌奖励中的指令都会以控制台身份执行。指令执行前会处理 PlaceholderAPI 变量,例如:
yaml
first-command:
- 'bc &f%player_name%获得了卡牌!'command、repeat-command、first-command 和共鸣 first-command 均使用文本列表格式;不需要执行指令时填写空列表即可。
重载注意事项
使用以下指令重载:
text
/lykp reload重载行为包括:
- 重新读取
config.yml。 - 根据
mysql.enable重新选择本地 YAML 或 MySQL 数据存储逻辑。 - 重新读取
cards/下的卡组、卡牌和共鸣。 - 重新读取
lottery/下的卡池。
如果 cards/ 或 lottery/ 目录不存在,插件会尝试生成默认的 四圣卡组.yml 或 四圣卡池.yml。修改数据库连接参数后,应额外确认数据库连接成功;涉及前置加载或连接状态变化时,建议重启服务器。