跑跑車首頁(yè)

當(dāng)前位置:首頁(yè)攻略秘籍單機(jī)攻略 → 我的世界命令方塊教程單刻輸出的GPS制作

我的世界命令方塊教程單刻輸出的GPS制作

作者:乙烯_中國(guó)來(lái)源:本站整理 發(fā)表時(shí)間:2015/11/13 8:39:46 評(píng)論(0)

小編為大家?guī)?lái)了《我的世界》命令方塊教程單刻輸出的GPS制作,這是來(lái)自MCBBS版主乙烯_中國(guó)的一個(gè)作品,有興趣的玩家都來(lái)看看吧。相信認(rèn)識(shí)我的人多多少少會(huì)知道我在幾個(gè)月前水過(guò)一個(gè)GPS原型機(jī)。在那時(shí)syl跟我說(shuō)的GPS能夠單刻輸出結(jié)果。這點(diǎn)讓我很是在意,并一直琢磨著如何做到。之前的一次意外讓我無(wú)意中摸索到了訣竅。

等我做出來(lái)興高采烈的和syl說(shuō)的時(shí)候他告訴我外國(guó)人做過(guò)了。唉syl我和你說(shuō)不帶你這么玩的(╯‵□′)╯︵┻━┻?傊窒硎敲赖拢瑒e計(jì)較這個(gè)了,先把這個(gè)技術(shù)推廣吧。

首先來(lái)介紹一下GPS是指的什么吧。玩命令的同學(xué)應(yīng)該都知道m(xù)c是沒(méi)有提供給命令系統(tǒng)讀取坐標(biāo)的接口,那么不能獲取坐標(biāo)在某些方面其實(shí)還是很不方便的。所以之前那個(gè)原型機(jī)做到了輸出整數(shù)的坐標(biāo)。現(xiàn)在的這個(gè)系統(tǒng)也能做到,并且是每時(shí)每刻瞬間輸出的類型。

那么這里的話我也大概說(shuō)一下具體原理。整個(gè)事情是這樣的,前段時(shí)間呢,是要去研究邊界之地,結(jié)果呢,手賤,傳送的邊界之地里面去了,然后我就顯示了掉線。單人游戲也會(huì)掉線這一點(diǎn)我覺(jué)得非常的有趣,但是那個(gè)存檔之后也就打不開(kāi)了,由于是隨機(jī)生成的地圖,所以其實(shí)也并不重要。但是,我們需要透過(guò)現(xiàn)象看本質(zhì),如果玩家在邊界之地會(huì)被處理為掉線,那么其他實(shí)體會(huì)怎樣呢,隨后我就進(jìn)行了一下實(shí)驗(yàn)。

實(shí)驗(yàn)的內(nèi)容很簡(jiǎn)單,tp一個(gè)實(shí)體進(jìn)邊界之地就明朗了。

summon Zombie ~ ~1 ~ {CustomName:hi}


召喚一個(gè)叫hi的僵尸。

由于我實(shí)驗(yàn)的地方的z坐標(biāo)為負(fù)數(shù),所以我們選擇z軸負(fù)方向的邊界之地。

tp @e[name=hi] ~ ~ ~-30000000


tp進(jìn)邊界之地,這個(gè)沒(méi)啥好說(shuō)的,接下來(lái)就是重頭戲了。

測(cè)量好執(zhí)行次序之后,讓以下指令控制在上一條之后激活。

首先我們來(lái)實(shí)驗(yàn)一下

tp @e[name=hi] ~ ~ ~30000000


當(dāng)然這條指令的目的就是將僵尸tp回來(lái),而激活之后的結(jié)果是,僵尸顯示在原地,其實(shí)已經(jīng)去了一趟邊界了。


那么如果我們把第二條指令修改為

execute @e[name=hi] ~ ~ ~ tp @e[name=hi] ~ ~ ~30000000



會(huì)怎樣呢?

答案是,僵尸不見(jiàn)了。

這樣的對(duì)照實(shí)驗(yàn)我們可以很鮮明的看出區(qū)別,在于邊界之地的實(shí)體并不能用exe指令來(lái)執(zhí)行指令。

[07:01:48] 你輸入的數(shù)字 (-3.000093340725673E7)太小了,它至少需要為-30000000


通過(guò)這樣的反饋信息我們也可以注意到一些有趣的冷知識(shí)。就是命令內(nèi)部的一些數(shù)據(jù)其實(shí)也是有取值范圍的,比如這里的坐標(biāo)。

那么進(jìn)行其他的一些實(shí)驗(yàn)以確保確實(shí)exe是不能執(zhí)行的。

確認(rèn)完成。

那么這個(gè)不能用的發(fā)現(xiàn)能用在哪里呢?自然gps應(yīng)該是可以用上的,因?yàn)檫@個(gè)可以判斷實(shí)體是否在邊界之地里。那么我們來(lái)進(jìn)行系統(tǒng)的架構(gòu)。

首先,還是萬(wàn)年二分法。

這里講解一下,這里我們需要先創(chuàng)建x和z兩個(gè)計(jì)分板變量。

/scoreboard objectives add x dummy


/scoreboard objectives add z dummy


這里以x變量為例子。注意,每個(gè)變量一個(gè)實(shí)體。

然后召喚一個(gè)實(shí)體進(jìn)行判斷。

execute @a ~ 0 ~ summon ArmorStand ~ ~ ~

{CustomName:"mark"}


然后執(zhí)行以下一組指令讓系統(tǒng)初始化

/scoreboard players reset @a x


tp @e[name=mark] ~-16777216 ~ ~


tp @e[name=mark] ~-16777216 ~ ~


/scoreboard players remove @a x 30000000


execute @e[name=mark] ~ ~ ~ tp

@e[name=mark] ~16777216 ~ ~


execute @e[name=mark] ~ ~ ~ tp

@e[name=mark] ~16777216 ~ ~


接下來(lái)運(yùn)行以下規(guī)律的指令

tp @e[name=mark] ~16777216 ~ ~


execute @e[name=mark] ~ ~ ~ scoreboard

players add @a x 16777216


execute @e[name=mark] ~ ~ ~ tp @e[name=mark]

~-16777216 ~ ~

每組指令的數(shù)字需要除以2,以此遞推。直到數(shù)字變?yōu)?。

當(dāng)然最后不要忘記kill掉這個(gè)計(jì)算的實(shí)體。

kill @e[name=mark]

這個(gè)的精髓就在于利用exe進(jìn)行判斷實(shí)體是否在邊界之地內(nèi)部。這比我原來(lái)所使用的選擇器的判斷方法高效很多。話是這么說(shuō)啦,但是還是比較抽象不是嗎,這里我就把我平時(shí)喜歡用的方法說(shuō)一下。我一般喜歡用這個(gè)指令來(lái)直接看。

/tellraw @a [{"score":{"objective":"x","name":"x"},"bold":"true"},{"text":","},{"score":{"objective":"z","name":"z"},"bold":"true"}]

高頻執(zhí)行這個(gè)指令,然后沒(méi)病走兩步,就可以很生動(dòng)的看到坐標(biāo)的變化。

而且這個(gè)模塊運(yùn)行起來(lái)一點(diǎn)都不卡,實(shí)用性非常高。我已經(jīng)使用到我最近寫(xiě)的一個(gè)原版mod里面了。我會(huì)在樓中樓里面附上那貼的鏈接,你們可以去那個(gè)帖子下載下來(lái)看看。


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

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

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