发布时间:2023-09-11 11:52:55
一、雷电箭
首先我们先看第一把神奇的箭。
这把应该很熟悉,就是雷电箭啦。
只要一射出去就会,duang的一声,9道闪电落下。究竟怎么做到呢?让我详细的说一说。
我们先看一下以下这段指令。
execute是检测执行指令,它的作用是检测到某一样东西之后执行跟在它后面的指令,而@e【type=Arrow】则是选择的目标,@e是所有实体。
然后【type=Arrow】则是它后面的目标,意思是箭种类,连在一起就是检测所有的箭。然后后面的summon LightningBolt就是召唤雷电啦。
有的同学可能会说:“我设置了之后放出的箭一直在鬼畜地放雷。”
那怎么才能让停止鬼畜呢?那就要涉及到另外一条命令。
testfor指令是检测,后面跟着的@e【type=Arrow】前面讲过是所有箭。然后后面的{inGround:1b}它的意思是箭是否射在地上。
它的单位是b。而1b就是检测箭落在地上。还有很重要的是testfor指令必须要连着比较器(1.8+),否则什么用都没有。
然而你会发现,射出去没用。这是为什么?因为你还漏了一样。那就是高频。
高频要连着testfor的指令,这样才能让它一直检测周围的事物,否则就是一次性啦。我用的是比较器高频,大家也可以用其他类型的高频。
这样还没完,如果就这么完,大家可能会发现,放出一箭之后再放一箭没有效果。
于是我们只能想方法让那支箭消失。
没错,就是kill。在1.8以前kill只能杀自己,现在可以上其他的实体了。于是我们只有在execute命令方块后面连着中继器(如图)让它在0.1秒后kill箭就可以让testfor继续检测下一支箭。
这样完美的雷电箭就诞生了(这里多了8个是因为我想让他生成9道闪电)。
二、岩浆箭
效果图
下面为大家讲解。
和之前一样,设置这样的指令(无视a2)。
这是一条至关重要的命令,execute。
@e【type=Arrow】之前讲过,是检测所有的箭。而后面的summon FallingSand ~ ~ ~ {TileID:10,Time:1}是这次出现的新的命令。
FallingSand翻译过来就是落沙,在Minecraft里面是掉落中的方块。
TileID:10是方块ID,10是流动岩浆块,Time:1(刻)是存在的时间,如果设置的是1然而时间超过了1,它就会变成掉落物。
还记得岩浆箭第一幅图吗
没错就是传说中的五毛钱特效,在这里加了很多粒子。是不是非常的炫酷呢。
让我们看看这俩指令。
这里又新加了particle指令,particle flame ~ ~ ~ 0 0 0 0.1 1000 force。
flame是粒子名,然后~ ~ ~ 是粒子产生的位置,后面的0 0 0 是粒子在扩散的范围,如果都设为0就会按照粒子正常产生一样。
后面的0.1是粒子的运行速度,大部分粒子这个数值越大扩散范围越大,改为0则会掉下来。
后面的1000是粒子的数量,越大越密集,越小越疏散。
force就是是否远处能看见,不加force远处就看不到。(图中是我添加的粒子效果)
最好加上kill指令就做出完美的岩浆箭啦。
三、爆炸箭
首先我们先拉弓。
然后箭所到之处就会boom的一声。
炸出一个洞。没错这一次就是爆炸箭,箭所射到的地方会爆炸。
其原理皆有可观者,我们看看一下这条指令。
前半部分是检测所有实体箭,那么后半部分是什么呢?
summon PrimedTnt ~ ~ ~ {Fuse:0}和之前的岩浆箭类似,也是在箭的位置召唤一个实体,不过这次召唤的是tnt,它的名字就是PrimedTnt。
然后就是它特有的nbt(其实Creeper也有)
{Fuse:0},Fuse是剩余爆炸时间,如果设置为零,召唤出来的tnt就会瞬间爆炸,完成三杀。
四、火球箭
首先仍然是拉弓。
然后出现了一个火球直直地往前飞去。
爆炸了(我设了防爆)。
这一个神奇的火球箭不要10800不要998只要一条指令。
前面是检测所有实体箭(不用加c=-1) 后面是新讲的实体Fireball。我们分开来解析。
summon Fireball ~ ~ ~ 这个很简单,就是在生成一个火球。
ExplosionPower:3 这个是火球的威力,默认是1(即恶魂吐出火球的威力)。
direction:[] 这是火球特有的nbt,是用来控制火球的运动方向与速度。如果不加这个命令,火球会瞬间消失。中括号里面空着,火球就会不动。
至于为什么火球会朝目标的方向飞,是因为在箭的位置召唤了火球,然而箭打中了火球,箭便消失而火球就会向箭原本的移动方向飞(这也是为什么不需要kill和testfor)。
五、多重火球箭
让我们拉一拉弓。
突然天上出现了许多火球。
都往下砸。
位置摆放
要做这个箭,要改变一下布局,如图所示,这一次要直接用高频连着B,即直接检测箭。
前面是检测箭,后面前面也讲过是召唤火球,和前面不同的是它是召唤在箭上面10格,是因为防止箭和火球撞在一起。
如果直接像上图这样设置会发现一个问题,就是召唤出来的火球不会动,不能达到往下落的效果,那怎么办呢?
在之前火球有个特有nbt是direction,前面的火球箭是这样设置的direction:[]。
实际上如果这样的话它默认的是这样的:direction:[0.0,0.0,0.0]那么这3个0.0是什么呢?
分别是火球向xyz轴移动的速度。
图中是direction:[0.0,-3.0,0.0]是让火球向y轴负方向以3的速度移动,即往下落。
最后再上图是A的命令方块设置检测箭落地然后连上kill箭即可。
六、传送箭
仍然先拉弓。
然后射出去。
突然,就被传送到这了。
其原理很简单,大家都应该很熟悉tp指令吧。
tp可以把自己传送到其他玩家上,比如tp doubi doubi2 就是把doubi传送到doubi2。
我们可以利用这个原理,把玩家tp到箭上(服务器的话效果虽一样但意义不一样了)即可。
前面和后面别忘连上testfor和kill。
七、AOE冰箭
首先为了保证箭的功能,我放了一些可怜的Creeper。
箭射了出去地上突然出现一大片冰,Creeper们身上出现了许多冰粒。
因为太冷,它们一直受到伤害。
冰片消失,但似乎它们动不了。
首先当然不用说就是高频+testfor。然后连着第一个命令方块。
这个命令的用处是在箭下面放置一大片冰,这就是新出现的指令fill。
它的基本格式为fill x1 y1 z1 x2 y2 z2 方块名。
图中的命令是fill ~2 ~-1 ~2 ~-2 ~-1 ~-2 ice 就是以箭为中心,在x正方向2格,y负方向1格,z正方向2格这一点,与x负方向2格,y负方向1格,z负方向2格的一点中的地方填充一片冰。
Creeper不能动就是这2个命令方块。
后面effect也是新出现的指令,它的意义在于给实体增加状态。
effect @e[r=3] 15 15 2,@e[r=3]是箭为中心半径三格内的实体,第一个15是状态ID,是失明,下图是2即缓慢。
第2个15是秒数,后面的2是等级(命令弄出的效果比药水多1级,比如等级填的是1就是2级,0就是1级)。
大家应该都清楚Creeper身上的冰粒是粒子效果。然而按照之前的话只能做到箭上面有粒子效果,那么怎么弄呢?很简单。
如图,大家会发现在execute指令后面还加了execute指令,这是为什么呢?
前面的execute @e[type=Arrow]不用说是检测箭。
然后后面的execute @e[type=!Arrow,r=3]的意思就是检测以箭为中心半径3格内不是箭的实体。
没错当type=实体这个实体前面加一个!就等于除了这个实体以外的实体,因为前面有一个execute所以这个execute是以前面为前提,并且以前面为中心发出的。
而经过这个指令后,后面的粒子效果,不是以箭为中心,而是以不是箭的实体为中心。
最后连上kill和与之前一样的fill但把ice改成air即可。
八、AOE火箭
首先先对着一堆Creeper射箭。
箭一射出,周围Creeper都被火花包围并且燃烧起来。
一直燃烧。
又是一波指令到来。
和之前差不多,只不过把粒子效果改成了火焰。
那怎么做到燃烧呢?就是这一条颇为神奇的命令了:entitydata指令。
它可以改变现有实体的nbt,比如这个entitydata @e[type=!Arrow,r=3] {Fire:200}
它是改变以箭为中心半径3格内不是箭的实体。
Fire是生物着火的时间,它是以刻为单位,20刻为1秒,所以是燃烧10秒(这比直接放置火好一点,掉落物不会被火烧)。
九、火柱箭
首先仍然是拿几只Creeper来试试验。
突然几条火柱(试验特效,不一定拿这个粒子)升天,Creeper们突然觉得脚下有一股劲,是挣脱了,冲破了,撞开了的那么一股劲。于是愉悦地跳了起来。
再射几只,Creeper表示如同吃了炫迈,根本停不下来。
继续蹦继续跳,有几只Creeper作死地跳得很高。
然后都摔死了。
原理图
原理很简单,如图最右边是连着高频的testfor,最左边是kill,突出了那一块是特效粒子。
这是从右数第2个命令方块。
第3个。
第4个。大家应该都比较明白吧,就是用tp指令把Creeper tp 到空中。至于为什么要分开3个是因为如果直接一个的话可能效果不太好,分开看起来有种往上跳得效果而不是传送。
十、物质箭
解释:站在什么样的物质方块上,就可以射出一大坨该种物质。
这种箭主要是用来讲一个命令的,大家可以向外扩展。
这次我放了3种方块,首先我们先站在草方块上。
发射。
然而并没有什么卵用。
这一次我们站在泥土上。
发射。
出现了一堵泥墙!
我们再站在石头上。
发射。
出现了一堵侧着石墙。
真大。
这几条命令有点长,但应该很容易理解。
第一个execute是检测箭大家都知道,那么第2个是什么呢?
这是execute的另一个用处,检测实体周围的方块。
execute @p ~ ~ ~ detect ~ ~-1 ~ minecraft:dirt 0就是这个命令。
前面的execute就是检测玩家,然后后面跟着~ ~ ~是确定位置,那么这个~ ~ ~就是玩家的位置。
detect就是检测周围方块,后面跟着的~ ~-1 ~就是刚刚那个位置往下一格的位置,就是玩家下面一格的位置。
后面跟着minecraft:dirt 0 ,minecraft:dirt就是泥土,而后面的0是方块附加值。
整个的意思是检测玩家脚下那一块是否是泥土,是则执行后面的命令,注意的是后面直接跟命令不需要跟~ ~ ~。
比如:execute @p ~ ~ ~ detect ~ ~-1 ~ minecraft:dirt 0 say 1就是检测到玩家脚下是泥土就说1。
后面是fill指令。
同理。
fill石头。
有了这个指令大家可以做个系列,比如当玩家站在不同的方块就有不同效果。
十一、建筑箭
在说这把箭之前,我们先来看看这幅图,是不是第一感觉是:哇看起来好厉害,这么多命令方块。
可是,当射出去的时候。
然而这并没有什么卵用。没错,做这么一个小建筑都要这么多命令方块,那怎么才能少块高能而不是多块低能呢?接下来就要为大家介绍介绍。
没错就是这么少命令方块上面和左边不用说是kill和testfor,那么中间的有什么用呢?
我们就来试试看。
射出去后大家会发现,duang的一下,就会出现一个房子。
哇,竟然有门。
哇,里面设备齐全。
箱子里还有东西呢(这些只需要一个命令)。
这就是传说中的clone指令(即复制粘贴指令)它是复制一定区域粘贴到要复制的位置。
(别照抄,否则出来的可能是空气,说不定会出来一些奇怪的东西)
我复制的区域就是这里。
这两个命令方块的点为复制点粘贴整个建筑(当然这个命令有弊端,那就是你必须要在那个地方建好东西,而且不能破坏,否则出来的就是破坏了的建筑或空气,但它可以帮你快速建筑)。
十二、隐身爆炸箭
先拉弓。
再射箭。
从草群中钻出个tnt。
卧槽,它开始飞了。
爆炸了。
原理很简单首先我们抛弃了比较器,用cb高频。然后呢减少了一个中继器只占用5格的地方。
就是它,我们看后面一部分,我把Fuse调成80是不让它瞬间爆炸,完成双杀。
机智的朋友会发现,后面多了个nbt,riding。
那么这多出的一条有什么用,我们来分析这多出的部分。
Riding:{id:Bat,ActiveEffects:[{Id:14,Amplifier:1,Duration:99999,Ambient:1}]}
Riding:{id:Bat}意义是让前面的实体骑着这个实体,即PrimedTnt骑着蝙蝠。
格式是Riding:{id:xxx}注意的是id都是小写。
ActiveEffects就是给实体增加状态。
Id:14状态的种类,14是隐身。
Amplifier:1等级,这里设置是1级。
Duration:99999时间,这里设置是99999秒。
Ambient:1只能设置1或0,1是看不见粒子,0看得见。
总得来说,就是让PrimedTnt骑着隐身得蝙蝠。
十三、挖基岩的箭
经过我的一番改造,变成了这样。首先左边是当检测到地上的箭给予高频。
我发现了一个bug特性,当execute检测到东西时会发出能量。于是当检测到基岩才会触发掉落基岩的命令。
就是这个。
Item就是物品,后面的Item;{}是nbt,id是物品id,这里是基岩。
Count:1就是堆叠数量,不加就会捡不起来。
十四、莫名其妙箭
先射箭。
箭射了出去,Creeper表示有点不舒服。
(Creeper:谁拉我?放我出去)
然后就死掉了。
其实也没什么好说的,只不过execute指令跟着是tp @e[r=4] ~ ~-2 ~。
十五、艾特箭
首先先拉弓。
射出去。
瞬间从天而降僵尸大军,看这阵型多整齐。
你看都是僵尸。
大家可能很疑惑,要做出这么多Zombie肯定要很多命令方块吧?
我的回答是:no。记得我和大家讲过的fill指令吧,现在我就用这个fill指令填充实体。
看,只用这么少命令方块,当然首先是testfor啦。
然后就是这样,检测到箭fill沙子。
大家都知道,沙子在空中就会掉落,一掉落就会变成掉落沙(你也可以用沙砾,红沙等,当然你可以土豪的用龙蛋),于是我们就可以像这样,在掉落沙上summon Zombie。
最后kill掉落沙和箭即可。
(还有第二种就是fill红石,因为红石下面没有东西就会掉落,然后再掉落的红石召唤实体最后清楚掉落物)
(这两种都有bug,比如沙子可能会不掉落,或者可能刚好它们所在空间下面有方块都召唤不了)