其原理為
讀取字庫召喚出來的同音字紙條,紙條上每個盔甲架都代表著一個字,模塊的讀取長度為10個字。那么我們就應該要注意一點,字在多于十個的時候我們要提供翻頁功能。但是我們不能翻的太過頭,否則模塊讀取不到字。
那么我們就需要探測這個紙條是否已經(jīng)到了頭,那么我們就要對超出的部分進行探測,一旦沒有超出的部分,那就代表著已經(jīng)翻到了頭,這時候就需要消除掉那處的點擊事件,也就是換一條指令。(雖然別的辦法也行,不過這樣最簡單粗暴)
/scoreboard players set l end 0
/testfor @e[0,4,0,dz=-100]
/scoreboard players set l end 1 (con模式)
這是一組探測是否能夠向左翻的指令,向右的指令結(jié)構(gòu)相同。
/scoreboard players test r end 1 1
/scoreboard players test l end 1 1 (con模式)
/tellraw (con模式)
這里是一個探測的例子,用于探測指令狀態(tài)。
由于左邊和右邊各有兩種可能,所以總共需要四條序列。不同的tellraw有著不同的翻頁狀態(tài)。
緩存模塊
也就是中間那兩行目標所在的位置,這個位置呢是非常有趣的。白樺木木板那一行所存儲的是拼音,因為拼音最多的可能性為6個字母,所以這里也就有六個位置。橡木木板那一行所存儲的是打出的字,作為一個中繼緩存。按下enter可以將打好的字轉(zhuǎn)移到指定的位置。
每行有一個屬于自己的指針。拼音那一行由于需要讀取數(shù)據(jù)所以有一排盔甲架。圖中的命令方塊僅為召喚盔甲架使用,不影響運行。
summon ArmorStand ~ ~ ~ {CustomName:"set",NoGravity:1,Marker:1}
這是一個樣例的指令。
讀取拼音內(nèi)容的盔甲架名為set
拼音行指針名為check
文字行指針名為print
按鍵錄入模塊
首先上方有一排高頻,用于讀取拼音行的內(nèi)容。
/scoreboard players set @e[name=set] end 0
/execute @e[name=a] ~-1 ~ ~ /scoreboard players set @e[r=0,name=set] end 1
/execute @e[name=b] ~-1 ~ ~ /scoreboard players set @e[r=0,name=set] end 2
…
/execute @e[name=y] ~-1 ~ ~ /scoreboard players set @e[r=0,name=set] end 25
/execute @e[name=z] ~-1 ~ ~ /scoreboard players set @e[r=0,name=set] end 26
A-Z對應數(shù)字1-26,空格對應數(shù)字0。
然后接下來是26排命令方塊,對應各個字母,執(zhí)行一次輸入字母的工作。
以字母A為例。
/setblock ~1 ~ ~ air
/execute @e[name=check] ~ ~ ~ kill @e[r=0,name=!check]
/execute @e[name=check] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:"a",NoGravity:1,Marker:1}
/execute @e[name=check] ~ ~ ~ detect ~ ~-1 ~1 planks -1 /tp @e[name=check] ~ ~ ~1
清理一次本格內(nèi)容以防bug。然后寫下“A”,最后向右移動一次指針。
刪除模塊
和邊上的錄入模塊工作原理很類似。
同樣的,有刪除拼音和刪除文字兩排指令。
/setblock ~1 ~ ~ air
/execute @e[name=print] ~ ~ ~ detect ~ ~-1 ~-1 planks -1 /tp @e[name=print] ~ ~ ~-1
/execute @e[name=print] ~ ~ ~ kill @e[r=0,name=!print]
kill @e[0,4,-1000,dz=2000,dx=0,dy=0,type=ArmorStand]
最后的kill指令是為了刷新候選字。
瀏覽量:72022-07-19
瀏覽量:12021-05-31
瀏覽量:02021-05-29
瀏覽量:02021-05-17
瀏覽量:02021-04-23
瀏覽量:02019-10-13