我的世界检测实体死前位置方法研究详解

时间:2018-01-10 来源:88130安卓下载 作者:佚名

  我的世界检测实体死前位置方法研究详解。要知道在我的世界中检测实体死亡前的位置问题一直是诸多大神研究的兴趣,那今天就和大家分享一个检测实体死前位置的新方法吧!希望大家喜欢。

  游戏园我的世界官方群: 325049520 欢迎各路喜爱我的世界的小伙伴们加入讨论!

  一直以来,检测实体的死前位置都是一件很麻烦的事情。常见的方法有:

  配对——就是每个实体给一个编号,然后把指定编号的盔甲架tp到那个实体那里

  这个方法虽然不太可能出错,因为那个盔甲架是肯定传送到指定的实体那里的,然而那个穷举数十分多。

  检测掉落物——这个方法就是给生物一个装备,可能是不能显示的。然后该生物死后,那装备就会掉下,检测那个装备就代表检测那个生物死前的位置。

  然而这个方法有极大的局限,比如说野生的生物,你需要更改他们的装备,就可能会令他们原本的装备失去。也不能够追踪其他实体种类。

  有一天,我突然想弄这个,想了想,其实我们要做的东西其实很简单。

  流程就是

  选择实体?选择最近的从未选择过(这1游戏刻)的盔甲架并把其tp过来

  (不停重复以上步骤直至所有实体都选择完)

  那么剩下的不就是代表的实体"死了"的盔甲架吗?

  虽然的确会有bug,比如一些会传送的实体,可能就不适合这个。还有当实体很靠近的时候可能会互相干扰,盔甲架可能到了旁边的实体也不一定,然而这其实根本就无关要紧,只要不是不能用就好了2333333333

  (起码这个比一大堆穷举/只能检测生物的位置对我来说方便点吧23333)

  思路、原理分析

  首先,我们用stats把指定实体和盔甲架的successcount储存到记分板,并且把其分数设置为0。

  然后,我们execute指定实体execute该实体最近还没被选择的盔甲架tp到最近还没被选择过的指定实体

  比如execute @e[type=!Player,score_time=1,score_time_min=1] ~ ~ ~ execute @e[c=1,type=ArmorStand,score_stats=0] ~ ~ ~ tp @e[c=1] @e[c=1,score_time=1,score_time_min=1,score_stats=0]

  由于tp了之后,该实体和用以标记的盔甲架的successcount分数都会为1(execute的成功),所以之后就不会选择到它们

  之后,我们就可以对stats分数为0的盔甲架为所欲为♂ (因为stats为0的盔甲架就代表了它是剩下的一个,没有任何配搭,代表它所标记的实体死了)

  #其实这里有个假设的,我刚才忘记说明了2333333我是假设每个实体最近的盔甲架为其上1gt的位置,所以这东西是根据这个假设来运作的

  如果那个实际情况违背了这个假设(比如会瞬移的实体),这样子这个系统就会出很大的bug

  例子下载链接:

  密码:da6r

  这个例子是标记僵尸的,然而其他的实体也是能够标记的,只要不是末影人这类会传送的。

  命令:

  scoreboard players add @e[type=Zombie] time 0

  execute @e[score_time=0,score_time_min=0] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:"Marker",Invisible:1b,NoGravity:1b,Invulnerable:1b}

  scoreboard players set @e[score_time=0,score_time_min=0] time 1

  scoreboard players set @e[type=!Player] stats 0

  execute @e[type=!Player] ~ ~ ~ stats entity @e[c=1,r=0,type=!Player] set SuccessCount @e[c=1,r=0,type=!Player] stats

  scoreboard players set @e[type=!Player] stats 0

  execute @e[type=!Player,score_time=1,score_time_min=1] ~ ~ ~ execute @e[c=1,type=ArmorStand,score_stats=0] ~ ~ ~ tp @e[c=1] @e[c=1,score_time=1,score_time_min=1,score_stats=0]

  scoreboard players set @e[score_stats=0,name=Marker] time -5

  execute @e[score_time=-5,type=ArmorStand] ~ ~ ~ /particle fireworksSpark ~ ~ ~ 0 0 0 1 50

  kill @e[score_time=-5,type=ArmorStand]

  首先,前三个命令都是为了标记新诞生的僵尸,并且让他们生成盔甲架的。我们先把所有僵尸的time分数+0(不改变分数,然而如果没有分数就会把分数变为0),然后让所有time分数为0的summon盔甲架,之后把他们的分数设置为1(让他们不会再生成盔甲架)。

  之后的3个命令就是为了设置僵尸和盔甲架的stats

  首先把stats分数设置为0(以免出现没有分数的情况),然后设置stats(每只僵尸和盔甲架的successcount设置给自己的stats分数里),最后把stats分数设置为0(因为上一个命令是成功的,所以他们的stats分数是1)

  然后,那一个命令就是整个系统的核心了,详见上一个部分的解释 (虽然也说得不详细)。

  最后的三个指令,就是用来对那个stats分数为0的实体执行操作的

  首先我们把stats分数为0的实体用time分数来标记,因为execute命令在他们身上执行了之后也是会让其分数变为1的

  之后我们就执行一些指令(比如在这里就是用particle指令来告诉玩家这个盔甲架的主人死了)

  最后就把那个没有主人的盔甲架杀死

  bug:

  1.不能指定末影人这类会瞬移的实体,因为他们传送来传送去,这系统根本就不知道哪个盔甲架代表哪只末影人,于是那些位置就可能乱起来

  2.不能跨世界指定,因为那盔甲架我并不能保证它能够过去那个世界(尤其是末地)

  3.实体之间距离很接近的话,那个stats有可能会混乱(由于那个stats储存的分数是给最近的非玩家实体,太靠近可能会给错人,其原因应该是MC的特性吧。。。),于是那个盔甲架可能会传送到同一个实体那里。然而不用担心,等一会/实体之间的距离远了的话,这个bug就会自动消失。

  4.玩家千万千万别打要标记的实体。。。。。。。无论是创造模式还是生存等都千万别打。。。。原因还是未知,可能就是MC的特性

  PS:在此非常感谢我的世界玩家pca006132的分享。

  以上就是我的世界检测实体死前位置方法研究详解。更多精彩尽在游戏园我的世界专区。

  热门攻略推荐:

  我的世界怎么保暖 利用篝火让玩家穿上衣服保暖

  我的世界天降火球 教你怎么召唤陨石

  关于设置自定义方块掉落的说明与样例代码介绍

  新特性:将可以自定义生物和方块的掉落物问题

  我的世界检测实体死前位置方法研究详解。要知道在我的世界中检测实体死亡前的位置问题一直是诸多大神研究的兴趣,那今天就和大家分享一个检测实体死前位置的新方法吧!希望大家喜欢。

  游戏园我的世界官方群: 325049520 欢迎各路喜爱我的世界的小伙伴们加入讨论!

  一直以来,检测实体的死前位置都是一件很麻烦的事情。常见的方法有:

  配对——就是每个实体给一个编号,然后把指定编号的盔甲架tp到那个实体那里

  这个方法虽然不太可能出错,因为那个盔甲架是肯定传送到指定的实体那里的,然而那个穷举数十分多。

  检测掉落物——这个方法就是给生物一个装备,可能是不能显示的。然后该生物死后,那装备就会掉下,检测那个装备就代表检测那个生物死前的位置。

  然而这个方法有极大的局限,比如说野生的生物,你需要更改他们的装备,就可能会令他们原本的装备失去。也不能够追踪其他实体种类。

  有一天,我突然想弄这个,想了想,其实我们要做的东西其实很简单。

  流程就是

  选择实体?选择最近的从未选择过(这1游戏刻)的盔甲架并把其tp过来

  (不停重复以上步骤直至所有实体都选择完)

  那么剩下的不就是代表的实体"死了"的盔甲架吗?

  虽然的确会有bug,比如一些会传送的实体,可能就不适合这个。还有当实体很靠近的时候可能会互相干扰,盔甲架可能到了旁边的实体也不一定,然而这其实根本就无关要紧,只要不是不能用就好了2333333333

  (起码这个比一大堆穷举/只能检测生物的位置对我来说方便点吧23333)

  思路、原理分析

  首先,我们用stats把指定实体和盔甲架的successcount储存到记分板,并且把其分数设置为0。

  然后,我们execute指定实体execute该实体最近还没被选择的盔甲架tp到最近还没被选择过的指定实体

  比如execute @e[type=!Player,score_time=1,score_time_min=1] ~ ~ ~ execute @e[c=1,type=ArmorStand,score_stats=0] ~ ~ ~ tp @e[c=1] @e[c=1,score_time=1,score_time_min=1,score_stats=0]

  由于tp了之后,该实体和用以标记的盔甲架的successcount分数都会为1(execute的成功),所以之后就不会选择到它们

  之后,我们就可以对stats分数为0的盔甲架为所欲为♂ (因为stats为0的盔甲架就代表了它是剩下的一个,没有任何配搭,代表它所标记的实体死了)

  #其实这里有个假设的,我刚才忘记说明了2333333我是假设每个实体最近的盔甲架为其上1gt的位置,所以这东西是根据这个假设来运作的

  如果那个实际情况违背了这个假设(比如会瞬移的实体),这样子这个系统就会出很大的bug

  例子下载链接:

  密码:da6r

  这个例子是标记僵尸的,然而其他的实体也是能够标记的,只要不是末影人这类会传送的。

  命令:

  scoreboard players add @e[type=Zombie] time 0

  execute @e[score_time=0,score_time_min=0] ~ ~ ~ summon ArmorStand ~ ~ ~ {CustomName:"Marker",Invisible:1b,NoGravity:1b,Invulnerable:1b}

  scoreboard players set @e[score_time=0,score_time_min=0] time 1

  scoreboard players set @e[type=!Player] stats 0

  execute @e[type=!Player] ~ ~ ~ stats entity @e[c=1,r=0,type=!Player] set SuccessCount @e[c=1,r=0,type=!Player] stats

  scoreboard players set @e[type=!Player] stats 0

  execute @e[type=!Player,score_time=1,score_time_min=1] ~ ~ ~ execute @e[c=1,type=ArmorStand,score_stats=0] ~ ~ ~ tp @e[c=1] @e[c=1,score_time=1,score_time_min=1,score_stats=0]

  scoreboard players set @e[score_stats=0,name=Marker] time -5

  execute @e[score_time=-5,type=ArmorStand] ~ ~ ~ /particle fireworksSpark ~ ~ ~ 0 0 0 1 50

  kill @e[score_time=-5,type=ArmorStand]

  首先,前三个命令都是为了标记新诞生的僵尸,并且让他们生成盔甲架的。我们先把所有僵尸的time分数+0(不改变分数,然而如果没有分数就会把分数变为0),然后让所有time分数为0的summon盔甲架,之后把他们的分数设置为1(让他们不会再生成盔甲架)。

  之后的3个命令就是为了设置僵尸和盔甲架的stats

  首先把stats分数设置为0(以免出现没有分数的情况),然后设置stats(每只僵尸和盔甲架的successcount设置给自己的stats分数里),最后把stats分数设置为0(因为上一个命令是成功的,所以他们的stats分数是1)

  然后,那一个命令就是整个系统的核心了,详见上一个部分的解释 (虽然也说得不详细)。

  最后的三个指令,就是用来对那个stats分数为0的实体执行操作的

  首先我们把stats分数为0的实体用time分数来标记,因为execute命令在他们身上执行了之后也是会让其分数变为1的

  之后我们就执行一些指令(比如在这里就是用particle指令来告诉玩家这个盔甲架的主人死了)

  最后就把那个没有主人的盔甲架杀死

  bug:

  1.不能指定末影人这类会瞬移的实体,因为他们传送来传送去,这系统根本就不知道哪个盔甲架代表哪只末影人,于是那些位置就可能乱起来

  2.不能跨世界指定,因为那盔甲架我并不能保证它能够过去那个世界(尤其是末地)

  3.实体之间距离很接近的话,那个stats有可能会混乱(由于那个stats储存的分数是给最近的非玩家实体,太靠近可能会给错人,其原因应该是MC的特性吧。。。),于是那个盔甲架可能会传送到同一个实体那里。然而不用担心,等一会/实体之间的距离远了的话,这个bug就会自动消失。

  4.玩家千万千万别打要标记的实体。。。。。。。无论是创造模式还是生存等都千万别打。。。。原因还是未知,可能就是MC的特性

  PS:在此非常感谢我的世界玩家pca006132的分享。

  以上就是我的世界检测实体死前位置方法研究详解。更多精彩尽在游戏园我的世界专区。

  热门攻略推荐:

  我的世界怎么保暖 利用篝火让玩家穿上衣服保暖

  我的世界天降火球 教你怎么召唤陨石

  关于设置自定义方块掉落的说明与样例代码介绍

  新特性:将可以自定义生物和方块的掉落物问题

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高