//
GTMC
DATABASE
MY DRAFTS
REVIEW HUB
FEATURES
LOGIN
< BACK
NEW_SUBMISSION
TITLE_
FILE_PATH (e.g. Folder/My-Article.md)_
CONTENT (MARKDOWN)_
B
I
LINK
IMG
H3
</>
SUPPORT_PASTE/DROP_IMG
# 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
SAVE DRAFT
SUBMIT FOR REVIEW