前往
大廳
主題

【筆記】1.19.4 string manipulation / command evaluation

| 2023-03-03 02:34:18 | 巴幣 0 | 人氣 225

小圈圈筆記,看不懂是正常的。

抓系統時間
指令:/help me
字串index:[44, 52)
用command evaluation產生寫入計分板的指令,達成parseInt的效果
/scoreboard players set的數字接受zero-padded,所以不用考慮十位數是0的特例

string manipulation
1. Text component resolution
2. 搬運到展示用實體的CustomName
3. 指令方塊執行失敗的/enchant
4. 取LastOutput的[89, inf)
5. 上一步的字串長度-38,和"... string storage ... 0 "做text component resolution
6. 重複2~3
7. 因為字串長度上限約21億,只要窮舉1~10就可以正確裁切上面合併的字串
8. evaluate步驟7生成的指令,切割出結果

以上4~8構想by 雪色
窮舉1~10不用切太深,應該可以不均勻的二分成1..3和4..10
再次修改,5可以在指令前方多填11個字元,讓窮舉變成3和4..10,反正平常也不會有人去生成長度接近上限的字串

恭喜以上方法報廢,官方終於想起來要做negative index這回事

command evaluation
把指定的storage當成command queue
連鎖指令方塊解除1t一次的限制(UpdateLastExecution),八個串成一圈,外面掛一顆循環方塊當啟動器
按照執行順序,A→B→C→D→E→F→G→H→A→…
A(command loader):從queue裡面取下一條指令,寫入B
B(command execution):執行載入的指令
C(guardian):若B沒有呼叫string manipulation API,清空D~H
D(string 1E):若B呼叫string manipulation API,這一顆用來執行3的/enchant
E(string 2):接續執行4開始的動作
F(string 2E):接續執行6的/enchant
G(string 3):接續執行7的切割
H(string 3E/writeback):接續執行8的指令,把字串寫回storage

A若偵測到queue清空,就把B的方向轉出去,避免繼續空轉
啟動器下一個tick再把B接回迴圈內
C可以用計分板偵測API呼叫狀況,避免A每次都要清除D~H
瘋一點可以改用兩顆互指的指令方塊玩finite state machine

創作回應

更多創作