看板 Minecraft 關於我們 聯絡資訊
壹、適用版本:1.4.5版本以前 貳、名詞說明: 1、「更新」:放置方塊、打掉方塊、紅石線亮和熄滅、紅石燈燈亮和熄滅、 泥土變草地、泥土變耕地、熔爐暗與亮等等皆為更新。 2、「充能」:嚴格來說有分強充能和弱充能,本篇的充能指的是紅石線和 壓力板會對下方的方塊弱充能、開關按鈕對左右方的方塊弱充能。 3、「方格A」:活塞上一格的周圍東南西北四格,(註:下一格的周圍四格不算) 指的是位置,不是物體 如圖,http://i.imgur.com/98CwDyq.png 4、「方格B」:沒伸長活塞的周圍六格,伸長活塞的周圍10格 指的是位置,不是物體 如圖,http://i.imgur.com/psSwMRI.png 如圖,http://i.imgur.com/rF1ztus.png 參、BUD運作的機制 機制甲:前提當方格A處在充能的狀態下,方格B發生了更新的動作, 則活塞會伸長或維持伸長,然後就不動了。 如圖,http://i.imgur.com/jiiwKwx.png 如圖,http://i.imgur.com/7KqDmnj.png 如圖,http://i.imgur.com/4SdA2Bz.png 機制乙:前提當方格A處在沒充能的狀態下,方格B發生了更新的動作, 則活塞會縮回或維持縮回,然後就不動了。 如圖,http://i.imgur.com/wsh6bnq.png 如圖,http://i.imgur.com/ohCafAm.png 如圖,http://i.imgur.com/1cYzMwL.png 甲乙加註1:方格B更新所花費時間很短(約0.007秒), 就算方格A的充能不充能狀態改變 只要慢個0.1秒(0刻中繼器)也趕不上。 甲乙加註2:除了活塞以外其他機關沒有這種現象。另外大前提是 活塞黏著的方塊要能推得動,像熔爐、處在伸長狀態的活塞、 基石、黑曜石就推不動。 機制丙:如圖,紅石線更新時也會對目標那一格更新,(中繼器也會) http://i.imgur.com/NBF6L9h.png 機制丁:中繼器熄掉時,也會對來源的那一格更新,沒錯不要懷疑來源也會更新, 如圖,http://i.imgur.com/oew7mRv.png 為了驗證這個不合常理的機制,所以設計了這個特殊情況, 如圖,http://i.imgur.com/26MtHqa.png 如圖,http://i.imgur.com/kf5g9V4.png 結論:綜合以上機制應該就能合理解釋各式各樣BUD的運作疑惑。 肆、實例一:http://i.imgur.com/6h5Sh6Y.jpg 按發生時間順序排序: 1.前提當方格A充能時, 2.活塞周圍發生了更新, 3.滿足機制甲,所以活塞伸長,並推出羊毛,因為羊毛不見了, 4.所以延遲0.4秒後, 5.中繼器才熄掉,因為中繼器熄掉了,紅石線熄掉,所以方格A沒充能, 6.因為中繼器熄掉了,所以更新了方格B,(機制丁) 7.滿足機制乙,所以活塞縮回,並黏回羊毛, 8.因為羊毛在紅石火把上方所以被充能,因為羊毛充能, 9.所以延遲0.4秒後, 10.中繼器才充能,因為中繼器充能,所以紅石線充能,所以方格A變成充能 小結論:先熄滅方格A,然後才更新方格B,所以回到初始情況。 (註:幾乎同時) ************************************************************************ 實例二:http://i.imgur.com/cjJbX63.jpg 按發生時間順序排序: 1.前提當方格A充能時, 2.活塞周圍發生了更新, 3.滿足機制甲,所以活塞伸長,並推出羊毛,因為羊毛不見了, 4.所以延遲0.1秒後, 5.中繼器C才熄掉,因為中繼器C熄掉了,所以更新了方格B,(機制丁) 6.更新方格B時,方格A仍然充能,滿足機制甲,所以活塞維持伸長, 7.因為中繼器C熄掉了,所以延遲0.1秒後, 8.中繼器D才熄掉,所以紅石線熄掉,所以方格A變成沒充能。 小結論:先更新方格B,然後才熄滅方格A,所以結果卡住。 (註:更新方格B花的時間遠比0.1秒短)(修改了筆誤) ************************************************************************* 實例三:http://i.imgur.com/NDVL9L0.jpg 按發生時間順序排序: 1.前提當方格A充能時, 2.活塞周圍發生了更新, 3.滿足機制甲,所以活塞伸長,並推出羊毛,因為羊毛不見了,所以紅石線C熄掉, 4.因為紅石線C熄掉,所以更新方塊B,(機制丙) 5.更新方格B時,方格A仍然充能,滿足機制甲,所以活塞維持伸長, 6.由於紅石線C熄掉,所以延遲0.1秒後, 7.中繼器才熄掉,因為中繼器熄掉了,所以紅石線D熄掉,所以方格A變成沒充能。 小結論:先更新方格B,然後才熄滅方格A,所以結果卡住。 (註:更新方格B花的時間遠比0.1秒短) *************************************************************************** 實例四:http://i.imgur.com/153sHi4.png 按發生時間順序排序: 1.當壓下壓力板時,使得方格A充能 2.因為方格A充能,所以紅石燈亮(活塞周圍發生了更新), 3.滿足機制甲,所以活塞伸長,並推出紅石燈,因為壓力板仍然壓下,故紅石燈 依然亮著 4.當放開壓力板時,使得方格A變成沒充能 5.因為方格A變成沒充能,所以紅石燈熄滅(=活塞周圍發生了更新), 因為方格A變成沒充能(=活塞周圍發生了更新), 6.滿足機制乙,所以活塞縮回,並黏回紅石燈 小結論:先熄滅方格A,然後才更新方格B,所以回到初始情況。 (註:壓力板底下的方塊同時是機制乙的方格A,也同時是方格B,並不衝突) 伍、上述解釋了原理,至於BUD的發生的原因,請見另外一篇文章「BUD的原因-假說」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.69.53 ※ 編輯: volition 來自: 61.64.69.53 (01/28 22:10)
Cruiser:感謝喔 我來看看... 0. 0a 01/28 22:53
volition:方塊更新所花費的時間其實應該還要更短0.007秒以內 01/28 23:01
Cruiser:我對機制丁有一些意見,早上再來打 先睡覺  0. 0a 01/29 00:16
jeffffliu:先不說機制了 可能改版機制有修正 01/29 01:08
jeffffliu:http://i.imgur.com/Ssc3HcU.png 左邊1.4.X 1.5結果不同 01/29 01:09
jeffffliu:bukkit也有fix 於是我就懶惰了 01/29 01:11
volition:1.壓下壓力版 2.下方方塊充能 3.紅石燈變亮(更新) 01/29 01:21
volition:4.滿足機制甲 5.活塞伸長後不動 6.紅石燈被向上推 01/29 01:22
volition:7.因左邊壓力板還壓著顧紅石燈維持亮著,活塞維持伸長 01/29 01:25
jeffffliu:但是 bukkit 1.4.x 跟 1.5預覽版 活塞是不會動的 01/29 01:25
jeffffliu:請解釋機制的不同(被毆打 01/29 01:25
volition:8.放開壓力板後 9.下面方塊沒充能 10.紅石燈熄滅(更新) 01/29 01:27
volition:11.滿足機制乙 12.活塞和紅石燈縮回並維持 01/29 01:29
volition:以上使用版本為1.45版本,左邊的重複型BUD測試正常運作 01/29 01:31
jeffffliu:如果在bukkit上就失效了(死 01/29 01:36
volition:http://i.imgur.com/Yjw4MtR.png 01/29 01:40
volition:http://i.imgur.com/736YUuQ.png 01/29 01:40
jeffffliu:後續不太對 活塞不是往上推了嗎 9沒衝能就會觸發到 01/29 01:41
jeffffliu:推出去的活塞的旁邊沒衝能就失效了縮回去 01/29 01:41
volition:8.放開壓力板後 9.下面方塊沒充能 10.方塊(更新) 01/29 01:46
volition:11.滿足機制乙 12.活塞和紅石燈縮回並維持 01/29 01:46
jeffffliu:9.下面方塊沒充能+紅石灯沒充能 01/29 01:47
volition:雖然紅石燈和方塊都算更新,但結果不變 01/29 01:47
jeffffliu:1.5的差別在於 檢查的時間點 (不想研究了) 採下去不推 01/29 01:48
volition:測試BUD,不要在多人伺服器測(LAG會不準), 01/29 01:58
volition:也不要用太新版本,(尤其是有動到活塞延遲時間的版本) 01/29 02:00
jeffffliu:你可以自己電腦開伺服器測試 為什麼不測新版本 01/29 02:03
jeffffliu:還是你不打算更新(誤 01/29 02:03
volition:方塊A和方塊B有可能是同一格,不會衝突,結論依然穩合 01/29 02:05
jeffffliu:不過側這個針的蠻累的... 01/29 02:07
volition:這篇文章是針對1.4.5以前的版本來說明各種BUD的通則。 01/29 02:18
volition:至於1.5後,哪些會失效,哪些仍然可以用就是另一個問題 01/29 02:21
※ 編輯: volition 來自: 61.64.69.53 (01/29 10:51) ※ 編輯: volition 來自: 61.64.69.53 (01/29 10:57)
Cruiser:有實例 那再看看實例好了 o. oa ... 01/29 10:59
※ 編輯: volition 來自: 61.64.69.53 (01/29 19:14)
volition:避免誤解,所以把方塊修改成方格,以及舉實例說明 01/30 10:54
Cruiser:感謝喔 0.0 01/30 11:05