基本信息
我的世界Java版本
平台
运行环境
分类
详情信息
方块躲猫猫 (BlockHideAndSeek)
内测版本 | 仅供测试体验
欢迎加入内测!本插件目前处于积极开发阶段,部分功能仍在完善中。如果你遇到任何问题或有任何建议,欢迎通过文末的QQ群联系我们。
一、责任说明
⚠️ 必读 ⚠️
-
本插件为内测版本,严禁用于生产环境(正式服)! 因内测版本可能存在未知漏洞、性能问题或数据兼容性问题,若擅自用于生产环境造成的一切损失,由使用者自行承担。
-
本插件仅供内测人员学习、测试与体验使用,未经授权,禁止搬运、二次分发或用于商业用途。
-
内测期间的游戏数据(积分、排行榜、存档等)可能会因版本更新而被重置或清除,敬请谅解。
-
使用本插件即视为您已阅读并同意上述条款。如有违反,开发者保留随时终止您内测资格的权利。
二、使用须知
运行环境
-
服务端类型: Paper/Purpur 1.19.4 ~ 26.x(推荐,必须)(其他核心未经测试,低版本的Spigot可能会出现部分问题)
-
JDK 版本: Java 17 或更高
-
依赖: 无需额外插件依赖(已内置所需库)
安装方法
-
将插件 Jar 文件放入服务端的
plugins/文件夹中。 -
首次启动后,插件会自动在
plugins/BlockHideAndSeek/目录下生成默认配置文件。 -
根据下方【配置文件】说明,按需修改
config.yml和地图配置。 -
重启服务端或使用
/bhs reload重载配置。
权限说明
| 权限节点 | 默认归属 | 说明 |
|---------|---------|------|
| bhs.player | 所有玩家 | 普通玩家基础权限(加入/离开游戏、查看状态等) |
| bhs.vip | OP | VIP 玩家权限(更多候选方块、积分加成等) |
| bhs.admin | OP | 管理员权限(强制开始、重载配置等) |
| bhs.admin.perf | OP | 性能监控权限(查看 TPS、线程状态、性能面板) |
提示:权限节点继承关系为
bhs.admin→bhs.admin.perf→bhs.admin.notify。
三、玩法介绍
核心玩法
方块躲猫猫 是一款多人迷你游戏,玩家分为两大阵营:
-
躲藏方(Hider):伪装成地图中的一个方块,躲避抓人方的搜寻。
-
抓人方(Seeker):利用弓箭和各种道具找出并淘汰躲藏方。
游戏流程
一场完整的游戏通常经历以下几个阶段:
-
等待阶段(Waiting):玩家陆续加入,等待人数达到最低要求。
-
等待倒计时(Waiting Countdown):人数足够后进入 60 秒倒计时,期间仍可加入。
-
模式公布(Mode Announce):系统随机公布本场游戏模式。
-
准备阶段(Preparing):分配队伍,抓人方暂时隔离,躲藏方开始观察地图。
-
躲藏阶段(Hiding):躲藏方获得候选方块列表,选择伪装并寻找合适位置。停止移动 6 秒后可“实体化”为真实方块,更难被发现。
-
抓人阶段(Seeking):抓人方被放出,可以使用弓箭射击可疑方块。射中躲藏方即可将其淘汰。此阶段躲藏方也可使用道具反击。
-
结束阶段(Ending):某一方全部被淘汰,或时间耗尽,游戏结束,结算积分并选出 MVP。
关于游戏模式
目前插件共设计了 3 种游戏模式:
| 模式 | 状态 | 简介 |
|------|------|------|
| 经典模式(Classic) | ✅ 已开放 | 最经典的躲猫猫玩法,目前唯一可供游玩的模式。 |
| 感染模式(Infection) | 🚧 开发中 | 一名感染者对抗所有幸存者!被箭矢击中会被转化为感染者。 |
| 黑夜迷雾模式(Fog of Night) | 🚧 开发中 | 黑暗笼罩战场,视野受限,需要利用光源和照明弹搜寻躲藏方。 |
当前内测期间,仅「经典模式」可以正常游玩。 其他模式正在紧张开发中,后续版本将逐步开放,敬请期待!
四、所有功能介绍
1. 基础命令
所有命令均以 /bhs 为前缀,别名:/blockhideandseek、/hideandseek、/has。
| 命令 | 权限 | 说明 |
|------|------|------|
| /bhs join | bhs.player | 加入当前游戏队列 |
| /bhs leave | bhs.player | 离开当前游戏 |
| /bhs status | bhs.player | 查看当前游戏状态(阶段、地图、人数、倒计时) |
| /bhs start | bhs.admin | 管理员专用,强制开始游戏 |
| /bhs reload | bhs.admin | 管理员专用,重载配置文件 |
| /bhs tps | bhs.admin.perf | 查看服务器 TPS 和 MSPT |
| /bhs threads | bhs.admin.perf | 查看线程状态统计 |
| /bhs perf | bhs.admin.perf | 查看完整性能监控面板 |
| /bhs help | 无 | 显示帮助信息 |
2. 数据查询命令 (/bhs data)
| 子命令 | 权限 | 说明 |
|--------|------|------|
| /bhs data me | bhs.data | 查看个人历史统计数据 |
| /bhs data top [类型] | bhs.data.top | 查看排行榜 |
| /bhs data help | 无 | 显示数据查询帮助 |
排行榜类型:streak(连胜)、wins(胜场)、time(游戏时长)、mvp(MVP 次数)。
查询有 30 秒冷却时间,避免频繁查询造成性能压力。
3. 伪装系统
-
候选方块:普通玩家 3 个,VIP 玩家 6 个。可通过商店刷新列表。
-
虚拟方块:手持候选方块物品时,你身边会出现一个 BlockDisplay 实体跟随移动,其他玩家看到的是方块而非你本人。
-
实体化:停止移动 6 秒后,若脚下为空气,你会自动“融入”环境,变成该位置的真实方块。此时你进入旁观者模式,可以通过物品栏中的【视角切换】(末影之眼)在自由视角和方块视角间切换。
-
解除实体化:一旦移动,立即恢复虚拟方块状态。
-
更换伪装:花费 5 积分可随时更换当前候选方块。
4. 商店系统
游戏过程中按特定键(或命令)可打开商店 GUI,使用游戏内积分购买道具。
躲藏方可购买:
| 道具 | 默认价格 | 效果 |
|------|---------|------|
| 更换伪装列表 | 20 | 刷新快捷栏中的候选方块 |
| 分身陷阱 | 80 | 放置一个与你伪装相同的实体方块,抓人方射中后爆炸并淘汰附近抓人方 |
| 加速卷轴 | 25 | 移动速度提升 75%,持续 10 秒(仅虚拟方块状态可用) |
| 传送门 | 120 | 传送至预设安全点 |
| 干扰器 | 60 | 半径 10 米内,抓人方的追踪钟表失效 15 秒 |
| 闪光弹 | 30 | 半径 10 米内,抓人方失明 3 秒 |
| 自爆炸弹 | 100 | 被抓时与敌人同归于尽(每局限 1 次) |
| 净化血清 | 150 | 感染模式专属,投掷感染者将其净化为幸存者 |
抓人方可购买:
| 道具 | 默认价格 | 效果 |
|------|---------|------|
| 暴露所有躲藏方 | 35 | 立即暴露所有躲藏方的位置 |
| 追踪钟表 | 100 | 显示最近躲藏方的距离和方向,共 5 次使用,冷却 15 秒 |
| 箭矢 | 2 | 获得 1 支箭 |
| 透视药水 | 80 | 所有躲藏方发光 8 秒,仅自己可见 |
| 陷阱 | 20 | 放置隐蔽陷阱,躲藏方触发后减速并强制发光 |
| 防爆盔甲 | 20 | 抵挡一次爆炸伤害 |
| 地震锤 | 200 | 半径 8 米范围内直接淘汰所有躲藏方 |
| 照明弹 | 20 | 黑夜迷雾模式专属,照亮 10 格范围,强制实体方块脱离 |
商店价格和物品可用性可通过地图配置文件单独调整。
5. 积分系统
-
初始积分:每局开始时每人 10 积分。
-
存活积分:抓人阶段每 15 秒发放一次,躲藏方 5~20 分,抓人方 6~15 分,随时间递增。
-
VIP 加成:VIP 玩家获得 1.2 倍积分加成。
-
积分用于在商店购买道具。
6. MVP 系统
每局结束后,系统会根据玩家在本局中的表现计算 MVP 分数,分别评选出躲藏方 MVP 和抓人方 MVP。
躲藏方计分因素:存活时间、实体化成功次数、分身击杀、自爆击杀、商店购买、胜利存活加分;被淘汰或提前离开会扣分。
抓人方计分因素:淘汰人数、连杀奖励、拆除陷阱、追踪击杀、暴露击杀、胜利存活加分;被陷阱击杀或 AFK 会扣分。
平局打破:击杀数 > 存活时间 > 商店购买次数 > VIP 身份 > 随机。
MVP 奖励:货币 200,赛季经验 500。
7. 排行榜
支持 4 种排行榜,数据支持本地缓存与 Redis 分布式缓存:
-
最多连胜榜(
streak) -
胜场榜(
wins) -
游戏时长榜(
time) -
MVP 次数榜(
mvp)
默认展示前 10 名,每小时自动刷新一次。
8. 数据存储
-
数据库模式:支持 MySQL(HikariCP 连接池),适合多服互通场景。数据库异常时自动降级到 JSON 模式。
-
JSON 模式:每个玩家独立 JSON 文件,异步读写,保留最近 3 个备份,损坏自动恢复。
-
Redis 缓存:支持跨服数据同步与排行榜缓存。
9. 地图与世界管理
-
地图配置:存放于
plugins/BlockHideAndSeek/maps/,每个地图独立一个.yml文件。 -
必需字段:
name(地图名)、game-world(游戏世界名)、game-mode(适用模式)。 -
世界备份:服务端启动时自动备份游戏世界到
GameBackup/。 -
世界重置:每局结束后可选择重置世界,从备份恢复原始地形。
10. 监控与告警(管理员)
插件内置了完整的性能监控模块,管理员可通过命令查看:
-
TPS / MSPT 监控
-
线程状态监控
-
内存使用监控
-
日志聚合与错误追踪
-
自动告警:当 TPS、MSPT、内存或线程队列超过阈值时,自动向管理员发送通知。
11. 安全与验证
-
联网验证:插件启动时需联网验证。
-
时间校验:插件内置授权时间校验(北京时间),到期后自动禁用插件。
-
后台实时检查:每秒检查一次时间有效性,并检测系统时间篡改行为。
-
文件完整性校验:防止核心文件被非法修改。
五、配置文件详解
所有配置文件位于
plugins/BlockHideAndSeek/目录下。修改后使用/bhs reload重载,或重启服务端生效。
注意:插件内置自动校验机制,若填写了明显不合理的值(如负数、超出安全范围),会自动修正为默认值。
5.1 主配置文件 (config.yml)
基础游戏设置 (game.*)
| 配置项 | 默认值 | 说明 | 建议范围 |
|--------|--------|------|----------|
| game.min-players | 4 | 开始游戏所需最低人数 | 2 ~ 10 |
| game.max-players | 20 | 单局人数上限 | 10 ~ 50 |
| game.waiting-countdown | 60 | 等待大厅倒计时(秒) | 30 ~ 120 |
| game.prepare-time | 15 | 准备阶段时长(秒) | 10 ~ 30 |
| game.hide-time | 60 | 躲藏阶段时长(秒) | 30 ~ 120 |
| game.seek-time | 480 | 抓人阶段时长(秒) | 180 ~ 600 |
| game.vip-multiplier | 1.2 | VIP 积分倍率 | 1.0 ~ 2.0 |
| game.score-interval | 15 | 存活积分发放间隔(秒) | 10 ~ 30 |
等候室与大堂配置
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
等候室和大堂的坐标必须在对应世界中为安全位置,避免玩家窒息或摔落。
伪装与实体化设置
| 配置项 | 默认值 | 说明 | 建议范围 |
|--------|--------|------|----------|
| solidify-time | 6 | 静止后实体化所需秒数 | 3 ~ 10 |
| hitbox-multiplier | 1.5 | 虚拟方块碰撞箱放大倍率 | 0.5 ~ 3.0 |
| disguise-change-cost | 5 | 更换伪装消耗积分 | 0 ~ 100 |
| normal-block-count | 3 | 普通玩家候选方块数 | 1 ~ 10 |
| vip-block-count | 6 | VIP 玩家候选方块数 | 1 ~ 15 |
| disguise.use-hide-player-api | true | 是否使用隐藏玩家API | true / false |
伪装方块列表 (disguise-blocks)
disguise-blocks:
- STONE
- GRASS_BLOCK
- OAK_PLANKS
- BRICKS
- SANDSTONE
- RED_WOOL
- OAK_LOG
- COBBLESTONE
- DIRT
- SNOW_BLOCK
- GLASS
- BOOKSHELF
- WHITE_CONCRETE
- IRON_BLOCK
- GOLD_BLOCK
必须使用有效的 Bukkit
Material名称。建议保持至少 10 种以上,避免过于单一。
积分与暴露设置
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| hide-score-min | 5 | 躲藏方每次存活积分的最小值 |
| hide-score-max | 20 | 躲藏方每次存活积分的最大值 |
| seek-score-min | 6 | 抓人方每次存活积分的最小值 |
| seek-score-max | 15 | 抓人方每次存活积分的最大值 |
| initial-score | 10 | 玩家进入游戏时的初始积分 |
| expose-notice-seconds | 10 | 系统暴露位置前的预告时间(秒) |
| final-minute-expose-interval | 15 | 最后阶段自动暴露的间隔(秒) |
| expose-firework-time-1 | 300 | 第一次烟花暴露的剩余时间(秒),0 禁用 |
| expose-firework-time-2 | 180 | 第二次烟花暴露的剩余时间(秒),0 禁用 |
| last-countdown-seconds | 30 | 游戏结束前最后倒计时秒数 |
商店配置 (shop-prices.* 与 shop-items.*)
物品价格表:
| 配置键 | 默认值 | 对应道具 |
|--------|--------|----------|
| shop-prices.reroll-blocks | 20 | 更换伪装列表 |
| shop-prices.decoy | 80 | 分身陷阱 |
| shop-prices.speed-scroll | 25 | 加速卷轴 |
| shop-prices.portal | 120 | 传送门 |
| shop-prices.jammer | 60 | 干扰器 |
| shop-prices.flash-bang | 30 | 闪光弹 |
| shop-prices.self-destruct | 100 | 自爆炸弹 |
| shop-prices.expose-firework | 35 | 暴露所有躲藏方 |
| shop-prices.compass | 100 | 追踪钟表 |
| shop-prices.arrows | 2 | 箭矢 |
| shop-prices.xray-potion | 80 | 透视药水 |
| shop-prices.trap | 20 | 陷阱 |
| shop-prices.blast-armor | 20 | 防爆盔甲 |
| shop-prices.quake-hammer | 200 | 地震锤 |
物品开关 (shop-items.<道具名>):设为 false 可在商店中禁用该道具。例如:
shop-items:
quake-hammer: false # 禁用地震锤
self-destruct: false # 禁用自爆炸弹
商店 GUI 大小:
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| shop-size | 9 | 商店 GUI 槽位数量,必须是 9 的倍数:9/18/27/36/45/54 |
音效配置 (sounds.*)
所有音效值必须是有效的 Bukkit Sound 枚举名称。常用配置:
| 配置项 | 默认值 | 触发时机 |
|--------|--------|----------|
| sounds.hide-start | ENTITY_PLAYER_LEVELUP | 躲藏阶段开始 |
| sounds.seek-start | ENTITY_WITHER_SPAWN | 抓人阶段开始 |
| sounds.expose | ENTITY_FIREWORK_ROCKET_BLAST | 暴露位置 |
| sounds.buy-success | BLOCK_DISPENSER_DISPENSE | 商店购买成功 |
| sounds.buy-fail | ENTITY_ENDERMAN_TELEPORT | 商店购买失败 |
| sounds.eliminate | ENTITY_LIGHTNING_BOLT_THUNDER | 玩家被淘汰 |
| sounds.countdown-tick | BLOCK_NOTE_BLOCK_HAT | 倒计时滴答 |
MVP 评分配置 (mvp-scoring.*)
mvp-scoring:
enabled: true # 是否启用 MVP 评分
tie-breaker: # 平局决胜优先级
- KILLS
- SURVIVAL_TIME
- SHOP_PURCHASES
- IS_VIP
- RANDOM
reward:
currency: 200 # MVP 奖励货币
season-exp: 500 # MVP 奖励赛季经验
hider:
base-score: 100
survival-win: 50
survive-per-second: 0.2
solidify-bonus: 5
decoy-kill-seeker: 40
self-destruct-kill: 60
shop-purchase: 2
vip-multiplier: 1.1
penalties:
arrow-eliminated: -30
leave-early: -100
seeker:
base-score: 100
eliminate-hider: 50
trap-defuse: 15
compass-track-kill: 10
kill-streak-base: 10
kill-streak-window-seconds: 15
shop-purchase: 2
vip-multiplier: 1.1
penalties:
killed-by-trap: -40
afk-penalty: -10
afk-penalty-seconds: 30
leave-early: -100
服主可根据服务器玩法风格调整各项分值权重,例如鼓励进攻则提高
eliminate-hider和decoy-kill-seeker。
游戏模式权重 (game-modes.*)
game-modes:
classic:
enabled: true
chance: 60 # 权重占比(%)
infection:
enabled: true
chance: 20
duration-seconds: 300 # 感染模式专属:持续时间
fog-of-night:
enabled: true
chance: 20
hide-seconds: 30 # 黑夜迷雾专属:躲藏时间
seek-seconds: 360 # 黑夜迷雾专属:抓人时间
当前内测期间,即使启用了感染模式和黑夜迷雾模式,也仅经典模式可正常游玩。建议将
infection和fog-of-night的enabled设为false,避免玩家困惑。
其他常用配置
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| maps-enabled | true | 是否从 maps/ 目录加载地图配置 |
| group-mode | false | 是否启用跨服群组模式(BungeeCord) |
| main-lobby-server | "lobby" | 群组模式下的主大厅服务器名 |
| server-name | "§e§lStarMast §7Network" | 记分板显示的服务器名称 |
| performance.arrow-detection-interval | 2 | 箭矢检测间隔(秒),值越小越精确但越耗性能 |
| end-game-cleanup-seconds | 30 | 游戏结束后的结算展示时间(秒) |
| end-game-commands | [] | 每局结束后执行的控制台命令列表 |
5.2 数据库配置 (database.yml)
插件支持 JSON 文件存储(默认)和 MySQL 数据库存储 两种模式。
快速使用 JSON 模式(默认,无需修改)
database:
enabled: false # 保持 false 即可使用 JSON 文件存储
数据将保存在 plugins/BlockHideAndSeek/data/ 目录下,每个玩家一个 JSON 文件,自动备份,损坏可恢复。
启用 MySQL 数据库模式
database:
enabled: true
mysql:
host: "localhost"
port: 3306
database: "blockhideandseek"
username: "root"
password: "你的密码"
table-prefix: "bhs_" # 多服共用数据库时建议加前缀区分
use-ssl: false
properties:
useUnicode: "true"
characterEncoding: "utf8mb4"
serverTimezone: "Asia/Shanghai"
redis:
enabled: false # 如需跨服排行榜/缓存,可启用 Redis
host: "localhost"
port: 6379
password: ""
database: 0
key-prefix: "bhs:"
连接池配置
pool:
max-size: 10
min-idle: 2
timeout-ms: 30000
idle-timeout-ms: 600000
max-lifetime-ms: 1800000
数据库异常时会自动降级到 JSON 模式,确保服务器不崩溃。恢复后可手动切回。
5.3 地图配置文件 (maps/<地图名>.yml)
每个地图独立一个文件,存放于 plugins/BlockHideAndSeek/maps/。
最小可用示例
# 文件位置: plugins/BlockHideAndSeek/maps/mymap.yml
name: "我的躲猫猫地图" # 地图显示名称(必填)
game-mode: "classic" # 适用模式: classic / infection / fog-of-night / all
enabled: true # 是否启用此地图
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
portal-location:
world: "game_world" # 传送门目标位置(购买传送门后到达)
x: 150.0
y: 70.0
z: 150.0
覆盖全局配置
地图配置文件可以覆盖 config.yml 中的部分设置,实现不同地图的不同玩法:
# 覆盖游戏时间
game:
hide-time: 90 # 0 表示使用全局配置
seek-time: 600
last-countdown-seconds: 45
mvp-multiplier:
hider: 1.2
seeker: 1.0
# 覆盖商店价格
shop-prices:
quake-hammer: 300
portal: 80
# 禁用某些商店物品
shop-items:
quake-hammer: false
self-destruct: false
# 地图专属伪装方块
disguise-blocks:
- STONE
- GRASS_BLOCK
- OAK_PLANKS
# 开局时执行的命令
commands:
on-start:
- "say 游戏开始啦!"
地图配置中显式定义的值优先于全局
config.yml。若设为0或不填,则使用全局默认值。
5.4 监控与性能配置
监控配置位于 config.yml 中,服主可按需调整告警阈值。
性能告警阈值
performance:
enabled: true
check-interval-ticks: 20 # 检查间隔(ticks),20 = 1秒
alerts:
tps:
warning: 18.0 # TPS 低于此值发出警告
critical: 15.0 # TPS 低于此值发出严重告警
mspt:
warning: 50 # 每 tick 毫秒数警告阈值
critical: 100 # 每 tick 毫秒数临界阈值
memory-percent:
warning: 70 # 内存使用百分比警告
critical: 85 # 内存使用百分比临界
thread-queue:
warning: 100 # 线程队列长度警告
critical: 500 # 线程队列长度临界
notification:
cooldown-seconds: 60 # 告警冷却时间(秒)
broadcast-to-admins: true # 是否向管理员广播
日志与通知配置
logging:
enabled: true
filter:
suppression-interval-ms: 5000 # 高频日志抑制间隔(毫秒)
aggregate-errors: true # 是否聚合错误日志
summary-interval-seconds: 5 # 聚合摘要输出间隔(秒)
delog:
enabled: true
log-file: "delog.log"
retention-days: 7 # Delog 日志保留天数
notification:
enabled: true
cooldown-seconds: 60 # 通知冷却时间
channels:
ingame: true # 游戏内聊天通知
console: true # 控制台通知
5.5 配置优先级说明
当同一配置项在多处定义时,优先级从高到低为:
-
地图配置文件 (
maps/<地图名>.yml) — 地图专属覆盖 -
独立功能配置 (
database.yml,monitoring.yml等) -
全局主配置 (
config.yml) -
硬编码默认值 — 最后兜底
建议:通用设置放在
config.yml,不同地图的差异化设置(如时长、价格、方块列表)放在对应的地图配置文件中。
六、常见问题(FAQ)
Q: 为什么插件启动时提示"需要联网使用"?
A: 本插件采用在线验证机制,启动时需要连接网络进行授权校验。请确保服务器能够访问外网。
Q: 玩家加入后看不到伪装的方块怎么办?
Q: 可以修改截止时间吗?
A: 不可以。截止时间是插件内置的授权有效期,到期后需获取新版本。
Q: 游戏数据会保存多久?
A: 内测期间数据可能随版本更新而重置,请勿将内测数据视为永久存档。
七、参与内测与反馈
如果你在使用过程中遇到 Bug、有任何建议,或者只是想和其他内测玩家交流,欢迎加入我们的官方交流群:
-
QQ 群号:
1093939989 -
群名称: 星桅 - 交流群
-
加群时请说明来源: 「BlockHideAndSeek 内测 - MineBBS」
进群后请遵守群规,友好交流。你的每一条反馈都会让这款插件变得更好!
八、关于我们
-
插件名称: 方块躲猫猫 (BlockHideAndSeek)
-
作者: 星桅工作室(StarMastStudio)
-
适用版本: Paper 1.19.4 ~ 1.21(JDK 17+)
-
授权声明: 未经授权,禁止搬运或使用此代码产品。
感谢你的参与与支持!

