本篇将一步步教你配置绿萌使用环境,并简单地讲解相关的基础知识。
以下是涉及到的模组汇总:Carpet mod、WorldEdit(创世神)、Tweakeroo、pistorder(或 Tweakmore,本篇用 pistorder 演示。)、Replay mod(可选)。
你大可以跳过本节,但是我依旧建议你阅读本节内容,使用较为先进的工具总归对你的学习和设计有好处的。
打开单人游戏,选择创造模式,创建一个虚空存档。
创建新的世界→世界→世界类型:超平坦→自定义→预设→虚空
![[图 01 一片虚空平台.png]]
如果你出生在一片石头平台上,证明你成功了。
它日后会变成这样子:
![[图 02 被绿萌填满的虚空截图.png]]
当然,鉴于玩家对破基岩科技树的研究,我们可以将预设改为:minecraft:bedrock;minecraft:the_void
如果你想要多层,只要在方块名称后面加上即可()如:minecraft:bedrock*5;minecraft:the_void 便可以模拟五层破基岩环境。
![[图 03 虚空大陆.png]]
当然,为保证生存实装的稳定性,最终都要创建一个正常的世界进行实地测试,一切不进行实地测试就发布的机器,都是对自己和他人不负责任的表现。
在自己的作品经历了一次次炸膛、解体、粘连后,我们找到了比备份更为简单的局部存档利器:结构方块。我们主要使用两个模式:保存模式和加载模式。
![[图 05 结构方块加载模式界面.png]]
![[图 04 结构方块保存模式界面.png]]
我们可以对迭代中的结构多次留档,便于以后回退和 debug,以下是示例:
![[图 06 结构方块留档示例.png]]
在上面保存模式和加载模式的示意图中,保存模式负责留档:上图留档示意的图中,结构方块都是完全一致的保存模式的结构方块 ,以此作为留档区,工作区仅有一个加载模式的结构方块(图中未显示)。
以上仅是对我来说比较舒服的方式,读者可创新思路。
下面会简述 Carpet 的配置,如需更多选择,请参考其他章节,或观看 Carpet 使用教程。
打开你的测试存档,在对话框中输入指令。本小节内容的一经设置,基本不会再更改。
/carpet tntDoNotUpdate true:放置 TNT 时,TNT 不会被红石激活。这使得我们在制作 TNT 复制机时,省去推矿车,或者其他的” 上弹 “方式。
/carpet fillUpdates false:使用 fill、clone、setblock 指令和结构方块时不会造成更新。尤其是解决加载结构后,造成的机器” 乱动 “的困扰。
/carpet creativeNoClip true:创造模式无碰撞,便于我们愉快地穿梭在各种机器结构中,同时解决被粘液块弹走的麻烦。
/carpet structureBlockLimit 48/96/192/256:其中,数值选项用 “/” 隔开。当你需要的结构范围大于结构方块默认的框选范围时,可以考虑此选项。需要注意的是,在实际使用过程中,过大的结构框会造成一定的渲染问题和卡顿,如非必要,默认选项为 48 即可。
/carpet explosionNoBlockDamage true:当你设计和 TNT 有关的结构时,可以把该调试打开, 这使得 TNT 爆炸不会炸坏任何方块;当你需要测试 TNT 是否会破坏预期的范围时,可以设置为 false。
/tick freeze:冻结游戏刻,通常结合下面的/tick step x指令,来观察设计的结构是否按照预期运作。类似于编程中打的调试断点。/tick step x:冻结游戏刻后,该指令可以使游戏前进 x 游戏刻,其中 x 是要前进的游戏刻数。/tick sprint x:类似于/tick warp通常用来长时间测试机器稳定性,或者加速飞行器的到位(便于调试)。/tick unfreeze:解除冻结游戏刻,部分版本使用/tick freeze同时兼顾开关冻结游戏刻。/log tnt:使用此指令可以订阅 TNT 有关的选项。/log tnt full和/log tnt brief:当 TNT 爆炸的时候,告诉你 TNT 的生成位置和爆点位置,在控制 TNT 的爆点时非常有用,我们将在实战篇讲到。/log tnt clear:取消订阅 TNT 有关的选项。/player <Name> spawn:利用假人的第一步,最基本的是测试机器时用来强加载区块。如使用/player yu_xian520 spawn召唤一个名为余弦的假人。/player <name> use:可以让假人使用物品、放置方块或与方块互动,相当于鼠标右键。相同的指令还有/player <name> use once。将假人对准音符盒/栅栏门,可以实现远程开机/步进效果。如使用/player Twisuki use可让 Twisuki 点击一下音符盒 / 栅栏门。player <name> use continous:可以让假人持续使用物品、放置方块或与方块互动。通常用来放基岩机的活塞。使用/player <name> use可以结束放置。本节内容主要涉及//set,//undo,//redo,//stack,//move等指令的使用,提前掌握了的玩家可以跳到下一节。
本小节只讲绿萌设计中最常用的部分。
//set 0不出意外的话,你框选的这片区域已经被替换成了空气。那么,如何恢复这个平台呢?
//undo便可以撤销这一步操作;//redo便可以复原刚刚撤销的操作。//move <Num>//set <Num> <direction>便可让移动该区域的方块,如使用//move 1 up 来向上移动一格,不使用方向便默认玩家朝向为移动方向。使用//move <Num> -e可以保留实体。可以使用这个指令来将制作的模块移动到合适的位置。
//stack <Num>//move基本类似,只是由” 移动多少格 “的功能转变为” 复制多少次 “。便不再过多赘述。受限于我的笔力,以上内容肯定有点抽象,你可以框选后输入相关的指令试一试,或者搜索相关的 WE 教程。
x+c,在禁用类选项中,可以找到禁用侦测器选项,我建议你在键盘的右侧设置一个快捷键,方便我们在 debug 时随时打开。打开此选项后,侦测器就变成了 “石头”,不再响应更新。当我们使用 WE 或者其他工具,对绿萌结构进行操作时,可避免侦测器激活造成的不可预知的结果。也可以防止我们手残对侦测器造成更新。
这是设计绿萌的必备模组之一,前面的章节也讲过 pistorder 和活塞到位的相关规律,这里只对绿萌相关的做相关简述。
空手右击普通活塞,活塞上会显示 能否推动(如图上的 推动√,不能推动则显示 推动 ×),而被推动的方块,则从小到大显示方块到位的先后顺序。有助于我们压缩机器和快速 debug。
Replay mod 对于主播或者录过 mc 视频的玩家而言并不罕见 ,它能够记录所加载区块,在录制所在的时间段内发生的事。
正是因为 Replay mod 的情景复现功能,我们可以通过回放后拉取进度条的方式 debug。通常在问题复现时间太长,或使用/tick freeze debug 比较困难的情况下使用这个小妙招。
前面的章节我们已经了解了游戏刻的基本内容,本节更倾向于介绍游戏刻在绿萌中的应用。
为了照顾未学习过时序章节的读者,这里简述下比较重要的基本内容:
本章所有内容都将抛弃红石刻(RedTick,简称 rt,1rt = 2gt) 的使用, 因为我们后面将涉及到一定的奇数刻的时序关系,使用游戏刻方便计算。
对于绿萌来说,游戏刻可以用来指示各个布线的先后运动关系。对于大部分情况来讲,我们仅仅知道它们运动的先后顺序即可。如下,是我复现的我的第一台绿萌机器,一台以活塞链条作为延迟的盾构机。
图 活塞延迟式盾构机
读者可以顺带记住的是,上方黏性活塞一小节延迟为 6gt,下方普通活塞延迟为 4gt。
了解过绿萌的玩家都知道,信号的传导从上方的黏性活塞链开始,至下方的普通活塞链结束;此结构被用来作为盾构机等 TNT 延迟; 熟悉了上方的信号延迟后,我们可以计算出上图的总延迟为多个黏性活塞和普通活塞相加,即多个 6gt 和多个 4gt 相加。
当然,经过简单的计算我们也知道,以上的活塞延迟排列组合,我们能创造出 4gt 及以上,所有偶数 gt 的延迟。那么,我们如何创造出 2gt 的延迟呢? 这似乎有些麻烦,我们通常只能把 6gt 的延时改为 4gt 的延时来提早 2gt,反之亦然。
既然已经有了偶数 gt 的延迟,那么,如何创造出奇数 gt 的延迟? 这看似困难的事,实际上简单得多!我们回到上图 4gt 延时的活塞结构中,我们可以将其改造为基于红石块的传动结构,红石块的关系,活塞会到位后的下一 gt 就触发,这样,我们就创造了 3gt 的信号延迟。
图 两种活塞延迟的示意图(拼图,用两张图将其二合一)
分析一下具体的情况:对于上图侦测器的结构,gt0 活塞和侦测器到位后,gt1 侦测器激活,gt2 活塞伸出,gt3 活塞伸出中,gt4 被推动的方块到位;对于下图红石块的结构,gt0 活塞到位后,gt1 活塞伸出,gt2 活塞伸出中,gt3 被推动的方块到位。
结合以上 4gt 和 6gt 的延迟单元,我们可以创造出 3gt 和 7gt 及以上的延迟单元。
下面我们讨论一种奇妙的 7gt 延迟技巧:我们回到上图中 6gt 延时的结构,我们如图在斜上方放一个可充能方块,并再加一个侦测器对其 qc,我们就创造出了一个简单巧妙的 7gt 延时,这个在 kades 的三向破基岩中亦有应用:
图 7gt 延时结构,附 kades 的基岩机应用部分。
我们仍然可以分析一下具体的情况:先欠着。
当然,根据上段原理,我们可以创造出 11gt 周期的飞行器,或是 11gt 的二步进结构,应用在无沟地吞上简直是点睛之笔。
图 11gt 周期的飞行器和二步进结构
当然,在很多情况下,我们不需要如此精确地计算延迟,很多绿萌结构需要下一次启动前复位即可,正是因为很多结构所谓的 “钝感”,便有了较为巧妙的布线风格:借力。
自我入坑绿萌之初,就听说过类似于这样一句话:
厉害的布线往往应用着大量的借力。
正如上一节所言,借力就是把对时间不敏感的结构 A,通过其他结构 B 甚至毫不相关的结构 C 复位甚至直接替代结构 A 的布线手段。很拗口是吧?让我们直接看图:
图 借力示意图,最好 GIF
由图可知,上面的无延迟连杆的活塞,在触发后,他的黏性活塞由下面一个 可能作为其他用处的无延迟连杆复位,这就是借力, 这里可以作为一个比较浅显的例子。
再结合上面的游戏刻部分,我们可以以机器运行的某一刻作为时间原点(类似于电路分析中设定的电位的零参考点。),每一个模块甚至每一个活塞都能得到一个 gt 数标记,这样我们能准确分析每一个部分的运动先后顺序。
图 我的 14m 高前弹无沟地吞
如图是我的 14m 前弹无沟地吞出发站部分,我们以 TNT 缓存输出的信号部分作为 0gt 点,可以测出弹射飞行器的时间间隔为 7gt。(当然,标记点不同,测出的时间也不同)。
除了对机器的大小或者时间有极端要求的情况以外,大部分时候并不需要如此理性地计算时序,本小节只是提供了一个理性的分析思路,以满足极端情况下的需求。
图 无沟地吞的借力单元,GIF
本小节可直接参考前面章节的 b36 到位时间分析,本小节主要讲我们如何利用 b36 的到位时间来压缩机器。直观起见,这里依然用 pistorder 来辅助讲解。
(咕咕咕)