跑跑車(chē)首頁(yè)

當(dāng)前位置:首頁(yè)攻略秘籍單機(jī)攻略 → 我的世界命令方塊教程漢字輸入法講解

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

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

首先呢,我先要說(shuō)一下,為什么在玩家可以直接輸入文本的游戲里加入這樣一個(gè)輸入法呢?因?yàn)橛螒蚰壳安⒉荒塬@取玩家輸入的文本,而一旦可以輸入,我們就可以處理這樣的一個(gè)文本。一旦處理這個(gè)文本,我們又能加很多特技了,這個(gè)輸入法的原型,出自我快一年前的掃雷的英雄榜。

總共創(chuàng)立的計(jì)分板只有一個(gè)。我寫(xiě)的名稱(chēng)為end。

這個(gè)計(jì)分板承接各種功能,我會(huì)在模塊介紹中提到具體用法。

那么廢話(huà)不多說(shuō),我們開(kāi)始吧。

首先附上效果圖。

這是整個(gè)電路的鳥(niǎo)瞰截圖。

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

原理

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

原理完!

下面分模塊進(jìn)行講解。

軟鍵盤(pán)-防溢出模塊

下面是一個(gè)指令樣本。

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"}}]

復(fù)制代碼

其效果如上方動(dòng)圖所示。

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

其原理為

讀取字庫(kù)召喚出來(lái)的同音字紙條,紙條上每個(gè)盔甲架都代表著一個(gè)字,模塊的讀取長(zhǎng)度為10個(gè)字。那么我們就應(yīng)該要注意一點(diǎn),字在多于十個(gè)的時(shí)候我們要提供翻頁(yè)功能。但是我們不能翻的太過(guò)頭,否則模塊讀取不到字。

那么我們就需要探測(cè)這個(gè)紙條是否已經(jīng)到了頭,那么我們就要對(duì)超出的部分進(jìn)行探測(cè),一旦沒(méi)有超出的部分,那就代表著已經(jīng)翻到了頭,這時(shí)候就需要消除掉那處的點(diǎn)擊事件,也就是換一條指令。(雖然別的辦法也行,不過(guò)這樣最簡(jiǎn)單粗暴)

/scoreboard players set l end 0

/testfor @e[0,4,0,dz=-100]

/scoreboard players set l end 1  (con模式)

復(fù)制代碼

這是一組探測(cè)是否能夠向左翻的指令,向右的指令結(jié)構(gòu)相同。

/scoreboard players test r end 1 1

/scoreboard players test l end 1 1 (con模式)

/tellraw (con模式)

復(fù)制代碼

這里是一個(gè)探測(cè)的例子,用于探測(cè)指令狀態(tài)。

由于左邊和右邊各有兩種可能,所以總共需要四條序列。不同的tellraw有著不同的翻頁(yè)狀態(tài)。

緩存模塊

也就是中間那兩行目標(biāo)所在的位置,這個(gè)位置呢是非常有趣的。白樺木木板那一行所存儲(chǔ)的是拼音,因?yàn)槠匆糇疃嗟目赡苄詾?個(gè)字母,所以這里也就有六個(gè)位置。橡木木板那一行所存儲(chǔ)的是打出的字,作為一個(gè)中繼緩存。按下enter可以將打好的字轉(zhuǎn)移到指定的位置。

每行有一個(gè)屬于自己的指針。拼音那一行由于需要讀取數(shù)據(jù)所以有一排盔甲架。圖中的命令方塊僅為召喚盔甲架使用,不影響運(yùn)行。

summon ArmorStand ~ ~ ~ {CustomName:"set",NoGravity:1,Marker:1}

復(fù)制代碼

這是一個(gè)樣例的指令。

讀取拼音內(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

復(fù)制代碼

A-Z對(duì)應(yīng)數(shù)字1-26,空格對(duì)應(yīng)數(shù)字0。

然后接下來(lái)是26排命令方塊,對(duì)應(yīng)各個(gè)字母,執(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

復(fù)制代碼

清理一次本格內(nèi)容以防bug。然后寫(xiě)下“A”,最后向右移動(dòng)一次指針。

刪除模塊

和邊上的錄入模塊工作原理很類(lèi)似。

同樣的,有刪除拼音和刪除文字兩排指令。

/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]

復(fù)制代碼

最后的kill指令是為了刷新候選字。

候選字模塊

如圖所示,我們有十個(gè)候選字。

每個(gè)候選字的處理方式如下

/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

復(fù)制代碼

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

字庫(kù)

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

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

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

下文以音“中”為例。

中= ZHONG

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

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

漢語(yǔ)一共有406種音,所以我們會(huì)有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]

復(fù)制代碼

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

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

復(fù)制代碼

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

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

復(fù)制代碼

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

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


玩家評(píng)論
我要點(diǎn)評(píng)

網(wǎng)名 注:您的評(píng)論需要經(jīng)過(guò)審核才會(huì)顯示出來(lái)。

已有 0 位玩家參與點(diǎn)評(píng)
下載排行