Mirrora [English]
在 Minecraft 服务器里创建真实的镜子,玩家站到镜子前,能看到自己(以及其他所有在场玩家)的实时镜像,包括姿态、装备、朝向和挥手动作。
如果在使用中遇到问题或者想一起交流,欢迎加入 1104261361 群聊。
- 镜子是世界里固定存在的一整片矩形区域,贴在墙上,重启服务器后依然存在。
- 只有站在镜子正面、且落在选定的矩形范围与生效深度内的玩家才会被反射。走出范围或绕到镜子背面,镜像会立刻消失。
- 同一时间站在镜子范围内的所有玩家都能互相看到对方(以及自己)的镜像。
- 镜像会实时同步位置、朝向、姿态(站立/蹲伏/游泳等)、装备、主副手挥动动作、举手状态(吃东西/喝药/格挡/拉弓)。
- 镜子仅对区域内的玩家客户端可见,区域外的玩家不会收到任何相关数据包,不会看到镜子背后有个玩家实体。
- (可选)镜子还能反射玩家这一侧的方块,包括楼梯、箱子、告示牌等带朝向的方块,效果就像照镜子看到身后的场景一样。
利用 1.21.9+ 新增的 mannequin 实体作为镜像载体,通过 packetevents 直接向客户端发送实体数据包,不在服务端创建任何真实实体,也不依赖客户端资源包或模组。
镜像的坐标是玩家位置关于镜面所在平面做反射计算得出的,只反转垂直于墙面的那个水平坐标轴,朝向做镜像翻转,姿态和装备直接复制。
方块反射的原理类似:定期扫描镜面前(玩家所在一侧)与镜子范围/深度一致的方块区域,将每个方块的坐标和朝向按同样的规则镜像后,通过 BlockChange 数据包伪造发送给区域内的观察者,使其看起来像是镜子里的反射;方块变化会低频轮询同步,观察者离开区域后会立即恢复为真实方块状态。这套机制不会在服务端实际改变任何方块,纯粹是发给客户端的视觉欺骗。
启用后,镜子会把玩家所在一侧、与镜子矩形范围及深度一致的方块也反射到镜子内,效果和照镜子看到身后的家具、墙面一样:
- 支持带朝向的方块(楼梯、箱子、炉子、门、告示牌、生物头颅等),镜像时会自动翻转朝向。
- 方块反射的刷新频率独立于玩家反射,默认较低(20 tick 一次),因为方块变化没有玩家动作那么频繁。
- 可以设置方块探测范围的膨胀格数,让反射范围比镜子本身的矩形更大(仅膨胀宽度/高度方向,不影响深度)。
- 出于性能考虑,单个镜子反射的方块总数有上限,超过上限会跳过该镜子的方块反射(不影响玩家镜像)。
- 该功能默认关闭,需要在配置文件中手动开启。
# 语言
language: zh_cn
mirror:
# 创建镜子时未指定深度时使用的默认值(格)
default-depth: 8.0
# 深度允许设置的最大值(格)
max-depth: 32.0
# 反射刷新间隔(tick),数值越小越流畅,但开销越大
tick-interval: 1
block-reflection:
# 是否启用方块反射(镜面前方块范围与镜子范围/深度一致)
enabled: false
# 方块反射刷新间隔(tick),建议远大于 mirror.tick-interval,因为方块变化频率低
tick-interval: 20
# 单个镜子允许反射的最大方块数量,超过该数量的镜子将跳过方块反射
max-blocks: 4096
# 方块探测范围在镜子宽度/高度方向各自向外膨胀的格数(不影响深度)
expand: 0
wand:
# 选区工具使用的物品材质
material: BLAZE_ROD- Paper 1.21.9 或更高版本(依赖
mannequin实体,需要 1.21.9+ 的服务端核心与客户端) - packetevents 2.13.0 或更高版本(作为前置插件安装)
- 安装 packetevents 前置插件到
plugins/目录。 - 将编译好的
Mirrora.jar放入plugins/目录。 - 启动服务器。
创建镜子需要 mirrora.admin 权限,普通玩家使用镜子(站到镜子前看到镜像)不需要任何权限。
/mirror wand
获得一把 "镜子选区工具",用于框选一片墙面作为镜子的范围。
拿着选区工具:
- 左键 点击墙面上的一个方块,作为选点 1
- 右键 点击墙面上的另一个方块,作为选点 2
两个点必须点在同一朝向的墙面上(比如都点在朝北的墙上),否则无法创建镜子。两点之间围成的矩形就是镜子的范围。
/mirror create <id> [深度]
id:镜子的唯一标识,用于之后管理(删除、查看列表)深度(可选):镜子正面生效的距离,单位为格,默认 8,最大 32。玩家必须站在这个距离以内才能看到/被反射。
示例:
/mirror create test-mirror 6
/mirror list # 列出所有已创建的镜子
/mirror remove <id> # 移除指定镜子
| 命令 | 说明 | 所需权限 |
|---|---|---|
/mirror wand |
获取选区工具 | mirrora.admin |
/mirror create <id> [深度] |
用当前选区创建镜子 | mirrora.admin |
/mirror remove <id> |
移除指定镜子 | mirrora.admin |
/mirror list |
列出所有镜子 | mirrora.admin |
/mirror reload |
重新加载配置文件 | mirrora.admin |
| 权限节点 | 说明 | 默认值 |
|---|---|---|
mirrora.admin |
允许创建、移除、管理镜子区域 | op |
镜子创建完成后,任何玩家站到镜子范围内都能看到镜像,不需要额外权限。
镜子的区域信息会保存在 plugins/Mirrora/mirrors.yml,插件启动时自动加载,创建/删除镜子时立即写入磁盘。

