LV. 4
GP 9

【秘技】如何寫一鍵指令“OCC”

樓主 Potato man mcmaker
GP6 BP-
一鍵指令OCC的製作方法
註:
  1. 本教程需要有麥塊指令基礎知識,並能夠獨自寫出基本指令。若沒有,請到Wiki上學習。
  2. 本教程我根據我寫一鍵指令(往後使用“OCC”代替)的經驗並搜集了部分資料和圖片總結所寫,若有侵權,請告知我:郵箱chen18966941571@gmail.com (沒有問題的朋友盡量不要給我發啦)
  3. 教程所講的OCC指令結構適用於1.11以上,我是依據1.12.2版本撰寫,如果其餘版本出現錯誤請給我留言,我會依情況解決。
  4. 本教程只帶讀者入門,專業知識請自行使用英文搜索資料。

教程正式開始:
      OCC,是 “One Command Creation” 的縮寫,意為使用一條指令構建指令方塊工作組,這種構建方式節省事件和體積,適合在網路上分享自己的指令設計,也方便地圖作者節省地圖空間更方便隱藏。在1.12function出現之後,function解決了OCC設計困難,內容有限,編輯侷限等問題。但OCC至今仍是還是指令分享的主力軍。

一、基本指令(所有的OCC指令都基於這個指令)
      “/summon”運用這個指令可以生成Minecraft中任何的實體。在Minecraft的實體中,有一種叫做 ”falling_block ”的特殊實體。它可以把任何一種方塊變成有掉落屬性(像沙子一樣會掉落)的實體,並且當它掉落到地面時將會變成那個方塊(不是實體,原先是那個方塊的實體)
 /summon falling_block ~ ~1 ~ {Time:1,Block:wool,Data:1}
       上面的是這個指令的格式,意為:在上方一個處召喚一個有掉落性質(會掉落)的實體“羊毛(實體狀態)”且“羊毛”的數據為1,當它落到地面時轉換為羊毛(方塊狀態)且羊毛的數據為1。
       其中“/summon”為指令;“falling_block”前面講到的特殊實體;“~ ~1 ~”生成位置,實際座標或相對座標;“time:1”對OCC沒有實際用途,但必須有,不然無法生成(暫時不講);“Block:wool”填寫召喚並轉換為有掉落屬性的實體的那個方塊ID(英文數字不管用);“Date:1”方塊數據,比如羊毛顏色,陶瓦種類等,默認填“1”。
效果圖片:
輸入中.....

輸入後
二、召喚一個含有指令的命令方塊
各種指令方塊的ID:command_block(脈衝),repeating_command_block(循環),
  chain_command_block(連鎖)
  現在我們需要了解一個NBT:TileEntityData。在這個NEB後輸入{Command:你的指令},它可以設置掉落屬性指令方塊(實體)的指令,當它轉換為指令方塊(方塊)時,它的指令為“Command:”冒號後的指令
    /summon falling_block ~ ~1 ~ {Block:command_block,Time:1,Data:1,TileEntityData:{auto:0,Command:"say Potato Talk"}}
意為:在上方一個處召喚一個有掉落性質的實體指令方塊,當它掉落到地面後轉換為一個含有指令/say Potato Talk 的指令方塊(方塊不是實體,可以激活)“auto”指是否保持開啟。
效果圖片:
輸入指令

生成結束
已經寫入指令的指令方塊方塊
三、將指令方塊串起來
/summon falling_block ~ ~1 ~ {Time:1,Block:command_block,Data:2,TileEntityData:{auto:0,Command:"say Potato Talk"},Passengers:[{id:falling_block,Block:command_block,Time:1,Data:1,TileEntityData:{auto:0,Command:"say Potato Talk"}}]}
Passengers:[{id:falling_block}]” Passenger 可以在召喚那個掉落性質的實體“指令方塊”時在上方附加召喚實體,寫入[{id:falling_block,.......}]在“.......”寫入前面所講的那些數據,上方指令下劃線。
效果照片:


四、一次又一次
/summon falling_block ~ ~1 ~ {Time:1,Block:command_block,Data:2,TileEntityData:{auto:0,Command:"say Potato Talk"},Passengers:[{id:falling_block,Block:command_block,Time:1,Data:1,TileEntityData:{auto:0,Command:"say Potato Talk"},Passengers:[{id:falling_block,Block:command_block,Time:1,Data:1,TileEntityData:{auto:0,Command:"say Potato Talk"}}]}]}
將“三”所講的指令在寫入數據中,這樣一次有一次的寫入,直到完成目的或達到指令行數極限

這就是一鍵指令OCC
如果有學過計算機的朋友們就能看出來了,這是一個遞歸算法。你可以在網路上查看遞歸算法的資料,麥塊不少的指令是用遞歸寫成的。不過遞歸算法會大幅度占用內存,也會拖慢CPU速度,建議學習OCC或玩OCC的朋友們盡量不要使用循環方塊執行OCC指令,也不要一次係執行多個OCC指令。

希望大家能夠喜歡,也希望各位大神們能夠糾正教程內的錯誤,也請大家留言提出問題,謝謝!


6
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:

1281 筆精華,昨天 更新
一個月內新增 5
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】