小圈圈筆記,看不懂是正常的。
抓系統(tǒng)時(shí)間
指令:/help me
字串index:[44, 52)
用command evaluation產(chǎn)生寫入計(jì)分板的指令,達(dá)成parseInt的效果
/scoreboard players set的數(shù)字接受zero-padded,所以不用考慮十位數(shù)是0的特例
string manipulation
1. Text component resolution
2. 搬運(yùn)到展示用實(shí)體的CustomName
3. 指令方塊執(zhí)行失敗的/enchant
4. 取LastOutput的[89, inf)
5. 上一步的字串長度-38,和"... string storage ... 0 "做text component resolution
6. 重複2~3
7. 因?yàn)樽执L度上限約21億,只要窮舉1~10就可以正確裁切上面合併的字串
8. evaluate步驟7生成的指令,切割出結(jié)果
以上4~8構(gòu)想by 雪色
窮舉1~10不用切太深,應(yīng)該可以不均勻的二分成1..3和4..10
再次修改,5可以在指令前方多填11個字元,讓窮舉變成3和4..10,反正平常也不會有人去生成長度接近上限的字串
恭喜以上方法報(bào)廢,官方終於想起來要做negative index這回事
command evaluation
把指定的storage當(dāng)成command queue
連鎖指令方塊解除1t一次的限制(UpdateLastExecution),八個串成一圈,外面掛一顆循環(huán)方塊當(dāng)啟動器
按照執(zhí)行順序,A→B→C→D→E→F→G→H→A→…
A(command loader):從queue裡面取下一條指令,寫入B
B(command execution):執(zhí)行載入的指令
C(guardian):若B沒有呼叫string manipulation API,清空D~H
D(string 1E):若B呼叫string manipulation API,這一顆用來執(zhí)行3的/enchant
E(string 2):接續(xù)執(zhí)行4開始的動作
F(string 2E):接續(xù)執(zhí)行6的/enchant
G(string 3):接續(xù)執(zhí)行7的切割
H(string 3E/writeback):接續(xù)執(zhí)行8的指令,把字串寫回storage
A若偵測到queue清空,就把B的方向轉(zhuǎn)出去,避免繼續(xù)空轉(zhuǎn)
啟動器下一個tick再把B接回迴圈內(nèi)
C可以用計(jì)分板偵測API呼叫狀況,避免A每次都要清除D~H
瘋一點(diǎn)可以改用兩顆互指的指令方塊玩finite state machine