先拂百科

MC城建交通命令服务器

用户工具

站点工具


系统:红绿灯

红绿灯(先拂)

本文介绍的是先拂的基岩版原版命令实现的红绿灯。商弦的Java版Denizen插件驱动的红绿灯参阅红绿灯

先拂公路的路口使用命令驱动自动变化的红绿灯。该项技术经过多次迭代已趋于完善,是先拂自主研发的独家技术之一。

第三代(当前)

红绿灯的功能藉由其下方地下的盔甲架及中央的两组命令方块实现。

每个红绿灯盔甲架有两个标签、六个记分项。

统一标签

标签hlt为所有红绿灯盔甲架共有,供计时器识别。

样式标签

标签hlt<1:字符串><2:字符串><3:字符串>决定红绿灯的形状、方向、朝向。

<1>

  • 无:竖排
  • h:横排

<2>

  • 无:方灯
  • -t:左转
  • -f:右转
  • -r:调头

<3>

  • N:朝南
  • P:朝北
  • X:朝西
  • T:朝东

变灯参数

记分板T1T2TO的值决定了红绿灯的变灯时间。其中 $$0\leq T_1<T_2\leq59\\TO\in \{0,1\}$$ 记当前秒数(虚拟玩家时间记分板)为$t$,则$TO=1$的红绿灯,运行效果为:

$t\in$ boje 灯色
$[T_1, T_2-2)$ -1 绿
$[T_2-2, T_2)$ 0
$[T_2, 60)\cup [0, T_1)$ 1

$TO=0$的红绿灯,运行效果为:

$t\in$ boje 灯色
$[T_2, 60)\cup [0, T_1-2)$ -1 绿
$[T_1-2, T_1)$ 0
$[T_1, T_2)$ 1

中控原理

红绿灯盔甲架的T1s记分板记为$T_{1s}$,T2s记为$T_{2s}$;计时器命令方块每秒执行命令,使得 $$T_{1s}=T_1-t \\ T_{2s}=T_2-t$$

决色命令方块每秒根据$TO$及$T_{1s}$和$T_{2s}$的值来为boje赋值。

加载命令方块每秒根据boje的值及样式标签来加载对应状态的红绿灯(/structure load …)。

第二代

在路口附近设控制所,安放一系列命令方块,以/scoreboard test …/structure load …串联来实现红绿灯功能。其缺点是需要输入大量命令,各灯的红、黄、绿状态都需要一个单独的命令方块来实现,且/structure load …命令中需要使用绝对坐标,安装起来很麻烦。但优点是自由度最高,且不受土建限制,故地下没有空间的、变灯规则复杂的路口仍需使用第二代红绿灯。

桓枋路口执鲁二路口升琨路口厚亭桥使用第二代红绿灯。

第一代

在路口附近设控制所,安放一系列命令方块及红绿灯模板,以/scoreboard test …/clone …串联来实现红绿灯功能。

邯郸路口石仙大街口执鲁三路口使用第一代红绿灯;程军路东口为丁字路口时曾经使用第一代红绿灯,变为十字路口后废除。

其他设计

先拂历史上还有一些红绿灯系统的其他设计,因各种原因没有实装。

第0代

这只是一个设计原型,并不兼容实际道路。

原型保存在康今附近。

第2.8代

第三代的一个开发版。采用切换式而非区间式。

第2.9代

功能与第三代同。但使用了长达十几个命令方块的链,比较占中央的空间。

本文没有完成。

评论

请输入您的评论. 可以使用维基语法:
 
系统/红绿灯.txt · 最后更改: 2022/11/14 21:06 由 臤徘斯