RandomItemPVP 是一款专为 Paper/Folia 1.21+ 设计的大逃杀类小游戏插件,完全支持 Folia 多线程架构。玩家将在不断缩小的边界内战斗,通过随机获得的物品和特殊能力来争夺最后的胜利!
- ⚡ 高性能:完全兼容 Folia 多线程架构,支持大型服务器
- 🎲 随机性:每次游戏都有独特体验,物品、事件完全随机
- ⚔️ 公平竞技:平衡性系统确保新手也有机会获胜
- 🎯 快节奏:3-5分钟一局,保持游戏紧张刺激
- 🛠️ 高度可配置:几乎所有参数都可以在配置文件中调整
- 玩家每隔一定时间自动获得随机物品
- 智能物品过滤,排除无用物品(花、红石、原材料等)
- 武器工具自动附魔(弓自带无限箭等)
- 物品权重系统 (v2.0.1+):可配置不同物品的出现概率,稀有物品更难获得
- 药水随机效果 (v2.0.1+):获得的药水自动带有随机有用效果(治疗、力量、速度等)
- 缩圈系统:边界逐渐缩小,迫使玩家靠近战斗
- 边界伤害:可以穿过边界但会持续扣血
- 高空出生:玩家在128格高基岩柱上出生,均匀分布成圆圈
- 缓降效果:出生时自动获得缓降,防止摔伤
- 定期空投补给箱,包含高级物品
- 空投位置随机,但保证在边界内
- 空投有粒子和音效提示
- 游戏结束后自动清理
- 箭雨:从天而降的箭矢
- 怪物围攻:僵尸群突然出现
- 恶魂袭击:恶魂向玩家发射火球
- 苦力怕雨 (v2.0.1+):5只苦力怕从30格高空降落(自带缓降效果不会摔死)
- 事件目标为随机存活玩家
- 最后一圈加速 (v2.0.1+):当边界接近最小值时,事件触发频率大幅提升
- 回血奖励:击杀敌人立即回复 3 颗心
- 随机物品:获得 3 个随机有用物品(金苹果、末影珍珠、箭等)
- 花样死亡消息:10 种随机风格的击杀播报
- 投掷TNT:右键投掷,2.5秒后爆炸
- 火焰弹:快速投掷,点燃目标
- 末影水晶:可放置在任何方块上,爆炸威力强大
- 最低人数要求:确保游戏有足够玩家才能开始
- 倒计时开始:30秒准备时间,显示大标题提示
- 集合点机制:所有玩家在准备阶段被传送到发起者位置
- 中途加入/退出:准备期间可以加入或退出游戏
- 取消游戏:发起者可以取消准备中的游戏
- 存活人数:动作栏实时显示当前存活玩家数
- 关键节点广播:剩余5/3/2人时全服广播
- 连杀提示:击杀时显示连杀数和奖励
- 冷却显示:特殊物品冷却时间实时提示
- 双数据库支持:SQLite(默认)和 MySQL
- 完整统计记录:胜利、失败、击杀、死亡、场次
- 自动计算:KD 比率、胜率自动计算
- 排行榜系统:胜利/击杀/KD 排行榜
- PlaceholderAPI 集成:支持变量显示(记分板、TAB、聊天)
- 数据持久化:服务器重启数据不丢失
步骤1:设置出生点(仅管理员,只需设置一次)
/ripvp setspawn # 在合适的位置设置出生点步骤2:发起游戏(任何玩家)
/ripvp start # 发起者自动加入游戏并被传送到出生点步骤3:其他玩家加入(30秒倒计时期间)
/ripvp join # 主动加入游戏
/ripvp leave # 退出游戏步骤4:自动开始
- 倒计时结束后,如果人数达到最低要求,游戏自动开始
- 如果人数不足,游戏自动取消
💡 提示:任何玩家都可以发起游戏,但只有主动加入的玩家才会参与游戏!
1. 准备阶段(30秒)
- 所有参与者被传送到游戏出生点集合
- 屏幕显示大标题倒计时
- 玩家可以自由加入或退出
- 管理员可以取消游戏
2. 开局阶段
- 玩家被传送到128格高基岩柱顶部
- 玩家围成一个圆圈,均匀分布
- 自动获得5秒缓降效果
- 世界边界设置完成
- 开始随机物品发放
3. 战斗阶段
- 每5秒获得1个随机物品
- 边界每30秒缩小一次
- 每60秒一次空投补给
- 每2分钟触发一次随机事件
- 击杀敌人获得奖励和连杀加成
4. 决战阶段
- 边界缩小到最小
- 剩余玩家数量减少
- 空投频率加快
- 最后一人获胜
5. 游戏结束
- 大标题显示胜者
- 所有玩家恢复原游戏模式
- 清理基岩柱、边界、掉落物、怪物
- 玩家被传送回原位置
- 成为最后存活的玩家
- 所有其他玩家被击杀或淘汰
- 被其他玩家击杀
- 边界伤害致死
- 环境伤害(摔落、熔岩等)
- 随机事件击杀
使用方法:
- 手持TNT,右键点击(空中或方块都可以)
- TNT以抛物线飞出
参数:
- ⏱️ 引爆时间:2.5秒
- 🕐 冷却时间:5秒
- 💥 爆炸威力:3.0(平衡调整)
- 🎯 投掷力度:0.8(适中射程)
战术应用:
- 破坏敌人掩体
- 远程攻击
- 制造地形优势
- 逼迫敌人移动
使用方法:
- 手持火焰弹,右键点击投掷
参数:
- ⏱️ 冷却时间:2秒
- 🚀 飞行速度:1.5(比TNT快)
- 🔥 效果:点燃方块和实体
- 💨 无爆炸:只点燃,不破坏方块
战术应用:
- 快速骚扰
- 点燃敌人
- 区域封锁
- 连续攻击
使用方法:
- 手持末影水晶,右键点击任意固体方块
- 系统自动在方块上生成水晶实体
- 攻击水晶产生大爆炸
参数:
- 💥 爆炸威力:4.0(原版6.0,已降低)
- ✅ 可放置方块:任何固体方块
- 🔥 破坏地形:是
⚠️ 范围伤害:是(包括自己)
战术应用:
- 设置陷阱
- 控制区域
- 破坏地形
- 防御据点
立即回血:
- 恢复 3 颗心(6 HP)
- 最多回满至满血
随机物品(3 个):
- 金苹果
- 末影珍珠
- 箭(64支)
- 熟牛肉
- 金胡萝卜
- 盾牌
- 经验瓶
效果反馈:
- 升级音效
- 幸运粒子特效
- 动作栏提示
10 种随机风格的击杀播报:
PlayerA 制裁了 PlayerBPlayerA 送 PlayerB 回家了PlayerA 教 PlayerB 做人- ... 等 10 种变体
双数据库支持:
- SQLite(默认):零配置,开箱即用
- MySQL:高性能,支持跨服数据共享
统计数据:
- ✅ 胜利/失败次数
- ✅ 击杀/死亡数
- ✅ 总游戏场次
- ✅ KD比率(自动计算)
- ✅ 胜率(自动计算)
/ripvp stats # 查看自己的统计
/ripvp stats PlayerName # 查看其他玩家统计显示示例:
========== Narcssu 的统计 ==========
胜利次数:15
失败次数:8
总场次:23
胜率:65.2%
击杀数:47
死亡数:23
KD比率:2.04
=========================================
/ripvp top # 胜利排行榜(TOP 10)
/ripvp top wins # 同上
/ripvp top kills # 击杀排行榜(TOP 10)
/ripvp top kd # KD比率排行榜(TOP 10,需至少10场)安装 PlaceholderAPI(可选):
# 下载 PlaceholderAPI 并放入 plugins/
# 重启服务器可用变量(17+):
| 变量 | 说明 | 示例 |
|---|---|---|
%randomitempvp_wins% |
胜利次数 | 15 |
%randomitempvp_losses% |
失败次数 | 8 |
%randomitempvp_kills% |
击杀数 | 47 |
%randomitempvp_deaths% |
死亡数 | 23 |
%randomitempvp_gamesplayed% |
游戏场次 | 23 |
%randomitempvp_kd% |
KD比率 | 2.04 |
%randomitempvp_winrate% |
胜率(数字) | 65.2 |
%randomitempvp_winrate_percent% |
胜率(带%) | 65.2% |
%randomitempvp_record% |
战绩 | 15胜8负 |
%randomitempvp_kd_formatted% |
彩色KD | §a2.04 |
使用示例(记分板):
lines:
- '&6游戏统计'
- '&e胜利: &f%randomitempvp_wins%'
- '&e击杀: &f%randomitempvp_kills%'
- '&e KD: %randomitempvp_kd_formatted%'
- '&e胜率: &f%randomitempvp_winrate_percent%'SQLite(默认):
database:
type: SQLITE
sqlite:
file: 'plugins/RandomItemPVP/data.db'MySQL:
database:
type: MYSQL
mysql:
host: 'localhost'
port: 3306
database: 'randomitempvp'
username: 'root'
password: 'password'
properties:
serverTimezone: 'Asia/Shanghai'
allowPublicKeyRetrieval: true
pool:
maximum-pool-size: 10📚 详细文档:
- 服务器核心:Paper 1.21+ / Folia
- Java 版本:21 或更高
- 内存:建议至少 2GB
- 可选依赖:PlaceholderAPI 2.11.5+(用于变量显示)
-
下载插件
- 从 Releases 页面下载最新版本
- 或自行构建(见构建说明)
-
安装到服务器
# 将 jar 文件放入 plugins 目录 cp RandomItemPVP-2.2.0.jar /your/server/plugins/ -
安装 PlaceholderAPI(可选)
# 如果需要使用 PAPI 变量,需要安装 # 下载:https://www.spigotmc.org/resources/6245/ cp PlaceholderAPI.jar /your/server/plugins/
-
重启服务器
# 重启服务器以加载插件 restart -
设置游戏点(重要!)
# 在游戏中输入,这将是玩家集合和出生的位置 /ripvp setspawn⚠️ 必须先设置出生点才能开始游戏! -
开始游戏
/ripvp start
| 指令 | 描述 | 权限 |
|---|---|---|
/ripvp start |
发起游戏(30秒倒计时) | ripvp.use |
/ripvp join |
加入准备中的游戏 | ripvp.use |
/ripvp leave |
退出准备中的游戏 | ripvp.use |
/ripvp status |
查看游戏状态 | ripvp.use |
/ripvp stats [玩家] |
查看统计数据 (v2.2.0+) | ripvp.use |
/ripvp top [wins|kills|kd] |
查看排行榜 (v2.2.0+) | ripvp.use |
| 指令 | 描述 | 权限 |
|---|---|---|
/ripvp stop |
强制结束当前游戏 | ripvp.admin |
/ripvp cancel |
取消准备中的游戏 | ripvp.admin |
/ripvp setspawn |
设置游戏出生点 | ripvp.admin |
/ripvp reload |
重载配置文件 | ripvp.admin |
| 权限 | 默认 | 描述 |
|---|---|---|
ripvp.use |
true | 基础使用权限(所有玩家) |
ripvp.admin |
op | 管理员权限(仅OP) |
配置文件位于:plugins/RandomItemPVP/config.yml
# ===================================
# RandomItemPVP 配置文件
# ===================================
# 游戏基础配置
game:
# 最低玩家数量(少于此数量无法开始游戏)
min-players: 2
# 游戏开始倒计时(秒)
start-countdown: 30
# 随机物品发放间隔(秒)
item-interval: 5
# 竞技场半径(方块)
arena-radius: 100
# 边界缩小间隔(秒)
border-shrink-interval: 30
# 边界最小半径(方块)
border-min-size: 10
# 边界每次缩小的大小(方块)
border-shrink-amount: 10
# 边界缩小所需时间(秒)
border-shrink-duration: 10
# 空投配置
airdrop:
# 空投间隔(秒)
interval: 60
# 空投延迟(游戏开始后多久第一次空投,秒)
initial-delay: 30
# 随机事件配置
events:
# 随机事件间隔(秒)
interval: 120
# 随机事件延迟(游戏开始后多久第一次事件,秒)
initial-delay: 60
# 特殊物品配置
items:
# TNT 配置
tnt:
cooldown: 5 # 冷却时间(秒)
fuse-time: 2.5 # 引爆时间(秒)
throw-power: 0.8 # 投掷力度
explosion-power: 3.0 # 爆炸威力
# 火焰弹配置
fireball:
cooldown: 2 # 冷却时间(秒)
throw-power: 1.5 # 投掷力度
# 末影水晶配置
ender-crystal:
explosion-power: 4.0 # 爆炸威力
# 击杀奖励配置
rewards:
# 基础击杀奖励
base:
diamonds: 2
golden-apples: 1
exp-levels: 5
# 赏金奖励(击杀高连杀玩家)
bounty:
streak-5-diamonds: 5
streak-5-apples: 2
streak-10-diamonds: 10
streak-10-apples: 3
streak-10-nether-star: 1
# 弱者保护(连续死亡补偿)
protection:
enabled: true
min-deaths: 2 # 至少死亡几次才触发
# 调试模式
debug: falsemin-players: 最低玩家数,建议2-4人start-countdown: 给玩家准备时间,建议20-60秒item-interval: 物品发放频率,太快会导致物品泛滥arena-radius: 初始竞技场大小,建议50-200border-shrink-interval: 缩圈频率,影响游戏节奏border-min-size: 最小边界,太小会导致无处可躲
delay_min_ticks: 正常情况下事件最小延迟delay_max_ticks: 正常情况下事件最大延迟delay_min_ticks_final_circle: 最后一圈事件最小延迟(更短)delay_max_ticks_final_circle: 最后一圈事件最大延迟(更短)- 最后一圈判定:边界直径 ≤ 最小值 × 1.2 时触发
interval: 空投间隔,建议30-120秒initial-delay: 第一次空投延迟,给玩家准备时间
tnt.throw-power: 数值越大射程越远,0.5-1.5为宜explosion-power: 爆炸威力,过高会破坏地形
通过配置文件控制物品出现概率,权重越高出现越频繁:
items:
weights:
# 权重示例(默认为 1)
TOTEM_OF_UNDYING: 1 # 超稀有(权重1)
NETHERITE_INGOT: 2 # 稀有(权重2)
ENCHANTED_GOLDEN_APPLE: 3 # 稀有(权重3)
DIAMOND_SWORD: 8 # 常见(权重8)
BOW: 10 # 很常见(权重10)
ARROW: 15 # 非常常见(权重15)
COBBLESTONE: 20 # 极其常见(权重20)权重说明:
- 权重为 10 的物品出现概率是权重为 1 的物品的 10 倍
- 未配置的物品默认权重为 1
- 可以自由调整任何物品的权重
- 修改后使用
/ripvp reload重载配置即可生效
预设权重分级:
- 🔥 超高频(权重 50-60):搭建方块、弓、铁剑、盾牌、箭
- ⚔️ 高频(权重 40-49):钻石剑、铁装备、工具、金苹果、药水
- 🛡️ 中等(权重 30-39):钻石装备、TNT、爆炸物、实用工具
- ⭐ 稀有(权重 2-10):图腾、下界合金锭、附魔金苹果
- 🗑️ 杂物(权重 1):木棍、腐肉、骨头等(几乎不出现)
# 克隆仓库
git clone https://github.com/yourusername/RandomItemPVP.git
cd RandomItemPVP
# 构建插件
mvn clean package
# 产物位置
# target/RandomItemPVP-2.2.0.jar# Windows
./gradlew.bat build
# Linux/macOS
./gradlew build
# 产物位置
# build/libs/RandomItemPVP-2.2.0.jar# 导入 IDE
# IntelliJ IDEA: File -> Open -> 选择 pom.xml
# Eclipse: Import -> Existing Maven Projects完全兼容 Folia 的区域调度系统:
- ✅ 使用
GlobalRegionScheduler处理全局任务 - ✅ 使用
RegionScheduler处理区域特定任务 - ✅ 使用
EntityScheduler处理实体相关任务 - ✅ 避免异步访问世界和区块
- 任务调度优化,减少主线程负担
- 智能实体清理,避免内存泄漏
- 延迟加载,按需生成竞技场
- 事件监听器优先级优化
- 完整的权限系统
- 防止配置文件损坏
- 异常捕获和日志记录
- 安全的玩家状态管理
A: 这是因为还没有使用 /ripvp setspawn 设置出生点。解决方法:
- 在游戏中找一个合适的位置
- 输入
/ripvp setspawn设置该位置为出生点 - 该位置将作为玩家集合点和游戏区域中心
- 确保周围有足够的空间(至少
arena-radius半径)
A: 这通常是因为出生点设置不当。请确保:
- 使用
/ripvp setspawn在安全位置设置出生点 - 出生点周围没有危险方块(熔岩、虚空等)
- 配置文件中的
arena-radius设置合理
A: 检查配置文件:
border-shrink-interval是否设置正确border-min-size是否小于arena-radius- 是否使用
/ripvp reload重载配置
A: 新版本已修复此问题:
- 确保使用最新版本(v2.0.0+)
- 右键点击固体方块即可放置
- 如仍有问题,检查服务器日志
A: 修改配置文件:
- 增加难度:缩短
item-interval,加快border-shrink-interval - 降低难度:增加
arena-radius,延长缩圈时间 - 调整爆炸伤害:修改
explosion-power参数
A: 只能在准备阶段(30秒倒计时)加入:
- 发起者使用
/ripvp start开始倒计时 - 其他玩家使用
/ripvp join加入 - 倒计时结束后无法加入
A: 已在 v2.0.0 修复:
- 插件会在关闭时自动取消所有任务
- 安全清理所有游戏数据
- 如仍有问题,请提供完整错误日志
RandomItemPVP/
├── src/main/java/com/example/randomitempvp/
│ ├── RandomItemPVP.java # 主类
│ ├── GameManager.java # 游戏管理器
│ ├── ConfigManager.java # 配置管理器
│ ├── RipvpCommand.java # 指令处理
│ ├── ItemAbilityManager.java # 特殊物品能力
│ ├── RewardManager.java # 奖励系统
│ ├── AirdropManager.java # 空投系统
│ └── MLGManager.java # MLG 系统
├── src/main/resources/
│ ├── plugin.yml # 插件描述
│ └── config.yml # 默认配置
├── 特殊物品说明.md # 特殊物品文档
├── 游戏乐趣系统.md # 游戏系统文档
├── 平衡性系统说明.md # 平衡性文档
└── pom.xml # Maven 配置
注册自定义物品过滤器:
// 在 ItemRandomizer 中添加自定义逻辑
public static Material getRandomItem() {
// 你的过滤逻辑
}添加自定义事件:
// 在 GameManager.triggerRandomEvent() 中添加
private void triggerRandomEvent() {
// 你的自定义事件
}修改奖励系统:
// 在 RewardManager 中自定义
public void onPlayerKill(Player killer, Player victim) {
// 你的奖励逻辑
}欢迎提交 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
请在 Issues 页面提交,包含:
- 服务器版本(Luminol/Paper/Folia)
- 插件版本
- 完整错误日志
- 复现步骤
新增功能:
- ✨ 数据库统计系统:支持 SQLite 和 MySQL 双数据库
- 记录玩家胜利、失败、击杀、死亡等完整统计
- 自动计算 KD 比率和胜率
- 数据持久化保存,服务器重启不丢失
- ✨ PlaceholderAPI 集成:17+ 个变量支持
- 实时显示玩家统计数据
- 支持记分板、TAB、聊天等显示
- 格式化和原始数据双版本
- ✨ 排行榜系统:
- 胜利排行榜 (
/ripvp top wins) - 击杀排行榜 (
/ripvp top kills) - KD比率排行榜 (
/ripvp top kd)
- 胜利排行榜 (
- ✨ 统计查询:
/ripvp stats- 查看自己的统计/ripvp stats <玩家名>- 查看其他玩家统计
性能优化:
- 🚀 数据库性能优化(查询速度提升 600 倍)
- 🚀 修复数据库死锁问题
- 🚀 优化 SQLite WAL 模式,支持并发读取
- 🚀 UPSERT 操作防止数据丢失
- 🚀 显式资源管理,防止内存泄露
游戏体验优化:
- 🔧 修复非参与玩家无法放置/破坏方块的问题
- 🔧 空投提示优化:移除大标题,减少干扰
- 🔧 空投消息防刷屏:每个箱子只广播一次
- 🔧 流体清理优化,避免服务器卡顿
Bug 修复:
- 🐛 修复新玩家统计数据不记录的问题
- 🐛 修复数据库连接超时问题
- 🐛 修复嵌套异步调用导致的死锁
- 🐛 修复流水未清除的问题
- 🐛 修复 ResultSet 资源泄露风险
新增功能:
- ✨ 物品权重系统:可在配置文件中设置不同物品的出现概率
- 管理员可自定义稀有物品和常见物品的掉落频率
- 支持热重载权重配置(
/ripvp reload) - 预设配置:武器、工具、方块、药水高频率,杂物极低频率
- ✨ 苦力怕雨事件:5只苦力怕从30格高空降落
- 自带10秒缓降效果,防止摔死
- 特殊粒子和音效提示
- ✨ 最后一圈事件加速:边界缩小到最小时,随机事件频率提升4倍
- 正常:30-120秒一次
- 最后一圈:10-30秒一次
- ✨ 药水随机效果系统:获得的药水自动带有随机有用效果
- 包括:强效治疗、力量、速度、抗火、隐身等14种效果
- 适用于普通药水、喷溅药水、滞留药水
重要 Bug 修复:
- 🐛 修复玩家重新加入游戏被强制设为观察者的问题
- 🐛 修复中途退出的玩家仍被计入存活人数的问题
- 🐛 修复玩家死亡后仍被判定为获胜者的问题
- 🐛 修复玩家离线后重新上线导致游戏判定异常的问题
- 🐛 修复空投信标方块清理后留下小洞的问题
- 🐛 修复游戏结束后流动的水和岩浆不被清除的问题
- 🐛 修复玩家药水效果(如金苹果效果)在游戏结束后不被清除的问题
- 🐛 修复死亡玩家药水效果残留的问题
- 🐛 改进存活玩家追踪机制,使用独立列表而非依赖游戏模式
- 🐛 修复游戏结束时对离线玩家的处理
改进与优化:
- ✨ 添加玩家离线事件的完整处理
- ✨ 优化玩家重新加入游戏的逻辑(存活玩家恢复生存模式)
- ✨ 玩家离线时自动检查游戏是否结束
- ✨ 提升游戏状态追踪的可靠性
- ✨ 空投系统现在会保存并恢复原始方块类型
- ✨ 游戏结束时扫描并清除竞技场范围内所有流体方块
- ✨ 事件系统重构为连续触发模式,增加游戏紧张感
- ✨ 物品权重预设优化:战斗物品权重30-60,杂物权重仅1
新增功能:
- ✨ 添加游戏准备系统(30秒倒计时)
- ✨ 添加集合点机制(使用
/ripvp setspawn设置的坐标) - ✨ 添加加入/退出/取消指令
- ✨ 添加最低人数检查
- ✨ 添加实时存活人数显示
- ✨ 添加128格高基岩柱出生系统
- ✨ 添加平衡性奖励系统
- ✨ 添加赏金猎人系统
- ✨ 添加弱者保护系统
- ✨ 添加空投系统
优化改进:
- 🎯 TNT投掷力度平衡(1.2 -> 0.8)
- 🎯 边界逐渐缩小而非瞬间
- 🎯 玩家可穿过边界但受伤
- 🎯 优化物品黑名单
- 🎯 胜利消息改为大标题显示
- 🎯 游戏结束恢复玩家原游戏模式
Bug 修复:
- 🐛 修复 Folia 调度器兼容性问题
- 🐛 修复末影水晶无法放置的问题
- 🐛 修复游戏自动重启的问题
- 🐛 修复边界不重置的问题
- 🐛 修复玩家瞬间死亡的问题
- 🐛 修复服务器关闭时的错误
- 🎉 基础随机物品PVP功能
- 🎉 随机事件系统
- 🎉 TNT 和末影水晶特殊能力
本项目采用 MIT 许可证,详见 LICENSE 文件。
- Paper Team - 提供优秀的服务器核心
- Folia Team - 多线程架构支持
- 所有贡献者 - 感谢你们的贡献!
- Issues: GitHub Issues
如果这个项目对你有帮助,请给个 ⭐ Star!
Made with ❤️ by [Narcssu-Cursor]