- 版权类型
- 原创
- 插件中文名称
- 方块躲猫猫
- 插件英文名称
- BlockHideAndSeek
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- Leaves
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
[MD]
# 方块躲猫猫 (BlockHideAndSeek)
> **Paper / Folia 1.19.4+ 高性能迷你游戏插件** | 作者:StarMastStudio | 版本:0.1.1
---
## 目录
- [插件概述](#插件概述)
- [功能特性](#功能特性)
- [安装指南](#安装指南)
- [配置说明](#配置说明)
- [游戏模式详解](#游戏模式详解)
- [使用教程](#使用教程)
- [常见问题解答](#常见问题解答)
- [更新日志](#更新日志)
---
## 插件概述
### 什么是方块躲猫猫?
**方块躲猫猫** 是一款专为 Paper 1.19.4+ 及 Folia 服务端打造的高性能迷你游戏插件。它将经典的"躲猫猫"玩法与 Minecraft 世界巧妙结合——**躲藏方**可以伪装成各种方块,融入环境中躲避追捕;**猎人**则需要利用弓弩和各类道具,在限定时间内找出并"消除"所有躲藏者。
### 主插件与附属插件
本项目由多个组件构成,协同工作以实现完整的游戏体验:
| 组件 | 类型 | 说明 |
|------|------|------|
| **BlockHideAndSeek** | 主插件 (Paper/Folia 服务端) | 核心游戏逻辑、管理、商店、数据存储等所有游戏功能 |
| **StarMastMonitor** | 独立插件 (Spigot/Paper/Folia) | 生产级服务器性能监控,支持 1.8~1.21+ |
| **BlockHideAndSeek-Velocity** | 附属插件 (Velocity 代理端) | 跨服匹配、玩家传送、服务器状态同步(暂不对外提供) |
| **Matchmaker** | 独立服务 (Java 进程) | 匹配机服务,协调多服匹配(暂不对外提供) |
| **Lobby** | 附属插件 (Limbo/Purpur) | 大厅端匹配客户端(暂不对外提供) |
> **提示**:主插件可独立运行于单服务器模式。StarMastMonitor 为独立的性能监控插件,可单独安装使用。其他组件仅面向需要跨服匹配的服务器网络提供。
---
## 功能特性
### 主插件核心特性
#### 游戏机制
- **三种游戏模式**
- **经典模式** — 躲藏方伪装成方块,猎人用弓箭找出他们
- **感染模式** — 一名感染者对抗所有幸存者,被箭矢击中会被转化
- **黑夜迷雾模式** — 黑暗笼罩战场,视野受限,利用光源和照明弹搜寻躲藏方
- **完整的游戏阶段**:等待 → 模式公布 → 准备 → 躲藏 → 搜寻 → 结束
- **智能队伍分配**:自动平衡躲藏方与猎人人数
- **伪装系统**:躲藏方可伪装成多种方块(如石头、草方块、木板、砖块等),并支持定期更换
- **暴露机制**:搜寻阶段后期或特定条件下,躲藏方会被周期性暴露位置
- **碰撞箱放大**:虚拟方块碰撞箱放大倍率可调(默认 1.5 倍),使方块更易被击中
- **实体方块转换**:伪装方块 6 秒后实体化,可被物理碰撞
#### 三种游戏模式详解
##### 经典模式
- 默认游戏模式,抽选概率 60%
- 躲藏方伪装成方块,利用环境隐蔽
- 猎人使用弓剑和道具追踪并消除躲藏方
- 熟悉道具系统后可以打出精妙的配合
##### 感染模式
- 抽选概率 20%
- **感染者**:开局随机指定一名玩家作为感染者,拥有速度加成和抗性提升
- 击杀 3 名玩家后获得速度 II
- 击杀 5 名玩家后获得抗性提升
- **幸存者**:其他玩家为幸存者,需躲避感染者的追捕
- **净化血清**:幸存者可购买血清道具,将感染者变回幸存者
- **免疫护盾**:购买后免疫感染 3 秒
- **警报系统**:每 30 秒提示幸存者剩余人数和感染者位置
- **游戏结束**:全部幸存者被感染(感染者胜利)或幸存者坚持到时间结束(幸存者胜利)
- **MVP 评分**:根据感染转化数、净化次数、生存时间等综合计算
##### 黑夜迷雾模式
- 抽选概率 20%
- **环境效果**:
- 时间锁定为午夜(18000 tick)
- 强制降雨,视野极度受限
- 闪电随机生成(每 4~6 秒,间隔随机)
- 闪光弹每 60 秒照亮全场
- **商店专属物品**:
- **夜视药水** — 40 积分,持续 10 秒,冷却 15 秒
- **灯笼** — 30 积分,持续 20 秒,冷却 30 秒,提供 15 级光照
- **感知技能** — 100 积分,每 5 秒显示附近躲藏方位置
- **照明弹** — 20 积分,照亮指定区域
- **游戏阶段**:躲藏阶段 30 秒,搜寻阶段 360 秒
- **推荐客户端模组**(增强黑夜体验):
- **DarkAroundMe** — 模拟真实黑暗,伸手不见五指
- **Truly Dark** — 深度黑暗效果,洞穴和黑夜更加真实
#### 商店系统
内置丰富的道具商店,支持 14 种功能性物品:
| 物品 | 类型 | 效果 |
|------|------|------|
| 加速卷轴 | 消耗品 | 短时间内提升移动速度 |
| 传送门 | 消耗品 | 瞬间传送至指定位置 |
| 干扰器 | 消耗品 | 干扰猎人的追踪能力 |
| 闪光弹 | 消耗品 | 致盲周围所有玩家 |
| 自爆炸弹 | 消耗品 | 对周围玩家造成范围伤害 |
| 透视药水 | 消耗品 | 短时间内透视附近躲藏方 |
| 陷阱 | 消耗品 | 在脚下布置陷阱 |
| 防爆盔甲 | 装备 | 减免爆炸伤害 |
| 地震锤 | 武器 | 造成范围震动效果 |
| 更换伪装物品 | 消耗品 | 重新随机伪装方块列表 |
| 分身陷阱 | 消耗品 | 生成假的分身迷惑敌人 |
| 暴露所有躲藏方 | 消耗品 | 短时间内暴露所有躲藏方位置 |
| 追踪钟表 | 装备 | 追踪最近的躲藏方方向 |
| 箭矢 | 弹药 | 补充弓弩弹药 |
#### 数据存储系统
- **多模式存储**:支持本地 JSON 文件存储和 MySQL 数据库存储
- **Redis 缓存**:可选用 Redis 加速数据读写
- **排行榜系统**:连胜榜、胜场榜、游戏时长榜、MVP 次数榜
- **玩家统计**:记录总场数、胜场、败场、连胜、MVP 次数等
- **跨服数据同步**:支持跨服务器间的数据共享(需搭配代理使用)
- **自动备份**:支持定时备份玩家数据
#### 代理/跨服支持
- **多代理兼容**:支持 BungeeCord 和 Velocity 代理端
- **自动检测**:插件可自动检测代理类型
- **跨服匹配**:玩家可跨服务器进行匹配对战
- **游戏状态广播**:跨服务器同步游戏状态信息
- **玩家传送**:支持跨服务器玩家传送
#### 性能监控
> **性能监控功能已分离为独立插件 StarMastMonitor**,提供更丰富的功能:
> - TPS/MSPT/内存/线程实时监控
> - Prometheus metrics 导出与 Grafana 集成
> - Discord/Slack Webhook 告警通知
> - HTTP API 查询接口
>
> 请安装 **StarMastMonitor** 插件后使用 `/monitor` 命令查看服务器性能。
#### 日志系统
- **智能日志系统**
- 高频方法日志过滤(自动抑制重复日志)
- 日志聚合与摘要输出
- 错误日志自动收集与上报
- **Delog 调试系统**:专为开发者设计的调试日志系统
#### MVP 计算
- 自动计算每局游戏的 MVP(最佳玩家)
- 分别统计躲藏方 MVP 和猎人 MVP
- 支持自定义 MVP 积分倍率
#### 地图系统
- 多地图支持,每张地图独立配置
- 地图配置包含:游戏世界、出生点、猎人躲藏地点等
- 每张地图可独立覆盖商店价格和物品开关
- 支持地图级游戏模式覆盖
- 自动世界备份
#### 记分板系统
- 实时显示游戏状态信息
- 可自定义服务器名称显示
#### 服务端兼容性
| 服务端类型 | 兼容性 | 说明 |
|-----------|--------|------|
| Paper 1.19.4+ | ✅ 完全兼容 | 推荐使用 |
| Spigot 1.19.4+ | ✅ 完全兼容 | 基础功能可用 |
| Purpur 1.19.4+ | ✅ 完全兼容 | 推荐使用 |
| Folia 1.19.4+ | ✅ 完全兼容 | 自动检测使用区域调度器 |
| Mohist / Arclight | ⚠️ 部分兼容 | 混合端可能存在兼容问题 |
### BungeeCord 附属插件特性
- **跨服玩家传送**:在服务器间无缝传送玩家
- **消息路由**:在服务端和代理端之间路由插件消息
- **服务器管理器**:跟踪和管理游戏子服务器状态(大厅、游戏服务器)
- **跨服匹配服务**:提供跨服务器的玩家匹配功能
- **服务器健康检查**:定期检查下游服务器的健康状态
- **负载均衡**:自动将玩家分配到负载较轻的游戏服务器
- **可配置的游戏服务器列表**:灵活配置大厅和游戏服务器
---
## 安装指南
### 系统要求
| 项目 | 要求 |
|------|------|
| Minecraft 服务端 | Paper 1.19.4+、Folia 1.19.4+ 或兼容分支 |
| Java | JDK 17 或更高版本 |
| 可选依赖 | MySQL 8.0+、Redis 6.0+ |
| 可选代理 | BungeeCord 或 Velocity |
### 安装步骤
#### 1. 安装主插件
1. 下载 `BlockHideAndSeek-0.1.1.jar`
2. 将 JAR 文件放入服务端的 `plugins/` 目录
3. 启动服务器,插件会自动生成配置文件和目录结构
4. 根据需要修改 `plugins/BlockHideAndSeek/config.yml` 配置文件
5. 使用 `/bhs reload` 重载配置,或重启服务器
#### 2. 安装 BungeeCord 附属插件(可选)
> 仅在需要跨服匹配功能时需要安装
1. 下载 `BlockHideAndSeek-Bungee-0.1.0.jar`
2. 将 JAR 文件放入 BungeeCord 代理端的 `plugins/` 目录
3. 启动或重启 BungeeCord 代理端
4. 根据需要修改 `plugins/BlockHideAndSeek-Bungee/config.yml`
#### 3. 配置依赖关系
```
BungeeCord 代理端
├── BlockHideAndSeek-Bungee (附属插件)
│
└── 下游子服务器
├── server_lobby_1 (大厅服务器)
│ └── BlockHideAndSeek (主插件)
├── server_game_1 (游戏服务器)
│ └── BlockHideAndSeek (主插件)
└── server_game_2 (游戏服务器)
└── BlockHideAndSeek (主插件)
```
#### 4. 验证安装
启动服务器后,在控制台或游戏中输入 `/bhs help`,如果显示帮助信息则安装成功。
---
## 配置说明
### 主配置文件 `config.yml`
位于 `plugins/BlockHideAndSeek/config.yml`
#### 基本设置
```yaml
# 地图开关
maps-enabled: true
# 游戏基础设置
game:
min-players: 4 # 游戏最少玩家数
max-players: 20 # 游戏最大玩家数
waiting-countdown: 60 # 等待阶段倒计时(秒)
prepare-time: 15 # 准备阶段时长(秒)
hide-time: 60 # 躲藏阶段时长(秒)
seek-time: 480 # 搜寻阶段时长(秒)
vip-multiplier: 1.2 # VIP 玩家积分倍率
score-interval: 15 # 积分发放间隔(秒)
```
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `game.min-players` | 4 | 开始游戏所需的最少玩家数 |
| `game.max-players` | 20 | 单局游戏最大容纳玩家数 |
| `game.waiting-countdown` | 60 | 等待阶段倒计时(最小值 10 秒) |
| `game.prepare-time` | 15 | 准备阶段持续时间 |
| `game.hide-time` | 60 | 躲藏阶段持续时间(经典模式) |
| `game.seek-time` | 480 | 搜寻阶段持续时间(经典模式) |
| `game.vip-multiplier` | 1.2 | VIP 玩家积分获取倍率 |
| `game.score-interval` | 15 | 每次发放积分的间隔秒数 |
#### 等候室与大厅
```yaml
waiting-room:
world: "waiting_world"
x: 0.0
y: 64.0
z: 0.0
yaw: 0.0
pitch: 0.0
lobby:
world: "lobby_world"
x: 0.0
y: 64.0
z: 0.0
```
| 参数 | 说明 |
|------|------|
| `waiting-room.world` | 等候室所在世界 |
| `waiting-room.x/y/z` | 等候室出生坐标 |
| `lobby.world` | 大厅所在世界 |
| `lobby.x/y/z` | 大厅返回坐标 |
#### 伪装方块列表
```yaml
disguise-blocks:
- "STONE"
- "GRASS_BLOCK"
- "OAK_PLANKS"
- "BRICKS"
- "SANDSTONE"
```
可自由添加或移除方块,支持所有 `Material` 枚举值。
#### 商店配置
```yaml
shop-size: 9 # 商店 GUI 大小(9 或 27)
# 商店物品价格
shop-prices:
speed-scroll: 25
portal: 120
jammer: 60
flash-bang: 30
self-destruct: 100
xray-potion: 80
trap: 20
blast-armor: 20
quake-hammer: 200
reroll-blocks: 20
decoy: 80
expose-firework: 35
compass: 100
arrows: 2
```
| 参数 | 说明 |
|------|------|
| `shop-size` | 商店界面大小,支持 9(单行)或 27(三行) |
| `shop-prices` | 各物品的默认价格 |
| `shop-items` | 各物品是否可购买 |
#### 积分系统
```yaml
hide-score-min: 5 # 躲藏方每次获得的最小积分
hide-score-max: 20 # 躲藏方每次获得的最大积分
seek-score-min: 6 # 猎人每次获得的最小积分
seek-score-max: 15 # 猎人每次获得的最大积分
initial-score: 10 # 玩家初始积分
```
#### 暴露机制
```yaml
expose-notice-seconds: 10 # 暴露前提示时间(秒)
final-minute-expose-interval: 15 # 最后一分钟暴露间隔(秒)
expose-firework-time-1: 300 # 第一次烟花暴露时间点(秒)
expose-firework-time-2: 180 # 第二次烟花暴露时间点(秒)
last-countdown-seconds: 30 # 最后倒计时秒数
```
#### 伪装相关
```yaml
solidify-time: 6 # 实体方块转换时间(秒)
hitbox-multiplier: 1.5 # 碰撞箱放大倍率
disguise-change-cost: 5 # 伪装更换消耗积分
normal-block-count: 3 # 普通玩家候选方块数
vip-block-count: 6 # VIP 玩家候选方块数
```
#### 游戏模式配置
游戏模式配置位于 `game-modes` 节点下,每个模式独立配置:
```yaml
# 游戏模式基础配置
game-modes:
# 经典模式
classic:
enabled: true
chance: 60 # 抽选概率(百分比)
# 感染模式
infection:
enabled: true
chance: 20 # 抽选概率(百分比)
duration-seconds: 300 # 感染模式持续时间(秒)
infection-speed-threshold: 3 # 感染速度提升所需击杀数
immunity-shield: # 免疫护盾道具配置
enabled: true
price: 120
duration-seconds: 3
cooldown-seconds: 60
progression:
speed2-threshold: 3 # 达到速度 II 所需击杀数
resistance-threshold: 5 # 达到抗性提升所需击杀数
mvp:
infection-conversion-score: 5.0 # 感染转化得分
purification-score: 8.0 # 净化得分
survival-per-second: 0.1 # 生存每秒得分
initial-infected-bonus: 3.0 # 初始感染者加分
alert:
interval-seconds: 30 # 警报提示间隔(秒)
end-reward:
survivor-base: 10 # 幸存者基础奖励
survivor-per-alive: 5 # 每名存活幸存者额外奖励
infected-per-conversion: 2 # 每次感染转化奖励
# 黑夜迷雾模式
fog-of-night:
enabled: true
chance: 20 # 抽选概率(百分比)
hide-seconds: 30 # 躲藏阶段时长(秒)
seek-seconds: 360 # 搜寻阶段时长(秒)
time-value: 18000 # 游戏内时间(18000 = 午夜)
rain-enabled: true # 是否降雨
rain-intensity: 1.0 # 降雨强度
lightning-min-interval-seconds: 4 # 闪电最小间隔(秒)
lightning-max-interval-seconds: 6 # 闪电最大间隔(秒)
flash-interval-seconds: 60 # 闪光弹间隔(秒)
```
#### 模式专属商店物品
```yaml
# 模式专属商店物品
shop:
mode-items:
# 黑夜迷雾模式专属物品
fog-of-night:
flare:
enabled: true
price: 20 # 照明弹价格
night-vision:
enabled: true
price: 40 # 夜视药水价格
duration-seconds: 10
cooldown-seconds: 15
lantern:
enabled: true
price: 30 # 灯笼价格
duration-seconds: 20
cooldown-seconds: 30
light-level: 15
perception:
enabled: true
price: 100 # 感知技能价格
check-interval-seconds: 5
# 感染模式专属物品
infection:
serum:
enabled: true
price: 150 # 净化血清价格
max-uses: 2
immunity-shield:
enabled: true
price: 120 # 免疫护盾价格
```
#### 群组模式
```yaml
group-mode: false # 是否启用群组模式
main-lobby-server: "lobby" # 主大厅服务器名称
```
#### 记分板服务器名称
```yaml
server-name: "§e§lStarMast §7Network"
```
#### 音效配置
```yaml
sounds:
hide-start: "ENTITY_PLAYER_LEVELUP"
seek-start: "ENTITY_WITHER_SPAWN"
expose: "ENTITY_FIREWORK_ROCKET_BLAST"
buy-success: "BLOCK_DISPENSER_DISPENSE"
buy-fail: "ENTITY_ENDERMAN_TELEPORT"
eliminate: "ENTITY_LIGHTNING_BOLT_THUNDER"
team-assigned: "ENTITY_EXPERIENCE_ORB_PICKUP"
countdown-tick: "BLOCK_NOTE_BLOCK_HAT"
```
#### 游戏编号设置
```yaml
game-id-prefix: "BHS" # 游戏编号前缀
game-id-random-length: 5 # 随机部分长度
```
#### 日志系统
```yaml
logging:
enabled: true
filter:
high-frequency:
- "updateBlockDisplayPosition"
- "checkSolidify"
- "handlePlayerMove"
- "updateScoreboard"
suppression-interval-ms: 5000
aggregate-errors: true
summary-interval-seconds: 5
```
#### 性能告警配置
```yaml
performance:
enabled: true
check-interval-ticks: 20
alerts:
tps:
warning: 18.0 # TPS 警告阈值
critical: 15.0 # TPS 严重阈值
mspt:
warning: 50 # MSPT 警告阈值(毫秒)
critical: 100 # MSPT 严重阈值(毫秒)
memory-percent:
warning: 70 # 内存警告阈值(%)
critical: 85 # 内存严重阈值(%)
thread-queue:
warning: 100 # 线程队列警告阈值
critical: 500 # 线程队列严重阈值
```
### 数据库配置文件 `database.yml`
位于 `plugins/BlockHideAndSeek/database.yml`
#### MySQL 配置
```yaml
database:
enabled: false # 启用后将使用 MySQL 存储数据
mysql:
host: "localhost"
port: 3306
database: "blockhideandseek"
username: "root"
password: "password"
table-prefix: "bhs_"
use-ssl: false
properties:
useUnicode: true
characterEncoding: "utf8mb4"
serverTimezone: "Asia/Shanghai"
```
#### Redis 配置
```yaml
redis:
enabled: false
host: "localhost"
port: 6379
password: ""
database: 0
timeout-ms: 5000
key-prefix: "bhs:"
```
#### 缓存与连接池配置
```yaml
cache:
local-ttl-seconds: 300 # 本地缓存有效期
redis-ttl-seconds: 3600 # Redis 缓存有效期
leaderboard-refresh-minutes: 60 # 排行榜刷新间隔
warmup-on-start: true # 启动时预热缓存
pool:
max-size: 10 # 最大连接数
min-idle: 2 # 最小空闲连接数
timeout-ms: 30000 # 连接超时
idle-timeout-ms: 600000 # 空闲连接超时
max-lifetime-ms: 1800000 # 最大生命周期
backup:
enabled: true # 启用自动备份
interval-hours: 24 # 备份间隔(小时)
retention-count: 7 # 保留备份数量
path: "backups" # 备份存储路径
```
### 代理配置文件 `proxy.yml`
位于 `plugins/BlockHideAndSeek/proxy.yml`
```yaml
proxy:
type: AUTO # 代理类型:AUTO(自动检测)、BUNGEECORD、VELOCITY、NONE
server:
id: "bhs-01" # 服务器唯一标识
name: "§e躲猫猫 #1" # 服务器显示名称
matching:
enabled: true # 启用跨服匹配
timeout-seconds: 60 # 匹配超时(秒)
min-players: 2 # 匹配最少玩家数
max-players: 16 # 匹配最多玩家数
servers:
- id: "bhs-01"
name: "躲猫猫 #1"
- id: "bhs-02"
name: "躲猫猫 #2"
```
### 地图配置文件
位于 `plugins/BlockHideAndSeek/maps/` 目录下,每张地图一个 `.yml` 文件。
```yaml
# 是否启用此地图(设为 false 则跳过加载)
enabled: true
name: "示例地图" # 地图名称
# 等候室位置(可选,不设置则使用全局配置)
waiting-room:
world: "waiting_world"
x: 0.0
y: 64.0
z: 0.0
yaw: 0.0
pitch: 0.0
# 游戏世界配置
game-world:
world: "game_world" # 游戏世界名称
spawn:
x: 100.0
y: 65.0
z: 100.0
# 猎人躲藏地点
seeker-hideout:
world: "game_world"
x: 200.0
y: 65.0
z: 200.0
yaw: 0.0
pitch: 0.0
# 游戏阶段覆盖(可选,不设置则使用全局配置)
game:
hide-time: 60
seek-time: 480
expose-firework-time-1: 300
expose-firework-time-2: 180
last-countdown-seconds: 30
# 地图特有伪装方块(可选,覆盖全局配置)
disguise-blocks:
- "STONE"
- "OAK_PLANKS"
# 地图特有商店价格覆盖(可选)
shop-prices:
speed-scroll: 30
portal: 150
# 地图特有商店物品开关(可选)
shop-items:
speed-scroll: true
portal: true
# 传送门目标位置(可选)
portal-location:
world: "game_world"
x: 150.0
y: 70.0
z: 150.0
```
---
## 游戏模式详解
### 经典模式
#### 玩法流程
1. **模式公布**:游戏开始前公布本局游戏模式
2. **准备阶段(15秒)**:玩家传送到游戏世界,猎人进入躲藏点
3. **躲藏阶段(60秒)**:躲藏方寻找位置伪装成方块,猎人等待
4. **搜寻阶段(480秒)**:猎人出动,寻找并消除躲藏方
5. **游戏结束**:全部躲藏方被消除(猎人胜利)或时间结束(躲藏方胜利)
#### 策略建议
- **躲藏方**:不要躲在明显的位置,混入自然方块中;利用商店道具干扰猎人
- **猎人**:注意观察异常方块(朝向不对、悬空、重复等);购买追踪钟表定位躲藏方
### 感染模式
#### 玩法流程
1. **模式公布**:公布本局为感染模式
2. **准备阶段**:玩家传送到游戏世界
3. **游戏阶段(300秒)**:
- 开局随机指定一名感染者
- 感染者追逐并感染其他玩家
- 被感染者变为感染者阵营
- 幸存者可购买净化血清逆转感染者
4. **游戏结束**:全部玩家被感染(感染者胜利)或至少一名幸存者存活到时间结束
#### 感染者进阶机制
| 击杀数 | 效果 |
|--------|------|
| 3 人 | 获得速度 II |
| 5 人 | 获得抗性提升 |
#### 策略建议
- **感染者**:优先追击落单玩家,利用速度优势逐个击破
- **幸存者**:抱团行动,互相掩护;购买免疫护盾和净化血清
### 黑夜迷雾模式
#### 玩法流程
1. **模式公布**:公布本局为黑夜迷雾模式
2. **准备阶段(15秒)**:玩家传送到游戏世界
3. **躲藏阶段(30秒)**:黑夜中躲藏方迅速寻找位置
4. **搜寻阶段(360秒)**:黑暗笼罩,猎人需要利用光源搜寻
5. **游戏结束**:全部躲藏方被消除或时间结束
#### 环境效果
- **时间**:锁定为午夜(18000 tick),伸手不见五指
- **天气**:强制降雨,进一步降低视野
- **闪电**:每 4~6 秒随机生成闪电,短暂照亮战场
- **闪光弹**:每 60 秒自动闪光,短暂照亮全场
#### 专属商店物品
| 物品 | 价格 | 效果 |
|------|------|------|
| 夜视药水 | 40 积分 | 持续 10 秒夜视,冷却 15 秒 |
| 灯笼 | 30 积分 | 持续 20 秒光照,冷却 30 秒,亮度 15 级 |
| 感知技能 | 100 积分 | 每 5 秒显示附近躲藏方位置 |
| 照明弹 | 20 积分 | 照亮指定区域 |
#### 推荐客户端增强模组
为了获得最佳的黑夜迷雾体验,建议在客户端安装以下模组:
| 模组 | 作用 | 推荐度 |
|------|------|--------|
| **DarkAroundMe** | 模拟真实黑暗环境,让黑夜真正黑暗 | ⭐⭐⭐⭐⭐ |
| **Truly Dark** | 深度黑暗效果,洞穴和夜晚更加真实 | ⭐⭐⭐⭐⭐ |
> **注意**:即使不安装客户端模组,黑夜迷雾模式也能正常游玩。安装模组可以大幅提升视觉体验和沉浸感。
#### 策略建议
- **躲藏方**:利用黑暗掩护,选择阴影处伪装;购买夜视药水观察环境
- **猎人**:充分利用闪电光照的时间;感知技能是追踪躲藏方的关键;灯笼可以提供持续照明
---
## 使用教程
### 基础命令
| 命令 | 权限 | 说明 |
|------|------|------|
| `/bhs help` | `bhs.player` | 显示帮助信息 |
| `/bhs join` | `bhs.player` | 加入游戏 |
| `/bhs leave` | `bhs.player` | 离开游戏 |
| `/bhs status` | `bhs.player` | 查看游戏状态 |
| `/bhs match` | `bhs.match` | 加入匹配队列 |
| `/bhs match cancel` | `bhs.match` | 取消匹配 |
| `/bhs match status` | `bhs.match` | 查看匹配状态 |
| `/bhs match info` | `bhs.match` | 查看匹配详情 |
| `/bhs data me` | `bhs.data` | 查看个人游戏数据 |
| `/bhs data top <type>` | `bhs.data.top` | 查看排行榜 |
| `/bhs start` | `bhs.admin` | 强制开始游戏 |
| `/bhs reload` | `bhs.admin` | 重载配置文件 |
> **性能监控**:请安装 **StarMastMonitor** 插件后使用 `/monitor` 命令查看服务器性能。
### 权限节点
| 权限节点 | 默认 | 说明 |
|----------|------|------|
| `bhs.player` | 所有人 | 普通玩家权限 |
| `bhs.vip` | OP | VIP 玩家权限(积分加成、更多候选方块) |
| `bhs.admin` | OP | 管理员权限 |
| `bhs.admin.notify` | OP | 管理员通知权限(继承 `bhs.admin`) |
| `bhs.match` | 所有人 | 允许加入匹配队列 |
| `bhs.match.crossserver` | 所有人 | 允许跨服匹配 |
| `bhs.match.admin` | OP | 匹配管理权限 |
| `bhs.proxy.status` | OP | 查看代理状态 |
| `bhs.data` | 所有人 | 查询个人数据 |
| `bhs.data.top` | 所有人 | 查询排行榜 |
### 排行榜类型
| 类型 | 说明 |
|------|------|
| `streak` | 最多连胜排行 |
| `wins` | 胜场排行 |
| `time` | 游戏时长排行 |
| `mvp` | MVP 次数排行 |
### 使用示例
#### 玩家快速上手
```
1. 输入 /bhs join → 加入当前服务器的游戏
2. 等待游戏开始 → 自动分配队伍
3. 躲藏阶段 → 寻找合适位置伪装成方块
4. 搜寻阶段 → 利用商店道具进行对抗
5. 游戏结束 → 查看排名和统计数据
```
#### 管理员操作
```
# 强制开始游戏
/bhs start
# 重载配置(修改 config.yml 后使用)
/bhs reload
# 性能监控(需安装 StarMastMonitor 插件)
/monitor status
/monitor tps
/monitor memory
```
#### 使用匹配系统
```
# 加入匹配队列
/bhs match
# 查看匹配状态
/bhs match status
# 查看匹配详情(排队位置、预计等待时间)
/bhs match info
# 取消匹配
/bhs match cancel
```
#### 数据查询
```
# 查看个人游戏数据
/bhs data me
# 查看连胜排行榜
/bhs data top streak
# 查看 MVP 排行榜
/bhs data top mvp
```
---
## 常见问题解答
### Q: 插件加载失败,提示"配置文件加载失败"?
A: 检查 `config.yml` 的 YAML 语法是否正确,确保缩进和格式无误。也可删除配置文件后重启服务器重新生成。
### Q: 如何添加更多伪装方块?
A: 在 `config.yml` 的 `disguise-blocks` 列表中添加对应方块材质名称(如 `"DIAMOND_BLOCK"`),然后使用 `/bhs reload` 重载配置。
### Q: 跨服匹配无法正常工作?
A: 请检查以下步骤:
1. 确保 BungeeCord 代理端已安装 `BlockHideAndSeek-Bungee` 附属插件
2. 确认 `proxy.yml` 中的代理类型配置正确(设为 `AUTO` 或 `BUNGEECORD`)
3. 确保下游子服务器的 `proxy.yml` 中 `matching.enabled` 为 `true`
4. 检查 BungeeCord 的 `config.yml` 中服务器列表配置是否正确
### Q: 商店物品价格为 0 或无法购买?
A: 检查 `config.yml` 中的 `shop-prices` 和 `shop-items` 配置,确认价格不为 0 且物品已启用。如果使用地图配置,请检查地图文件中的价格覆盖设置。
### Q: 数据库连接失败?
A: 检查 `database.yml` 中的连接参数是否正确,确认 MySQL 服务已启动且可从服务器访问。如不需要数据库,可将 `database.enabled` 设为 `false` 使用本地文件存储。
### Q: 如何重置玩家数据?
A: 如果使用本地存储(JSON),删除 `plugins/BlockHideAndSeek/data/` 目录下的对应文件。如果使用 MySQL,清空对应数据表即可。
### Q: 游戏开始后玩家无法移动或操作?
A: 确保游戏世界已正确加载,且世界类型为普通世界(不是超平坦、下界等特殊世界类型)。检查 `maps/` 目录下的地图配置文件中的 `game-world` 参数是否正确。
### Q: 性能告警频繁触发?
A: 可在 `config.yml` 的 `performance` 部分调整告警阈值,或关闭不需要的监控项目。
### Q: 插件在 Folia 上无法加载?
A: 插件已内置 Folia 兼容支持,启动时自动检测服务端类型。如果遇到问题,请确保使用 Paper 1.19.4+ 或 Folia 的兼容分支。
---
## 更新日志
### 0.1.1
- **Folia 兼容支持**
- 新增调度器兼容层,自动检测 Paper/Folia 服务端
- 无需额外配置,即插即用
- **API 版本兼容**
- 兼容 Paper(及衍生服务端)/Folia 1.19.4 ~ 1.21.x
- **黑夜迷雾模式完善**
- 环境设置(时间锁定、强制降雨、闪电生成)
- 专属商店物品(夜视药水、灯笼、感知技能、照明弹)
- 夜视效果阶段分配(躲藏方/猎人)
- **感染模式完善**
- 感染者进阶机制(速度 II、抗性提升)
- 幸存者警报系统
- 免疫护盾道具
- 净化血清道具
- MVP 评分适配
- 结局奖励调整
### 0.1.0 (初始开发版本)
- **核心功能**
- 实现完整的游戏生命周期管理(等待 → 准备 → 躲藏 → 搜寻 → 结束)
- 三种游戏模式:经典模式、感染模式、黑夜迷雾模式
- 方块伪装系统,支持自定义伪装方块列表
- 14 种商店物品,支持 GUI 购买
- 暴露机制(定时暴露、烟花暴露、最后一分钟暴露)
- MVP 计算与追踪系统
- 多地图支持,每张地图独立配置
- **存储系统**
- JSON 本地文件存储
- MySQL 数据库存储(可选)
- Redis 缓存加速(可选)
- 排行榜系统
- 玩家数据统计
- 跨服数据同步
- 自动备份
- **代理/跨服支持**
- BungeeCord 代理支持
- Velocity 代理支持
- 代理类型自动检测
- 跨服匹配系统
- 游戏状态跨服广播
- **监控系统**
- TPS/MSPT 实时监控
- 内存使用率监控
- 线程状态监控
- 性能告警(支持多级阈值)
- 智能日志过滤与聚合
- Delog 调试日志系统
- 游戏内通知与控制台通知
- **BungeeCord 附属插件(暂不对外提供)**
- 跨服玩家传送
- 消息路由
- 服务器管理(大厅/游戏服务器)
- 跨服匹配服务
- 服务器健康检查
---
## 版权声明
> 未经授权,禁止搬运、反编译此代码产品。
>
> 内测交流群:**1093939989(QQ)**
>
> © 2025~2026 StarMastStudio. All rights reserved.
[/MD]