跑跑車首頁

當前位置:首頁攻略秘籍單機攻略 → 我的世界命令方塊教程漢字輸入法講解

我的世界命令方塊教程漢字輸入法講解

作者:佚名來源:本站整理 發(fā)表時間:2016/1/27 8:47:35 評論(0)

首先呢,我先要說一下,為什么在玩家可以直接輸入文本的游戲里加入這樣一個輸入法呢?因為游戲目前并不能獲取玩家輸入的文本,而一旦可以輸入,我們就可以處理這樣的一個文本。一旦處理這個文本,我們又能加很多特技了,這個輸入法的原型,出自我快一年前的掃雷的英雄榜。

總共創(chuàng)立的計分板只有一個。我寫的名稱為end。

這個計分板承接各種功能,我會在模塊介紹中提到具體用法。

那么廢話不多說,我們開始吧。

首先附上效果圖。

這是整個電路的鳥瞰截圖。

這些模塊環(huán)環(huán)相扣,先從原理說起吧。

原理

Tellraw可以通過選擇器事件來顯示和say一樣的效果,那么我們可以通過只選擇一個實體的方法來實現(xiàn)在tellraw中自定義文本。這一點我在很久之前的帖子里屢次提到或用到。而點擊事件也可以用于制作軟鍵盤。綜合兩點可以做出不錯的效果。

原理完!

下面分模塊進行講解。

軟鍵盤-防溢出模塊

下面是一個指令樣本。

tellraw @a [{"text":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","color":"green"},{"selector":"@e[-8,4,1,r=0,name=!print]"},{"selector":"@e[-8,4,2,r=0,name=!print]"},{"selector":"@e[-8,4,3,r=0,name=!print]"},{"selector":"@e[-8,4,4,r=0,name=!print]"},{"selector":"@e[-8,4,5,r=0,name=!print]"},{"selector":"@e[-8,4,6,r=0,name=!print]"},{"selector":"@e[-8,4,7,r=0,name=!print]"},{"selector":"@e[-8,4,8,r=0,name=!print]"},{"selector":"@e[-8,4,9,r=0,name=!print]"},{"selector":"@e[-8,4,10,r=0,name=!print]"},{"text":"\n"},{"text":"【←】","color":"green","clickEvent":{"action":"run_command","value":"/tp @e[0,4,-1000,dz=2000,dx=0,dy=0,type=ArmorStand] ~ ~ ~10 "}},{"text":" "},{"selector":"@e[0,4,1,r=0]","clickEvent":{"action":"run_command","value":"/setblock -7 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,2,r=0]","clickEvent":{"action":"run_command","value":"/setblock -8 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,3,r=0]","clickEvent":{"action":"run_command","value":"/setblock -9 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,4,r=0]","clickEvent":{"action":"run_command","value":"/setblock -10 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,5,r=0]","clickEvent":{"action":"run_command","value":"/setblock -11 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,6,r=0]","clickEvent":{"action":"run_command","value":"/setblock -12 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,7,r=0]","clickEvent":{"action":"run_command","value":"/setblock -13 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,8,r=0]","clickEvent":{"action":"run_command","value":"/setblock -14 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,9,r=0]","clickEvent":{"action":"run_command","value":"/setblock -15 4 -4 minecraft:redstone_block"}},{"text":" "},{"selector":"@e[0,4,10,r=0]","clickEvent":{"action":"run_command","value":"/setblock -16 4 -4 minecraft:redstone_block"}},{"text":"【→】\n","color":"green","clickEvent":{"action":"run_command","value":"/tp @e[0,4,-1000,dz=2000,dx=0,dy=0,type=ArmorStand] ~ ~ ~-10 "}},{"text":"\n"},{"selector":"@e[-10,4,1,r=0,name=!check]"},{"selector":"@e[-10,4,2,r=0,name=!check]"},{"selector":"@e[-10,4,3,r=0,name=!check]"},{"selector":"@e[-10,4,4,r=0,name=!check]"},{"selector":"@e[-10,4,5,r=0,name=!check]"},{"selector":"@e[-10,4,6,r=0,name=!check]"},{"text":"\n","clickEvent":{"action":"run_command","value":"say hi"}},{"text":" [ Q ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 16 minecraft:redstone_block"}},{"text":"[ W ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 22 minecraft:redstone_block"}},{"text":"[ E ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 4 minecraft:redstone_block"}},{"text":"[ R ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 17 minecraft:redstone_block"}},{"text":"[ T ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 19 minecraft:redstone_block"}},{"text":"[ Y ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 24 minecraft:redstone_block"}},{"text":"[ U ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 20 minecraft:redstone_block"}},{"text":"[ I ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 8 minecraft:redstone_block"}},{"text":"[ O ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 14 minecraft:redstone_block"}},{"text":"[ P ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 15 minecraft:redstone_block"}},{"text":"  │ ENTER │\n","clickEvent":{"action":"run_command","value":"say hi"}},{"text":"  [ A ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 0 minecraft:redstone_block"}},{"text":"[ S ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 18 minecraft:redstone_block"}},{"text":"[ D ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 3 minecraft:redstone_block"}},{"text":"[ F ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 5 minecraft:redstone_block"}},{"text":"[ G ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 6 minecraft:redstone_block"}},{"text":"[ H ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 7 minecraft:redstone_block"}},{"text":"[ J ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 9 minecraft:redstone_block"}},{"text":"[ K ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 10 minecraft:redstone_block"}},{"text":"[ L ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 11 minecraft:redstone_block"}},{"text":"  ","clickEvent":{"action":"run_command","value":"say hi"}},{"text":"│ 刪除文字│\n","clickEvent":{"action":"run_command","value":"/setblock -15 5 -2 minecraft:redstone_block"}},{"text":"   [ Z ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 25 minecraft:redstone_block"}},{"text":"[ X ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 23 minecraft:redstone_block"}},{"text":"[ C ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 2 minecraft:redstone_block"}},{"text":"[ V ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 21 minecraft:redstone_block"}},{"text":"[ B ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 1 minecraft:redstone_block"}},{"text":"[ N ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 13 minecraft:redstone_block"}},{"text":"[ M ]","clickEvent":{"action":"run_command","value":"/setblock -15 4 12 minecraft:redstone_block"}},{"text":"       "},{"text":" │ 刪除拼音 │","clickEvent":{"action":"run_command","value":"/setblock -15 4 -2 minecraft:redstone_block"}}]

復制代碼

其效果如上方動圖所示。

所有點擊事件均為放置紅石塊,由于這個系統(tǒng)并未實裝,所以enter那里并未實裝命令。

其原理為

讀取字庫召喚出來的同音字紙條,紙條上每個盔甲架都代表著一個字,模塊的讀取長度為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模式)

復制代碼

這是一組探測是否能夠向左翻的指令,向右的指令結構相同。

/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指令是為了刷新候選字。

候選字模塊

如圖所示,我們有十個候選字。

每個候選字的處理方式如下

/setblock ~ ~ ~1 air

/execute @e[name=print] ~ ~ ~ kill @e[r=0,name=!print]

/tp @e[0,4,1,r=0] @e[name=print]

kill @e[0,4,-1000,dz=2000,dx=0,dy=0,type=ArmorStand]

/execute @e[name=print] ~ ~ ~ detect ~ ~-1 ~1 planks -1 /tp @e[name=print] ~ ~ ~1

/kill @e[-10,4,0,dz=10,name=!check]

/tp @e[name=check] ~ ~ 1

復制代碼

差不多意思就是漢字指針清除本格內(nèi)容防止bug,將現(xiàn)有的候選字傳送至指針位置,清除剩余候選字,移動指針。清除拼音。

字庫

字庫是個非常浩大的工程,本輸入法支持20811個字,其中不同多音字視為各音節(jié)不同的字,累計103個多音字。

那么這個大的字庫我總得有個調(diào)用的好辦法吧?否則實在是難以使用。

上文對拼音的詳解已經(jīng)說明了調(diào)用辦法。

下文以音“中”為例。

中= ZHONG

={26,8,15,14,7,0}

以這樣一個變幻方式我們可以將任何一個音變?yōu)橐唤M6個的數(shù)組。

漢語一共有406種音,所以我們會有406排命令方塊。

這是讀取zhong音的命令。

/execute @e[-11,4,1,r=0,name=set,score_end=26,score_end_min=26] ~ ~ ~ /execute @e[-11,4,2,r=0,name=set,score_end=8,score_end_min=8] ~ ~ ~ /execute @e[-11,4,3,r=0,name=set,score_end=15,score_end_min=15] ~ ~ ~ /execute @e[-11,4,4,r=0,name=set,score_end=14,score_end_min=14] ~ ~ ~ /execute @e[-11,4,5,r=0,name=set,score_end=7,score_end_min=7] ~ ~ ~ /testfor @e[-11,4,6,r=0,name=set,score_end=0,score_end_min=0]

復制代碼

我們可以很清楚的看到6個數(shù)字所代表的位置。

kill @e[0,4,-1000,dz=2000,dx=0,dy=0,type=ArmorStand]

復制代碼

然后我們會激活一串清理現(xiàn)在的候選字的指令。

summon ArmorStand 0 ~ ~ {CustomName:"中",Invisible:1,NoGravity:1,Marker:1}

復制代碼

然后會在x=0的位置召喚出一條候選字紙帶。

故此我們才能夠完整的使用漢字輸入法,那么就是這樣,希望大家喜歡。


玩家評論
我要點評

網(wǎng)名 注:您的評論需要經(jīng)過審核才會顯示出來。

已有 0 位玩家參與點評
下載排行