Skip to content

LyCamp

LyCamp 是一款阵营 PVP 插件,用于配置阵营关系、阵营战场、开放时间、声望成长、称号属性和死亡掉落规则。

玩家加入阵营后,可以在指定 PVP 世界与敌对阵营战斗。插件会根据世界开放时间决定是否允许造成伤害,并在击杀、死亡、异常死亡或战场内退出时处理声望与物品掉落。

MySQL 前置要求

启用 MySQL 存储时,必须安装 LyMySQLCore,并确认它已成功连接数据库。否则玩家数据的读取、保存、同步及相关记录不会生效,服务器也会阻止玩家进入。

插件信息

项目内容
插件名LyCamp
插件版本1.0.1
作者离渊
主命令/lyzy
Java 版本Java 8
开发使用的服务端 APIPaper 1.16.5
数据存储本地 YAML 或 MySQL
插件声明的软依赖PlaceholderAPIProtocolLibAttributePlusSX-Attribute
可选属性插件AttributePlusSX-Attribute2SX-Attribute3AttributeSystemItemLoreOrigin

支持版本说明

项目使用 Paper 1.16.5 API 编译。代码包含旧版与新版材质兼容处理,但没有提供完整的服务端版本支持列表,因此不能据此确认其他 Minecraft 版本一定可用。

玩法规则

  1. 管理员在配置中创建阵营,并设置各阵营的敌对关系。
  2. 管理员将世界加入 pvp-world,配置开放时间和各阵营的重生点。
  3. 玩家加入阵营后,通过插件指令传送到所属阵营在目标世界的重生点。
  4. PVP 世界内只允许攻击敌对阵营玩家;无阵营、同阵营或非敌对阵营之间的伤害会被阻止。
  5. 击杀敌对玩家会增加当前声望和累计声望,被击杀或异常死亡会扣除当前声望。
  6. 累计声望进入配置区间后,会显示对应称号并加载该区间的属性。
  7. 战场内死亡或退出时,符合 Lore 条件的背包物品可能随机掉落或必定掉落。

依赖与功能关系

插件类型用途
PlaceholderAPI可选依赖注册 %lyzy_...% 变量,并解析称号奖励、首杀奖励等配置指令中的 PAPI 变量
ProtocolLib可选依赖监听客户端攻击实体数据包,补充接管 PVP 世界中的玩家攻击行为
LyMySQLCoreMySQL 模式必需在 MySQL 模式下提供安全的玩家加载与保存事件;必须正常加载并连接数据库
AttributePlus可选属性插件加载阵营基础属性与声望称号属性
SX-Attribute2可选属性插件加载阵营基础属性与声望称号属性
SX-Attribute3可选属性插件加载阵营基础属性与声望称号属性
AttributeSystem可选属性插件加载阵营基础属性与声望称号属性
ItemLoreOrigin可选属性插件通过虚拟物品 Lore 加载阵营基础属性与声望称号属性

PlaceholderAPIProtocolLib 未安装时,插件会在控制台提示对应前置未启动。属性功能只会写入 attribute-plugin 指定的属性插件。

核心功能

功能说明
多阵营配置可创建多个阵营,并为每个阵营设置基础属性、敌对阵营、称号区间和奖励指令
敌对关系攻击者所属阵营的 hostiles 必须包含目标阵营,否则无法造成伤害
PVP 世界接管只有配置在 pvp-world 下的世界会应用阵营伤害、传送、指令限制、声望和掉落规则
定时开放每个 PVP 世界使用开始与结束 Cron 表达式控制战斗开放时间,并支持跨天时间段
阵营出生点每个 PVP 世界可为不同阵营设置独立的进入点和死亡重生点
进出限制可阻止无阵营或没有对应重生点的玩家进入 PVP 世界;非 OP 玩家不能从 PVP 世界跨世界传送离开
指令限制非 OP 玩家在 PVP 世界只能使用配置的指令前缀,其他指令会被拦截
当前声望击杀时增加、死亡时扣除,可通过管理指令给予、扣除或直接设置
累计声望只随声望增加而增长,用于称号区间、属性和奖励判断,也可通过管理指令调整
声望上限当前声望和累计声望最高不会超过阵营已配置称号区间中的最大值
每日获取额度每个阵营可配置默认额度和权限额度;匹配多个额度时使用数值最高的一项
每日刷新按服务器默认时区判断跨日,并刷新玩家当天剩余可获取声望
每日首杀玩家每天首次击杀敌对玩家时,执行所属阵营配置的首杀指令
称号奖励累计声望首次达到称号区间起点时,可执行该区间的配置指令
阵营属性玩家可同时获得所属阵营的基础属性和当前称号区间的附加属性
随机死亡掉落从背包前 36 个槽位中筛选包含指定 Lore 的物品,再按世界配置随机掉落指定数量的格子
必定死亡掉落包含独立必掉 Lore 的物品不受世界随机掉落数量限制,会直接掉落
异常死亡处理在开放时间内自然死亡、环境死亡等无击杀者死亡同样会扣除当前声望并处理掉落
战场退出掉落玩家在开放时间内从 PVP 世界退出服务器时,会执行无击杀者掉落处理
本地数据保护YAML 数据保存时使用临时文件替换和 .bak 备份;主文件损坏时会尝试从备份恢复
自动保存玩家数据发生变化后,由异步任务保存;退出、被踢出和插件关闭时也会保存数据
MySQL 存储可使用 HikariCP 连接 MySQL,并在以插件名命名的数据表中保存玩家数据
PAPI 变量可显示阵营、称号、当前声望、累计声望、每日额度和首杀状态

战斗判定

在配置的 PVP 世界内,玩家攻击会依次检查以下条件:

  1. 攻击者与目标玩家的数据已经加载。
  2. 攻击者已经加入有效阵营。
  3. 目标玩家已经加入有效阵营。
  4. 攻击者阵营的敌对列表包含目标阵营。
  5. 当前时间位于该世界配置的 PVP 开放时间内。

任一条件不满足时,本次玩家伤害会被取消。无阵营和非开放时间的提示可以在 config.yml 中修改。

声望与称号

插件分别保存两种声望:

类型用途变化规则
当前声望记录玩家当前可用的阵营声望击杀敌对玩家时增加,死亡时扣除
累计声望判断称号、属性和累计进度当前声望增加时同步增加,普通死亡扣分不会减少累计声望

称号区间支持范围值和固定值:

  • 1-1000 表示累计声望处于 1 至 1000 时匹配。
  • 1000 表示只有累计声望等于 1000 时匹配。
  • 阵营累计声望上限取所有已配置区间中的最大结束值。
  • 玩家首次从区间起点以下提升到区间起点或以上时,执行该称号的 command
  • 称号指令支持 {tag}、PlaceholderAPI 变量以及 [op][console] 执行前缀。

退出阵营时,当前声望、累计声望、每日额度和刷新时间会被清空。

死亡掉落

掉落系统只在配置的 PVP 世界且处于 PVP 开放时间时生效。

掉落类型匹配配置处理方式
随机掉落force-drop-item-lore从匹配物品的背包格子中随机选择,数量由世界的 force-drop-item-amount 决定
独立必掉independent-of-the-world-force-drop-item-lore所有匹配物品直接掉落,不受世界随机掉落数量影响

Lore 使用包含匹配,而不是要求整行完全相同。随机掉落按背包格子计算,一个格子中的整组物品会一起掉落。插件会向死亡玩家显示掉落物名称与数量;被玩家击杀时还可显示击杀者和击杀者阵营。

指令

主命令为 /lyzy。代码没有定义独立权限节点,所有管理子命令均通过 OP 状态判断,目标玩家必须在线且玩家数据已经加载。

指令作用使用条件
/lyzy查看管理指令帮助OP
/lyzy reload重载配置、阵营、PVP 世界、变量默认文本和自动保存任务OP
/lyzy tp 玩家 世界名将指定玩家传送到目标 PVP 世界中所属阵营的重生点OP;玩家在线、有阵营,世界和阵营重生点均已配置
/lyzy setcamp 玩家 阵营设置指定玩家的阵营OP;玩家在线,阵营必须存在
/lyzy setcamp 玩家 null强制指定玩家退出阵营并清空声望数据OP;玩家在线
/lyzy givec 玩家 数值增加指定玩家的累计声望OP;数值必须为整数
/lyzy takec 玩家 数值扣除指定玩家的累计声望OP;数值必须为整数
/lyzy setc 玩家 数值设置指定玩家的累计声望OP;数值必须为整数
/lyzy given 玩家 数值增加指定玩家的当前声望,并应用每日额度与声望上限OP;数值必须为整数
/lyzy taken 玩家 数值扣除指定玩家的当前声望,最低为 0OP;数值必须为整数
/lyzy setn 玩家 数值设置指定玩家的当前声望,并应用每日额度与声望上限OP;数值必须为整数

提示

插件没有提供玩家自行加入或退出阵营的命令。可以使用菜单插件封装后台指令 /lyzy setcamp 玩家 阵营/lyzy setcamp 玩家 null

PlaceholderAPI 变量

安装 PlaceholderAPI 后,可使用以下变量:

变量返回内容
%lyzy_camp%玩家当前阵营;无阵营时返回 placeholder.no-camp
%lyzy_tag%当前累计声望匹配的称号;未匹配时返回 placeholder.no-tag
%lyzy_max_cumulative_prestige%所属阵营的累计声望上限
%lyzy_cumulative_prestige%当前累计声望
%lyzy_now_prestige%当前声望
%lyzy_today_prestige%当天剩余可获取声望
%lyzy_max_today_prestige%根据玩家权限计算出的每日声望上限
%lyzy_first_kill%当天首杀是否尚未完成

变量返回文本、默认值和更多说明见插件变量

主要配置范围

插件的主要设置位于 plugins/LyCamp/config.yml

配置分组作用
placeholder设置无阵营、无称号和首杀状态的变量文本
attribute-plugin选择属性插件;修改后需要重启服务器
message设置加入、退出、声望、传送和战斗限制提示
mysql设置 MySQL 开关和连接信息;切换存储模式需要重启服务器
force-drop-item-lore设置参与世界随机掉落的物品 Lore
independent-of-the-world-force-drop-item-lore设置不受随机掉落数量限制的必掉物品 Lore
pvp-world设置 PVP 世界、开放时间、重生点、声望、掉落和允许指令
camp设置阵营属性、敌对关系、称号区间、每日额度和首杀指令

完整配置键、默认行为和 YAML 结构见配置说明

数据存储

本地 YAML

mysql.enablefalse 时,玩家数据保存在:

text
plugins/LyCamp/data/玩家UUID.yml

每个玩家文件包含阵营、累计声望、当前声望、当天剩余额度、上次每日刷新时间和上次击杀时间。保存时会保留 .bak 备份,并在主文件损坏时尝试恢复。

MySQL

mysql.enabletrue 时,插件连接配置的 MySQL 数据库,并创建名为 LyCamp 的数据表。玩家名称用于查询记录,玩家数据以 YAML 字符串形式保存在 data 字段中。

危险

MySQL 模式不能只填写数据库地址。必须同时安装 LyMySQLCore,确保该插件已经连接数据库,并确认 LyCamp 自身数据库连接成功。数据库未连接完成时,LyCamp 会阻止玩家登录。

配置生效方式

改动生效方式
阵营、敌对关系、称号、世界、时间、提示和掉落规则执行 /lyzy reload
attribute-plugin重启服务器
mysql.enable重启服务器
MySQL 连接信息建议重启服务器并确认数据库连接成功

执行 /lyzy reload 时,插件会重新加载阵营和 PVP 世界,重新读取变量文本,并重启自动保存与每日检查任务。重载不会重新注册启动阶段才选择的数据监听器,因此不应通过重载切换 YAML 与 MySQL 存储模式。

页面导航

页面内容
配置说明config.yml 全部配置分组、配置键和 YAML 结构
玩法机制战斗判定、声望、首杀、掉落、传送、刷新和保存机制
指令用法/lyzy 管理指令、参数要求和限制
插件变量PlaceholderAPI 变量、返回值和默认文本
常见问题PVP 伤害、世界进出、属性、数据与数据库排查
更新日志插件与文档更新记录