收缩区域

收缩区域

可配置的收缩战斗区域系统,包含随机内部区域、区域外伤害、实时阶段控制,以及半透明无碰撞边界墙。

收缩地带 (Shrinkin Zone)

版本: 1.0.0
Minecraft: 1.21.1
加载器: NeoForge 21.1.243+
Java: 21
作者: Sl0n1kNash
许可证: MIT

可配置的收缩战斗区域系统,具有随机内部区域、区域外伤害、实时阶段控制以及半透明无碰撞边界墙。

用途

Shrinkin Zone 添加了一个由服务器控制的战斗区域,该区域通过一系列可配置的阶段逐渐收缩。初始区域由通用配置定义,而每个后续阶段都会在当前区域内选择一个新目标区域。

此模组适用于生存活动、PvP 比赛、撤离场景以及玩家必须停留在逐渐缩小的可游玩区域内的其他游戏模式。

该区域独立于 Minecraft 原版世界边界实现。其可视墙体不会阻挡移动,服务器会对停留在当前边界外的玩家施加可配置的伤害。

可选的 Shrinkin Zone - Xaero 世界地图附加组件 可以在 Xaero 的世界地图上显示实时区域。

工作原理

  1. 根据配置的中心坐标和初始半径创建初始正方形区域。

  2. 如果配置了收缩阶段,则第一阶段开始并将当前的四个边界向一个更小的目标区域移动。

  3. 对于每个后续阶段,Shrinkin Zone 会在前一区域内选择一个随机点。

  4. 围绕该点构建一个标称目标区域,其宽度和深度均为前一个区域的一半。

  5. 任何会超出前一区域的边界都会被限制在前一区域的边界内。这意味着当内部阶段的随机目标点靠近边缘时,该阶段区域可能会变成矩形。

  6. 所有四个边界在同一阶段持续时间内进行插值。相对的边界可能会移动不同的距离,但仍会在同一时间到达目标位置。

  7. 在当前实时矩形区域外的玩家会受到可配置的周期性伤害。

  8. 在最后一个配置阶段结束后,最终区域保持激活并持续施加区域外伤害,直到被停止或重置。

  9. 客户端会沿着实时区域的边界渲染一个半透明的蓝色垂直墙。

区域外伤害

字段 默认值 描述
intervalTicks 20 当前区域外的玩家受到伤害的频率。20 刻 = 1 秒。
amount 2.0 每次间隔造成的伤害。2.0 伤害单位 = 1 颗心。
damageCreative false 创造模式玩家是否可以受到区域伤害。
damageSpectators false 旁观模式玩家是否可以受到区域伤害。

阶段列表

phases = [600, 300, 180, 120, 60, 30, 10]

每个数字代表一个阶段的持续时间(以秒为单位)。

区域设置

字段 默认值 描述
autoStart true 在适合世界状态时自动启动一个新区域。
dimension minecraft:overworld 区域生效的维度。
centerX 0 初始区域中心 X 坐标。
centerZ 0 初始区域中心 Z 坐标。
initialRadius 1000 初始半边长(以方块为单位)。初始完整边长为 initialRadius × 2。
announcePhases true 广播阶段开始和最终区域消息。

版本 1.0.0 未更改配置格式。

命令

/zone 命令需要权限等级 2。

命令 描述
/zone start 从配置的初始值启动一个新区域。
/zone stop 停用当前区域、其墙体以及区域伤害。
/zone reset 恢复配置的初始边界并保持区域为停用状态。
/zone next 立即完成当前阶段并推进到下一个目标。
/zone status 打印当前阶段、实时边界、目标边界、目标点、大小和剩余阶段时间。

多人游戏与持久化

服务器对区域状态、阶段计时、目标生成和伤害具有权威性。客户端接收同步的区域数据以进行视觉渲染。

区域状态与世界一起存储,因此一场进行中的比赛可以在服务器重启后继续。客户端和服务器应使用相同版本的 Shrinkin Zone。

兼容性

  • Minecraft 1.21.1
  • NeoForge 21.1.243 或 1.21.1 分支内的更新版本
  • Java 21
  • 专用服务器和内置服务器
  • 客户端远程渲染模组可以与区域墙共存;该墙使用自身的距离淡出效果,不会延长原版相机裁剪距离。
  • 可选的 Shrinkin Zone - Xaero 世界地图附加组件 可以在 Xaero 的世界地图上显示实时区域。