配置说明
LyCamp 的主配置文件为 plugins/LyCamp/config.yml。配置会在插件启动和执行 /lyzy reload 时重新读取。
修改 attribute-plugin 或数据库相关配置后,建议重启服务器。修改数据库配置前请先备份玩家数据。
配置文件与数据目录
| 文件 / 目录 | 用途 |
|---|---|
config.yml | 变量默认文本、属性插件、消息、数据库、掉落、PVP 世界和阵营配置 |
data/<玩家UUID>.yml | 未使用 MySQL 时保存玩家阵营和声望数据 |
未启用 MySQL 时,玩家数据保存为 YAML 文件。玩家数据包含以下字段:
| 字段 | 说明 |
|---|---|
camp | 玩家当前阵营;未加入阵营时为空 |
cumulative-prestige-value | 累计阵营声望 |
now-prestige-value | 当前可用阵营声望 |
today-prestige-value | 当日剩余可获得的阵营声望 |
last-refresh-time | 上次每日声望刷新时间 |
last-kill-time | 上次完成击杀的时间 |
默认配置结构
以下示例包含配置文件中的主要结构。阵营名称、世界名称和声望区间可以按服务器实际内容增加或修改。
yaml
placeholder:
no-camp: '&7无阵营'
no-tag: '&7无称号'
has-first-kill: '&a今日首杀未完成'
not-first-kill: '&c今日首杀已完成'
attribute-plugin: ''
message:
join-camp: '&7你加入了 &6{camp} &7阵营!'
quit-camp: '&7你退出了 &6{camp} &7阵营! 当前和累计声望已被清空.'
give-prestige: '&7你获得了 &a{value} &7点阵营声望, 今日还可获得 &a{today_value} &7点阵营声望!'
take-prestige: '&7你失去了 &c{value} &7点阵营声望!'
today-max-prestige: '&7今日可获得阵营声音已达上限!'
cumulative-max-prestige: '&7累计阵营声望已达上限 {value} 点!'
target-not-camp: '&c对方没有加入阵营, 无法造成伤害!'
player-not-camp: '&c您还没有加入阵营, 无法造成伤害!'
must-have-camp-to-teleport: '&c你还没有加入阵营, 无法进入该地图!'
allow-command: '&7PVP地图内禁止使用该指令'
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1
force-drop-item-lore:
- '&6在PVP地图内死亡可能掉落'
independent-of-the-world-force-drop-item-lore:
- '&6在PVP地图内死亡&c必定&6掉落'
pvp-world:
'pvp_world':
force-drop-item-amount: 2
drop-item-message:
- '&7您被 &c{camp} &7阵营的 &c{killer} &7所击杀, 您身上的如下物品已掉落在地:'
abnormal-death-drop-item-message:
- '&7您意外死亡或离线, 您身上的如下物品已掉落在地:'
pvp-start-time: '0 0 9 * * ?'
pvp-end-time: '0 0 18 * * ?'
not-pvp-message:
- '&7不在可PVP时间内,无法造成伤害!'
respawn-location:
潜伏者: '100,100,100,0,0'
保卫者: '-100,100,-100,0,0'
kill-give-prestige: 1
dead-take-prestige: 1
must-have-camp-to-teleport: true
allow-command:
- '/say'
camp:
潜伏者:
attribute:
- '攻击力+5'
hostiles:
- '保卫者'
prestige:
1-1000:
tag: '&6潜伏者新人'
attribute:
- '攻击力+10'
command:
- '[console]tell %player_name% 你获得了称号: {tag}'
every-day-max-get-prestage-value:
default: 1000
vip_1: 2000
every-day-first-kill-run-command:
- '[console]tell %player_name% 你第一次击杀了敌对玩家'placeholder
placeholder 用于设置 PlaceholderAPI 变量在特定状态下返回的默认文本。
| 配置项 | 生效场景 |
|---|---|
placeholder.no-camp | 玩家没有阵营时的阵营文本 |
placeholder.no-tag | 玩家没有称号,或当前累计声望没有匹配到称号时的文本 |
placeholder.has-first-kill | 玩家当天尚未完成首杀时的文本 |
placeholder.not-first-kill | 玩家当天已经完成首杀时的文本 |
颜色符号使用 &,例如 &a、&7。
attribute-plugin
用于选择 LyCamp 写入阵营属性和声望属性的属性插件。
yaml
attribute-plugin: ''| 配置值 | 说明 |
|---|---|
| 空字符串 | 不写入外部属性插件 |
AttributePlus | 使用 AttributePlus 写入属性 |
SX-Attribute2 | 使用 SX-Attribute 2 写入属性 |
SX-Attribute3 | 使用 SX-Attribute 3 写入属性 |
AttributeSystem | 使用 AttributeSystem 写入属性 |
ItemLoreOrigin | 使用 ItemLoreOrigin 写入属性 |
写入的属性由两部分组成:
- 阵营的
attribute。 - 当前累计声望匹配到的
prestige.<区间>.attribute。
修改该配置后建议重启服务器,并确认对应属性插件已正常加载。未选择属性插件时,LyCamp 不会向外部属性插件写入属性。
message
用于设置阵营、声望、PVP 世界和指令限制相关提示文本。
| 配置项 | 用途 | 可用替换内容 |
|---|---|---|
message.join-camp | 玩家加入阵营时提示 | {camp} |
message.quit-camp | 玩家退出阵营时提示 | {camp} |
message.give-prestige | 玩家获得当前声望时提示 | {value}、{today_value} |
message.take-prestige | 玩家失去当前声望时提示 | {value} |
message.today-max-prestige | 每日可获得声望达到上限时提示 | 无 |
message.cumulative-max-prestige | 累计声望达到上限时提示 | {value} |
message.target-not-camp | 目标没有阵营时提示 | 无 |
message.player-not-camp | 攻击者没有阵营时提示 | 无 |
message.must-have-camp-to-teleport | 玩家不满足进入PVP世界条件时提示 | 无 |
message.allow-command | PVP世界内禁止使用指令时提示 | 无 |
文本中的 & 会转换为 Minecraft 颜色代码。
PVP 世界还可以使用以下消息配置:
pvp-world.<世界名>.drop-item-message:玩家被其他玩家击杀并掉落物品时显示。pvp-world.<世界名>.abnormal-death-drop-item-message:玩家异常死亡或离线并掉落物品时显示。pvp-world.<世界名>.not-pvp-message:不在PVP开放时间内攻击玩家时显示。
其中掉落提示支持以下替换内容:
| 占位内容 | 说明 |
|---|---|
{camp} | 击杀者所属阵营 |
{killer} | 击杀者名称 |
数据库配置
yaml
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1| 配置项 | 说明 |
|---|---|
mysql.enable | 是否启用 MySQL 存储 |
mysql.databasename | 数据库名称 |
mysql.username | 数据库用户名 |
mysql.password | 数据库密码 |
mysql.port | 数据库端口 |
mysql.ip | 数据库地址 |
YAML 存储
当 mysql.enable: false 时,玩家数据保存到:
text
plugins/LyCamp/data/<玩家UUID>.ymlMySQL 存储
当 mysql.enable: true 时,玩家数据保存到 MySQL 数据库,数据表名称使用插件名称 LyCamp,表中保存玩家名称和序列化后的玩家数据。
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认 LyMySQLCore 已成功连接数据库。只有在前置正常加载且数据库连接成功后,LyCamp 的 MySQL 数据读取、保存和相关数据功能才会生效。
启用 MySQL 后,玩家进入服务器前会检查数据库连接状态;数据库尚未连接时,玩家无法进入服务器。
修改 mysql.enable、数据库地址、端口、数据库名、用户名或密码后,建议重启服务器。切换 YAML 和 MySQL 存储方式前请先备份原有玩家数据。
掉落配置
force-drop-item-lore
yaml
force-drop-item-lore:
- '&6在PVP地图内死亡可能掉落'物品的 Lore 只要包含列表中的任意一段文本,就会加入普通强制掉落候选列表。
普通强制掉落只在配置的PVP世界中生效,并且受对应世界的 force-drop-item-amount 限制。插件会从玩家背包前36个格子中随机选择物品掉落。
independent-of-the-world-force-drop-item-lore
yaml
independent-of-the-world-force-drop-item-lore:
- '&6在PVP地图内死亡&c必定&6掉落'物品的 Lore 只要包含列表中的任意一段文本,就会在PVP世界的死亡或离线掉落处理中必定掉落。
此类掉落独立于普通世界掉落配置,不受 force-drop-item-amount 限制。
PVP 世界配置
PVP 世界配置位于 pvp-world.<世界名> 下。世界名称必须与服务器中的世界名称一致。
yaml
pvp-world:
'pvp_world':
force-drop-item-amount: 2
drop-item-message:
- '&7您被 &c{camp} &7阵营的 &c{killer} &7所击杀, 您身上的如下物品已掉落在地:'
abnormal-death-drop-item-message:
- '&7您意外死亡或离线, 您身上的如下物品已掉落在地:'
pvp-start-time: '0 0 9 * * ?'
pvp-end-time: '0 0 18 * * ?'
not-pvp-message:
- '&7不在可PVP时间内,无法造成伤害!'
respawn-location:
潜伏者: '100,100,100,0,0'
保卫者: '-100,100,-100,0,0'
kill-give-prestige: 1
dead-take-prestige: 1
must-have-camp-to-teleport: true
allow-command:
- '/say'| 配置项 | 类型 | 说明 |
|---|---|---|
force-drop-item-amount | 整数 | 普通强制掉落时随机掉落的背包格子数量。一个格子中的整组物品会一起掉落 |
drop-item-message | 文本列表 | 被其他玩家击杀并发生物品掉落时显示的提示 |
abnormal-death-drop-item-message | 文本列表 | 非玩家击杀、异常死亡或玩家离线时发生物品掉落时显示的提示 |
pvp-start-time | Cron 字符串 | PVP 开始时间 |
pvp-end-time | Cron 字符串 | PVP 结束时间 |
not-pvp-message | 文本列表 | 非PVP开放时间内攻击玩家时显示的提示 |
respawn-location | 映射 | 各阵营在该世界中的重生点 |
kill-give-prestige | 整数 | 击杀敌对阵营玩家时,击杀者增加的当前声望 |
dead-take-prestige | 整数 | 玩家死亡时扣除的当前声望 |
must-have-camp-to-teleport | 布尔值 | 是否限制没有阵营或没有对应重生点的玩家进入该世界 |
allow-command | 文本列表 | 非OP玩家在该PVP世界中允许使用的命令前缀 |
PVP 时间
pvp-start-time 和 pvp-end-time 使用 Quartz 风格的六段 Cron 表达式,字段顺序为:
text
秒 分 时 日 月 周示例:
yaml
pvp-start-time: '0 0 9 * * ?'
pvp-end-time: '0 0 18 * * ?'以上配置表示每天 09:00:00 开始、每天 18:00:00 结束。PVP时间支持跨天时间段。
如果开始或结束时间使用:
text
* * * * * ?则对应边界不限制时间。
PVP时间之外,玩家无法在该世界对其他玩家造成伤害;攻击操作会被拦截,并显示 not-pvp-message。
重生点格式
yaml
respawn-location:
潜伏者: '100,100,100,0,0'
保卫者: '-100,100,-100,0,0'位置格式为:
text
x,y,z,yaw,pitch| 部分 | 说明 |
|---|---|
x | X 坐标 |
y | Y 坐标 |
z | Z 坐标 |
yaw | 水平朝向 |
pitch | 垂直朝向 |
respawn-location 的键名必须与 camp 下的阵营名称一致。玩家死亡后,如果当前阵营存在对应重生点,则在该位置重生。
进入和离开PVP世界
当 must-have-camp-to-teleport: true 时,玩家必须满足以下条件才能进入该世界:
- 已加载玩家数据。
- 已加入有效阵营。
- 该阵营在
respawn-location中配置了重生点。
插件提供的 /lyzy tp 会根据玩家阵营传送到对应重生点。玩家从PVP世界离开时,非OP玩家的传送会被阻止;OP不受此限制。
PVP 世界内指令
allow-command 配置的是命令前缀,不是完整命令列表。
yaml
allow-command:
- '/say'非OP玩家在该PVP世界内只能使用消息以配置前缀开头的命令。未匹配前缀的命令会被拦截,并显示 message.allow-command 中的提示文本。
阵营配置
阵营配置位于 camp.<阵营名> 下。阵营名称会被其他配置中的 hostiles 和 respawn-location 引用。
yaml
camp:
潜伏者:
attribute:
- '攻击力+5'
hostiles:
- '保卫者'
prestige:
1-1000:
tag: '&6潜伏者新人'
attribute:
- '攻击力+10'
command:
- '[console]tell %player_name% 你获得了称号: {tag}'
every-day-max-get-prestage-value:
default: 1000
vip_1: 2000
every-day-first-kill-run-command:
- '[console]tell %player_name% 你第一次击杀了敌对玩家'| 配置项 | 类型 | 说明 |
|---|---|---|
attribute | 文本列表 | 加入阵营后获得的基础属性 |
hostiles | 文本列表 | 该阵营可以攻击的敌对阵营名称列表 |
prestige | 映射 | 按累计声望匹配称号、属性和命令 |
every-day-max-get-prestage-value | 映射 | 每日可获得声望上限及对应权限上限 |
every-day-first-kill-run-command | 文本列表 | 每日首次击杀敌对阵营玩家时执行的命令 |
只有当攻击者和目标都已加载有效阵营,并且目标阵营位于攻击者的 hostiles 列表中时,PVP世界内的攻击才允许继续处理。
prestige 声望配置
prestige 的键支持两种格式:
最小值-最大值:表示一个闭区间。固定值:表示只匹配该声望值。
yaml
prestige:
1-1000:
tag: '&6新人'
attribute:
- '攻击力+10'
command:
- '[console]tell %player_name% 你获得了称号: {tag}'
1001-10000:
tag: '&6精英'
20000:
tag: '&6固定声望称号'| 配置项 | 类型 | 说明 |
|---|---|---|
prestige.<区间或固定值>.tag | 文本 | 该声望阶段对应的称号 |
prestige.<区间或固定值>.attribute | 文本列表 | 玩家达到该阶段时获得的属性 |
prestige.<区间或固定值>.command | 文本列表 | 玩家首次达到该阶段时执行的命令 |
累计声望达到某个阶段的最小值时,插件会执行该阶段的 command。阵营的累计声望上限取所有声望配置键中的最大值。
当前累计声望匹配到的声望阶段属性会与阵营基础属性一起写入所选属性插件。
退出阵营时,玩家的累计声望、当前声望、每日声望和每日刷新记录会被清零。
每日声望上限
yaml
every-day-max-get-prestage-value:
default: 1000
vip_1: 2000| 键 | 说明 |
|---|---|
default | 默认每日可获得声望上限 |
| 其它键 | 权限对应的每日声望上限 |
除 default 外,配置键中的下划线 _ 会转换为权限节点中的点号 .:
yaml
vip_1: 2000对应权限节点:
text
vip.1玩家拥有多个匹配的每日上限权限时,使用数值最高的上限。没有配置每日上限时,默认值为 1000。
每日声望会按照服务器默认时区在当天零点刷新。每日首杀状态也按服务器默认时区的日期判断。
阵营命令
称号命令和每日首杀命令支持以下前缀:
| 前缀 | 执行身份 |
|---|---|
[console] | 控制台执行命令 |
[op] | 临时以OP身份执行玩家命令 |
| 无前缀 | 由玩家自身执行命令 |
命令执行前会解析 PlaceholderAPI 变量。声望称号命令中的 {tag} 会替换为当前达到的称号。
示例:
yaml
command:
- '[console]tell %player_name% 你获得了称号: {tag}'每日首杀命令在玩家当天首次击杀敌对阵营玩家时执行:
yaml
every-day-first-kill-run-command:
- '[console]tell %player_name% 你第一次击杀了敌对玩家'配置重载
执行以下命令可以重新读取配置:
text
/lyzy reload该命令仅OP可以执行。重载时会重新读取阵营、PVP世界、PlaceholderAPI 默认文本和数据库配置,并重新启动自动保存与每日刷新任务。
数据库开关和属性插件选择属于启动相关配置,修改后仍建议重启服务器。