#01 前置知识与树场的基本结构
#1.1 前置知识
这里是开始树场研究的一些基本内容的简述。出于简化考虑,这部分会包含一些“错误”的内容,关于更详细的说明,请参考GTMC的更新理论与时序理论部分。
#1.1.1 更新
mc中更新分为NC更新和PP更新
NC更新在树场中的主要来源是TT(Tile Tick)原件(一般而言:红石中继器、比较器、侦测器),红石粉与动力或激活铁轨以下部分将用“铁轨”指代它们,因为树场中几乎不涉及另外两种铁轨、活塞与其推拉的方块、音符盒
一般可以认为以上原件的某些状态(如是否充能、激活,方块的状态)发生变化时,向:
- 红石粉(能量等级变化),二阶毗邻
- 中继器、比较器、侦测器,先它们输出端指向的方块,再输出端指向的方块的毗邻,除去自身
- 平放的铁轨,先自身的毗邻,再下方方块的毗邻;斜放的铁轨,先自身的毗邻,再下方方块的毗邻,最后上方方块的毗邻。
- 活塞,本身与其受推拉方块原位置的毗邻
- 音符盒,毗邻
发出NC更新,并可由BUD响应
由于树场的主体结构一般由活塞构成,一般可以认为树场中所有NC更新都同时带有PP更新。侦测器检测的是PP更新
在树场中,纯PP更新(不带有NC更新)一般由:
- 活版门/栅栏门开关
- 发射器/投掷器/漏斗激活状态改变
- 玻璃板/栅栏/铁栅栏/石墙的连接状态改变
提供
在无粉布线阶段,我们会涉及三种很重要的信号传递方式:树电(通过树叶,传递NC和PP更新)、脚电(通过脚手架,传递NC和PP更新)、墙电(通过墙,纵向传递PP更新)。利用好它们的特性,我们能极大地简化树场中的布线。更细节的内容,我们会在无粉布线专题讲述。
#1.1.2 时序
mc中时序分为刻间时序与刻内时序
mc中,每秒会被分为20gt(这里不阐述其概念),部分原件会带有固定的宏观的延迟,如TT原件:中继器(2-8gt)、比较器和侦测器(2gt)
可以认为除了TT原件以外,其他树场涉及的原件都不带有宏观延迟
每gt会被分成多个阶段,分别执行不同的运算。与树场相关性较强的阶段(按运算顺序)有:
- Tile Tick(TT),TT原件的运算在这里执行
- Block Event(BE),活塞与音符盒的运算在这里执行
- Entity Update(EU),实体(如载具或者生物)的相关计算在这里执行
- Tile Entity(TE),漏斗与被活塞推拉的方块相关的运算在这里执行
- Async Task(AT/NU),玩家的相关计算在这里执行
除了以上提到的原件以外,瞬时原件相关运算会在接受更新后立刻执行(无论更新处在以上哪个阶段)。常见的瞬时原件有红石粉和铁轨、栅栏门或活版门、音符盒、投掷器和发射器
TT原件的执行顺序由宏观时序、TT优先级、子顺序决定,可以认为,TT原件的执行顺序为:
任意中继器>=指向比较器的比较器>一般比较器或侦测器
BE原件(活塞与音符盒)在BE中会按受到更新,确认需要变更状态的顺序执行运算。这个顺序有时被称为深度。音符盒不会增加深度(即延后其更新的对象在BE内的运算顺序)
分析时序时,优先分析宏观时序,其次分析运算所处的阶段,最后分析运算在其阶段内执行的顺序
树场中,可以认为每一个活塞动作(推/拉/0t)的时间都是3gt,1gt和2gt的充能导致的活塞动作分别为4gt和5gt
#1.2 树场的基本结构
在mc1.15及以上,树场的基本结构有:
- 催熟
- 树干处理(有时分为主干处理和根部处理)
- 树叶处理
- 树苗回收
- 方块流转掉落物
大部分树场还有检测模块,用于检测树苗生长并触发树场,但这不是树场必须的,我们会在下一章接触它
在mc1.15以下,由于从林木和金合欢特殊的生长检测方式,有时候会为树场增加增高模块;由于云杉生长检测要求5x5内不能有原木,需要增加收回墙。本文主要讨论1.15及以上的树场,我们会暂时忽略这些结构
#1.2.1 催熟
一般而言为发射器对树苗喷骨粉
由于发射器能储存的骨粉很少,一般而言会通过漏斗或者投掷器向发射器输送骨粉,并用卸货器将骨粉由潜影盒转移到漏斗或投掷器链中。

#1.2.2 树干处理
主干处理的思路非常简单:将主干从原本的位置移走。基本的实现方式有三次递推和伪二次递归;对于白桦和橡树,我们可以采用直接推拉的形式
三次递归:

伪二次递归:

蜜绿墙二次递归:

收回式伪二次递归(通过让二级活塞只执行收回动作(0t)压缩一个活塞动作时序的伪二次递归架构):

现在使用最多的形式是蜜绿墙二次递归
树根处理一般而言,有与主干一同处理、上推、下吸和侧吸四种方式
上推:


下吸:

侧吸:


对于深色橡木,有时会采用上吸的处理方式

#1.2.3 树叶处理
同样非常简单:用活塞/蜜绿墙将足够数量的树叶推掉,从而获得足够的树苗
蜜绿墙:

活塞:

每个树叶会以固定概率掉落树苗:丛林1/40,其他树种1/20
#1.2.4 树苗回收
通过漏斗、水流等方式将树叶处理模块中掉落的树苗集中到玩家附近
漏斗:

@Scorpio天蝎君 4gt白桦
水流:

@Feng_Bl, Sunflower_Lin 6gt白桦
在处理周期较短,且内部空间较狭窄的树场内,有时会使用漏斗矿车回收树苗

@Qonctrol,PUTF sharp
#1.2.5 方块流转掉落物
一般而言有凋零和TNT两种方式
凋零:

@Scorpio天蝎君,PUTF flat wither
TNT:

@Feng_Bl