[從活塞到游戲機(jī)制] 03-響應(yīng)的條件:更新和信號(hào)源

更新和信號(hào)源
1,更新的概念
廣義的更新是指方塊在發(fā)生一些變化時(shí)工作的一個(gè)游戲機(jī)制,當(dāng)一個(gè)方塊因?yàn)閷?shí)體(比如玩家挖掘/放置方塊)或區(qū)塊刻(如常加載區(qū)塊中的機(jī)器因區(qū)塊刻推移而運(yùn)行)等原因而發(fā)生的變化,它會(huì)通知附近方塊,檢查是否要連帶作出響應(yīng)(如鐵塊上的火把因?yàn)橥婕彝诘袅髓F塊而掉落)。
2,更新的分類(lèi)(3種)
NC更新[NeighborChanged]:指最基礎(chǔ)的最符合方塊更新含義的更新類(lèi)型,如紅石元件的狀態(tài)變化、方塊的放置與破壞、方塊的移動(dòng)以及B36固化方塊的過(guò)程(如拉桿的開(kāi)關(guān))。
PP更新[PostPlacement]:指方塊發(fā)生變化導(dǎo)致的臨近方塊與變化方塊交互情況發(fā)生變化的更新,比如柵欄的連接方式,紅石粉的形態(tài)改變。
比較器更新:指比較器信號(hào)輸入端,比較器輸出端以及減法模式的信號(hào)強(qiáng)度的相減并輸出。(與下文無(wú)多少關(guān)聯(lián),便不在此做多贅述)
3,如何區(qū)分NC更新與PP更新
NC更新:方塊更新檢測(cè)器(BUD)[block update detector]:原理是通過(guò)將檢測(cè)器變?yōu)橐环N有信號(hào)但未響應(yīng)的狀態(tài),如果附近產(chǎn)生NC更新,游戲會(huì)重新檢查NC更新的方塊以及附近的方塊,并修復(fù)BUD的未響應(yīng)狀態(tài)(更新發(fā)生在檢測(cè)器附近),使檢測(cè)器作出響應(yīng)。
PP更新:偵測(cè)器(未找到佛冷的文章,抱歉QwQ)
注:此處有一個(gè)重要概念,即元件響應(yīng)都依賴(lài)更新,更新是至關(guān)重要的一步。或者說(shuō)Minecraft的底層邏輯便是更新,瘋狂的更新。
4,方塊更新的范圍

一階六向毗鄰:方塊的更新范圍是一階毗鄰的六個(gè)面,即向六個(gè)方向,且僅限直接接觸。

二階六向毗鄰:方塊的更新范圍為二階毗鄰的六個(gè)面,即向六個(gè)方向,可以隔一個(gè)方塊傳輸信號(hào)。
二階五向毗鄰:方塊的更新范圍為二階毗鄰的五個(gè)面(安裝此方塊A的方塊B不可被方塊A充能,但可以更新),即向五個(gè)方向,可以隔一個(gè)方塊傳輸信號(hào)。

注:一些普通完整方塊沒(méi)有充能狀態(tài)的NBT標(biāo)簽,即一些普通完整方塊僅限傳輸信號(hào)。
5,活塞響應(yīng)的兩個(gè)必要條件
更新:沒(méi)有更新,任何元件都不會(huì)被觸發(fā)。
信號(hào)源:類(lèi)似電源,為元件的響應(yīng)提供能量。
半連接性QC(Quasi-connectivity):方塊的激活與方塊上方的空間之間,有一種隱約的連接性,卻沒(méi)有直接接觸,被稱(chēng)為半連接性。(QC不是活塞的一階毗鄰!QC不是活塞的一階毗鄰!QC不是活塞的一階毗鄰!重要的事情說(shuō)三遍awa)