Skip to content

LuminolCraft/RandomItemPVP

Repository files navigation

RandomItemPVP - 随机物品大逃杀

一款充满刺激的 Minecraft 大逃杀插件

Minecraft Server Folia Java Version


📖 目录


🎮 简介

RandomItemPVP 是一款专为 Paper/Folia 1.21+ 设计的大逃杀类小游戏插件,完全支持 Folia 多线程架构。玩家将在不断缩小的边界内战斗,通过随机获得的物品和特殊能力来争夺最后的胜利!

🌟 为什么选择 RandomItemPVP?

  • 高性能:完全兼容 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人时全服广播
  • 连杀提示:击杀时显示连杀数和奖励
  • 冷却显示:特殊物品冷却时间实时提示

🗃️ 数据统计系统 (v2.2.0+)

  • 双数据库支持: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,右键点击(空中或方块都可以)
  • TNT以抛物线飞出

参数:

  • ⏱️ 引爆时间:2.5秒
  • 🕐 冷却时间:5秒
  • 💥 爆炸威力:3.0(平衡调整)
  • 🎯 投掷力度:0.8(适中射程)

战术应用:

  • 破坏敌人掩体
  • 远程攻击
  • 制造地形优势
  • 逼迫敌人移动

🔥 火焰弹投掷

使用方法:

  • 手持火焰弹,右键点击投掷

参数:

  • ⏱️ 冷却时间:2秒
  • 🚀 飞行速度:1.5(比TNT快)
  • 🔥 效果:点燃方块和实体
  • 💨 无爆炸:只点燃,不破坏方块

战术应用:

  • 快速骚扰
  • 点燃敌人
  • 区域封锁
  • 连续攻击

💎 末影水晶

使用方法:

  • 手持末影水晶,右键点击任意固体方块
  • 系统自动在方块上生成水晶实体
  • 攻击水晶产生大爆炸

参数:

  • 💥 爆炸威力:4.0(原版6.0,已降低)
  • 可放置方块:任何固体方块
  • 🔥 破坏地形:是
  • ⚠️ 范围伤害:是(包括自己)

战术应用:

  • 设置陷阱
  • 控制区域
  • 破坏地形
  • 防御据点

⚖️ 击杀奖励系统

🎯 基础奖励(每次击杀)

立即回血

  • 恢复 3 颗心(6 HP)
  • 最多回满至满血

随机物品(3 个):

  • 金苹果
  • 末影珍珠
  • 箭(64支)
  • 熟牛肉
  • 金胡萝卜
  • 盾牌
  • 经验瓶

效果反馈

  • 升级音效
  • 幸运粒子特效
  • 动作栏提示

💬 花样死亡消息

10 种随机风格的击杀播报:

  • PlayerA 制裁了 PlayerB
  • PlayerA 送 PlayerB 回家了
  • PlayerA 教 PlayerB 做人
  • ... 等 10 种变体

📊 数据统计系统

🗃️ 数据库功能 (v2.2.0+)

双数据库支持

  • 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(可选):

# 下载 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+(用于变量显示)

安装步骤

  1. 下载插件

    • 从 Releases 页面下载最新版本
    • 或自行构建(见构建说明
  2. 安装到服务器

    # 将 jar 文件放入 plugins 目录
    cp RandomItemPVP-2.2.0.jar /your/server/plugins/
  3. 安装 PlaceholderAPI(可选)

    # 如果需要使用 PAPI 变量,需要安装
    # 下载:https://www.spigotmc.org/resources/6245/
    cp PlaceholderAPI.jar /your/server/plugins/
  4. 重启服务器

    # 重启服务器以加载插件
    restart
  5. 设置游戏点(重要!)

    # 在游戏中输入,这将是玩家集合和出生的位置
    /ripvp setspawn

    ⚠️ 必须先设置出生点才能开始游戏!

  6. 开始游戏

    /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

管理员指令(仅OP)

指令 描述 权限
/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: false

配置说明

游戏配置

  • min-players: 最低玩家数,建议2-4人
  • start-countdown: 给玩家准备时间,建议20-60秒
  • item-interval: 物品发放频率,太快会导致物品泛滥
  • arena-radius: 初始竞技场大小,建议50-200
  • border-shrink-interval: 缩圈频率,影响游戏节奏
  • border-min-size: 最小边界,太小会导致无处可躲

事件配置 (v2.0.1+)

  • 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: 爆炸威力,过高会破坏地形

物品权重配置 (v2.0.1+)

通过配置文件控制物品出现概率,权重越高出现越频繁:

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):木棍、腐肉、骨头等(几乎不出现)

🔨 构建说明

Maven 构建(推荐)

# 克隆仓库
git clone https://github.com/yourusername/RandomItemPVP.git
cd RandomItemPVP

# 构建插件
mvn clean package

# 产物位置
# target/RandomItemPVP-2.2.0.jar

Gradle 构建

# 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 多线程支持

完全兼容 Folia 的区域调度系统:

  • ✅ 使用 GlobalRegionScheduler 处理全局任务
  • ✅ 使用 RegionScheduler 处理区域特定任务
  • ✅ 使用 EntityScheduler 处理实体相关任务
  • ✅ 避免异步访问世界和区块

性能优化

  • 任务调度优化,减少主线程负担
  • 智能实体清理,避免内存泄漏
  • 延迟加载,按需生成竞技场
  • 事件监听器优先级优化

安全性

  • 完整的权限系统
  • 防止配置文件损坏
  • 异常捕获和日志记录
  • 安全的玩家状态管理

❓ 常见问题

Q: 游戏提示"未设置游戏出生点"?

A: 这是因为还没有使用 /ripvp setspawn 设置出生点。解决方法:

  1. 在游戏中找一个合适的位置
  2. 输入 /ripvp setspawn 设置该位置为出生点
  3. 该位置将作为玩家集合点和游戏区域中心
  4. 确保周围有足够的空间(至少 arena-radius 半径)

Q: 游戏开始后玩家瞬间死亡?

A: 这通常是因为出生点设置不当。请确保:

  1. 使用 /ripvp setspawn 在安全位置设置出生点
  2. 出生点周围没有危险方块(熔岩、虚空等)
  3. 配置文件中的 arena-radius 设置合理

Q: 边界没有缩小?

A: 检查配置文件:

  1. border-shrink-interval 是否设置正确
  2. border-min-size 是否小于 arena-radius
  3. 是否使用 /ripvp reload 重载配置

Q: 末影水晶无法放置?

A: 新版本已修复此问题:

  1. 确保使用最新版本(v2.0.0+)
  2. 右键点击固体方块即可放置
  3. 如仍有问题,检查服务器日志

Q: 如何调整游戏难度?

A: 修改配置文件:

  • 增加难度:缩短 item-interval,加快 border-shrink-interval
  • 降低难度:增加 arena-radius,延长缩圈时间
  • 调整爆炸伤害:修改 explosion-power 参数

Q: 可以在游戏中途加入吗?

A: 只能在准备阶段(30秒倒计时)加入:

  1. 发起者使用 /ripvp start 开始倒计时
  2. 其他玩家使用 /ripvp join 加入
  3. 倒计时结束后无法加入

Q: 服务器关闭时出现错误?

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 配置

API 使用

注册自定义物品过滤器

// 在 ItemRandomizer 中添加自定义逻辑
public static Material getRandomItem() {
    // 你的过滤逻辑
}

添加自定义事件

// 在 GameManager.triggerRandomEvent() 中添加
private void triggerRandomEvent() {
    // 你的自定义事件
}

修改奖励系统

// 在 RewardManager 中自定义
public void onPlayerKill(Player killer, Player victim) {
    // 你的奖励逻辑
}

贡献指南

欢迎提交 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

报告 Bug

请在 Issues 页面提交,包含:

  • 服务器版本(Luminol/Paper/Folia)
  • 插件版本
  • 完整错误日志
  • 复现步骤

📜 更新日志

v2.2.0 (2025-11-02)

新增功能

  • 数据库统计系统:支持 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 资源泄露风险

v2.0.1 (2025-10-31)

新增功能

  • 物品权重系统:可在配置文件中设置不同物品的出现概率
    • 管理员可自定义稀有物品和常见物品的掉落频率
    • 支持热重载权重配置(/ripvp reload
    • 预设配置:武器、工具、方块、药水高频率,杂物极低频率
  • 苦力怕雨事件:5只苦力怕从30格高空降落
    • 自带10秒缓降效果,防止摔死
    • 特殊粒子和音效提示
  • 最后一圈事件加速:边界缩小到最小时,随机事件频率提升4倍
    • 正常:30-120秒一次
    • 最后一圈:10-30秒一次
  • 药水随机效果系统:获得的药水自动带有随机有用效果
    • 包括:强效治疗、力量、速度、抗火、隐身等14种效果
    • 适用于普通药水、喷溅药水、滞留药水

重要 Bug 修复

  • 🐛 修复玩家重新加入游戏被强制设为观察者的问题
  • 🐛 修复中途退出的玩家仍被计入存活人数的问题
  • 🐛 修复玩家死亡后仍被判定为获胜者的问题
  • 🐛 修复玩家离线后重新上线导致游戏判定异常的问题
  • 🐛 修复空投信标方块清理后留下小洞的问题
  • 🐛 修复游戏结束后流动的水和岩浆不被清除的问题
  • 🐛 修复玩家药水效果(如金苹果效果)在游戏结束后不被清除的问题
  • 🐛 修复死亡玩家药水效果残留的问题
  • 🐛 改进存活玩家追踪机制,使用独立列表而非依赖游戏模式
  • 🐛 修复游戏结束时对离线玩家的处理

改进与优化

  • ✨ 添加玩家离线事件的完整处理
  • ✨ 优化玩家重新加入游戏的逻辑(存活玩家恢复生存模式)
  • ✨ 玩家离线时自动检查游戏是否结束
  • ✨ 提升游戏状态追踪的可靠性
  • ✨ 空投系统现在会保存并恢复原始方块类型
  • ✨ 游戏结束时扫描并清除竞技场范围内所有流体方块
  • ✨ 事件系统重构为连续触发模式,增加游戏紧张感
  • ✨ 物品权重预设优化:战斗物品权重30-60,杂物权重仅1

v2.0.0 (2025-10-30)

新增功能

  • ✨ 添加游戏准备系统(30秒倒计时)
  • ✨ 添加集合点机制(使用 /ripvp setspawn 设置的坐标)
  • ✨ 添加加入/退出/取消指令
  • ✨ 添加最低人数检查
  • ✨ 添加实时存活人数显示
  • ✨ 添加128格高基岩柱出生系统
  • ✨ 添加平衡性奖励系统
  • ✨ 添加赏金猎人系统
  • ✨ 添加弱者保护系统
  • ✨ 添加空投系统

优化改进

  • 🎯 TNT投掷力度平衡(1.2 -> 0.8)
  • 🎯 边界逐渐缩小而非瞬间
  • 🎯 玩家可穿过边界但受伤
  • 🎯 优化物品黑名单
  • 🎯 胜利消息改为大标题显示
  • 🎯 游戏结束恢复玩家原游戏模式

Bug 修复

  • 🐛 修复 Folia 调度器兼容性问题
  • 🐛 修复末影水晶无法放置的问题
  • 🐛 修复游戏自动重启的问题
  • 🐛 修复边界不重置的问题
  • 🐛 修复玩家瞬间死亡的问题
  • 🐛 修复服务器关闭时的错误

v1.0.0 (初始版本)

  • 🎉 基础随机物品PVP功能
  • 🎉 随机事件系统
  • 🎉 TNT 和末影水晶特殊能力

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。


🙏 致谢

  • Paper Team - 提供优秀的服务器核心
  • Folia Team - 多线程架构支持
  • 所有贡献者 - 感谢你们的贡献!

📞 联系方式


如果这个项目对你有帮助,请给个 ⭐ Star!

Made with ❤️ by [Narcssu-Cursor]