我的世界命令方块教程单刻输出的GPS制作

小编为大家带来了《我的世界》命令方块教程单刻输出的GPS制作,这是来自MCBBS版主乙烯_中国的一个作品,有兴趣的玩家都来看看吧。相信认识我的人多多少少会知道我在几个月前水过一个GPS原型机。在那时syl跟我说的GPS能够单刻输出结果。这点让我很是在意,并一直琢磨着如何做到。之前的一次意外让我无意中摸索到了诀窍。

等我做出来兴高采烈的和syl说的时候他告诉我外国人做过了。唉syl我和你说不带你这么玩的(�s�F□′)�s�喋擤ォ摺W苤�分享是美德,别计较这个了,先把这个技术推广吧。

首先来介绍一下GPS是指的什么吧。玩命令的同学应该都知道mc是没有提供给命令系统读取坐标的接口,那么不能获取坐标在某些方面其实还是很不方便的。所以之前那个原型机做到了输出整数的坐标。现在的这个系统也能做到,并且是每时每刻瞬间输出的类型。

那么这里的话我也大概说一下具体原理。整个事情是这样的,前段时间呢,是要去研究边界之地,结果呢,手贱,传送的边界之地里面去了,然后我就显示了掉线。单人游戏也会掉线这一点我觉得非常的有趣,但是那个存档之后也就打不开了,由于是随机生成的地图,所以其实也并不重要。但是,我们需要透过现象看本质,如果玩家在边界之地会被处理为掉线,那么其他实体会怎样呢,随后我就进行了一下实验。

实验的内容很简单,tp一个实体进边界之地就明朗了。

summon Zombie ~ ~1 ~ {CustomName:hi}

召唤一个叫hi的僵尸。

2015111308472637841_600_0

由于我实验的地方的z坐标为负数,所以我们选择z轴负方向的边界之地。

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

tp进边界之地,这个没啥好说的,接下来就是重头戏了。

测量好执行次序之后,让以下指令控制在上一条之后激活。

首先我们来实验一下

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

当然这条指令的目的就是将僵尸tp回来,而激活之后的结果是,僵尸显示在原地,其实已经去了一趟边界了。

2015111308472660539

那么如果我们把第二条指令修改为

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

会怎样呢?

答案是,僵尸不见了。

这样的对照实验我们可以很鲜明的看出区别,在于边界之地的实体并不能用exe指令来执行指令。

[07:01:48] 你输入的数字 (-3.000093340725673E7)太小了,它至少需要为-30000000

通过这样的反馈信息我们也可以注意到一些有趣的冷知识。就是命令内部的一些数据其实也是有取值范围的,比如这里的坐标。

那么进行其他的一些实验以确保确实exe是不能执行的。

确认完成。

那么这个不能用的发现能用在哪里呢?自然gps应该是可以用上的,因为这个可以判断实体是否在边界之地里。那么我们来进行系统的架构。

首先,还是万年二分法。

这里讲解一下,这里我们需要先创建x和z两个计分板变量。

/scoreboard objectives add x dummy

/scoreboard objectives add z dummy

这里以x变量为例子。注意,每个变量一个实体。

然后召唤一个实体进行判断。

execute @a ~ 0 ~ summon ArmorStand ~ ~ ~

{CustomName:”mark”}

然后执行以下一组指令让系统初始化

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

接下来运行以下规律的指令

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

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

players add @a x 16777216

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

~-16777216 ~ ~

每组指令的数字需要除以2,以此递推。直到数字变为1。

当然最后不要忘记kill掉这个计算的实体。

kill @e[name=mark]

这个的精髓就在于利用exe进行判断实体是否在边界之地内部。这比我原来所使用的选择器的判断方法高效很多。话是这么说啦,但是还是比较抽象不是吗,这里我就把我平时喜欢用的方法说一下。我一般喜欢用这个指令来直接看。

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

高频执行这个指令,然后没病走两步,就可以很生动的看到坐标的变化。

而且这个模块运行起来一点都不卡,实用性非常高。我已经使用到我最近写的一个原版mod里面了。我会在楼中楼里面附上那贴的链接,你们可以去那个帖子下载下来看看。

原创文章,作者:spike,如若转载,请注明出处:http://www.kz168.cn/54075.html