跑跑車首頁

當前位置:首頁攻略秘籍單機攻略 → 我的世界命令方塊教程單刻輸出的GPS制作

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

作者:乙烯_中國來源:本站整理 發(fā)表時間:2015/11/13 8:39:46 評論(0)

小編為大家?guī)砹恕段业氖澜纭访罘綁K教程單刻輸出的GPS制作,這是來自MCBBS版主乙烯_中國的一個作品,有興趣的玩家都來看看吧。相信認識我的人多多少少會知道我在幾個月前水過一個GPS原型機。在那時syl跟我說的GPS能夠單刻輸出結(jié)果。這點讓我很是在意,并一直琢磨著如何做到。之前的一次意外讓我無意中摸索到了訣竅。

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

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

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

實驗的內(nèi)容很簡單,tp一個實體進邊界之地就明朗了。

summon Zombie ~ ~1 ~ {CustomName:hi}


召喚一個叫hi的僵尸。

由于我實驗的地方的z坐標為負數(shù),所以我們選擇z軸負方向的邊界之地。

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


tp進邊界之地,這個沒啥好說的,接下來就是重頭戲了。

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

首先我們來實驗一下

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


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


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

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



會怎樣呢?

答案是,僵尸不見了。

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

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


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

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

確認完成。

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

首先,還是萬年二分法。

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

/scoreboard objectives add x dummy


/scoreboard objectives add z dummy


這里以x變量為例子。注意,每個變量一個實體。

然后召喚一個實體進行判斷。

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 ~ ~


接下來運行以下規(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)?。

當然最后不要忘記kill掉這個計算的實體。

kill @e[name=mark]

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

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

高頻執(zhí)行這個指令,然后沒病走兩步,就可以很生動的看到坐標的變化。

而且這個模塊運行起來一點都不卡,實用性非常高。我已經(jīng)使用到我最近寫的一個原版mod里面了。我會在樓中樓里面附上那貼的鏈接,你們可以去那個帖子下載下來看看。


玩家評論
我要點評

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

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