剖析偵測器的計(jì)劃刻事件【MC刨根問底#2】
我們常用的偵測器高頻實(shí)際上具有更加復(fù)雜的計(jì)劃刻事件
先說結(jié)論
常規(guī)的偵測器事件
偵測器受到面向的方塊發(fā)出的pp更新,此時(shí)偵測器立即添加<2gt后亮起>的計(jì)劃刻事件
在2gt延遲后,偵測器執(zhí)行亮起計(jì)劃刻
1) 偵測器改變自身狀態(tài),開始輸出紅石信號(powered=true),并以自身為中心發(fā)出pp更新
2) 偵測器添加<2gt后熄滅>的計(jì)劃刻事件
3) 偵測器向指向(即紅石信號輸出方向)的方塊及該方塊的毗鄰方塊發(fā)出nc更新
在2gt延遲后,偵測器執(zhí)行熄滅計(jì)劃刻
1) 偵測器改變自身狀態(tài),停止輸出紅石信號(powered=false),并以自身為中心發(fā)出pp更新
2) 偵測器發(fā)出nc更新(同2.3)
偵測器添加<2gt后熄滅>計(jì)劃刻事件的特殊性
如果在同一gt內(nèi)、偵測器執(zhí)行亮起計(jì)劃刻事件之前,偵測器受到了pp更新,偵測器會在此時(shí)添加<2gt后熄滅>的計(jì)劃刻事件
偵測器在執(zhí)行亮起計(jì)劃刻時(shí),仍會嘗試添加<2gt后熄滅>的計(jì)劃刻事件,但此時(shí)由于計(jì)劃刻隊(duì)列中已經(jīng)存在了該事件,此次添加失敗
偵測器在TE事件添加<2gt后亮起>計(jì)劃刻事件的特殊性
b36方塊到位時(shí),若該b36將轉(zhuǎn)變的方塊為偵測器,則它會先在當(dāng)前位置添加一個(gè)偵測器2gt后亮起的計(jì)劃刻,再執(zhí)行偵測器到位
實(shí)驗(yàn)分析
由上述的常規(guī)結(jié)論和偵測器添加計(jì)劃刻事件的特殊性,我們不難分析出玩家放置的偵測器高頻(6gt)與活塞推動的偵測器高頻(4gt)的差異原因。接下來讓我們解釋開頭的那句話“我們常用的偵測器高頻實(shí)際上具有更加復(fù)雜的計(jì)劃刻事件”。
以下我們假設(shè)玩家和活塞操作的都是偵測器1(分別做了圖示分析和文字分析,其中部分pp更新與計(jì)劃刻添加失敗省略)

玩家放置:
[偵測器1}?{偵測器2]
0gt-NU-玩家放置偵測器1-偵測器2添加計(jì)劃刻
2gt-NTE-偵測器2亮起(pp更新-偵測器1添加亮起計(jì)劃刻-偵測器2添加熄滅計(jì)劃刻)
4gt-NTE-偵測器1亮起(偵測器1添加熄滅計(jì)劃刻)-偵測器2熄滅
6gt-NTE-偵測器1熄滅(pp更新-偵測器2添加亮起計(jì)劃刻)
循環(huán)
活塞推動:
0gt-BE-活塞推動偵測器1(pp更新-偵測器2添加亮起計(jì)劃刻)
2gt-NTE-偵測器2亮起(偵測器2添加熄滅計(jì)劃刻)
2gt-TE-偵測器1添加亮起計(jì)劃刻-偵測器1的b36到位
4gt-NTE-偵測器2熄滅(pp更新-偵測器1添加熄滅計(jì)劃刻)-偵測器1亮起(pp更新-偵測器2添加亮起計(jì)劃刻)
6gt-NTE-偵測器1熄滅(pp更新-偵測器2添加熄滅計(jì)劃刻)-偵測器2亮起(pp更新-偵測器1添加亮起計(jì)劃刻)
循環(huán)
總結(jié)
偵測器除在常規(guī)狀態(tài)下受到pp更新時(shí)會添加亮起計(jì)劃刻事件外,還會:
在同一gt內(nèi)、執(zhí)行亮起計(jì)劃刻前受到pp更新,會添加熄滅計(jì)劃刻
在b36到位的那一游戲刻的TE事件中,會在b36到位前添加亮起計(jì)劃刻