请选择 进入手机版 | 继续访问电脑版
查看: 182|回复: 12

[命令方块] [1.14+]诸葛连弩(OOC,datapack)

[复制链接]

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 Zai_Ge 于 2020-2-14 22:27 编辑

诸葛连弩3.gif 诸葛连弩2.gif
无聊的时候做了一个可以连发,自动装填的弩,用了20条指令,6个计分板,以及1个队伍去实现。可以显示背包剩余箭的数量以及装填箭矢数,为了防止卡顿,每支发出后50ticks的箭矢会被清除,而且弹道无下坠,箭矢不伤玩家。美中不足的是弩不可以附魔,并且使用后不能减去耐久度,为了弥补这个不足之处,我直接用命令给这把弩增添了穿透、多重射击的功能。下面是指令:
  1. title @a times 1 1 1
  2. scoreboard players add @a LoadedAmmo 0
  3. scoreboard players add @a Reload 0
  4. team join NoFriendlyFire @a
  5. execute as @a at @s store result score @s AmmoTotal run clear @s minecraft:arrow 0
  6. execute as @a at @s store success score @s Selected if entity @s[nbt={SelectedItem:{id:"minecraft:crossbow"}}]
  7. execute as @a at @s store result score @s Loaded run data get entity @s SelectedItem.tag.Charged 1
  8. execute as @a at @s unless score @s Reload matches 1..29 run title @s[scores={Selected=1}] actionbar [{"score":{"name":"@s","objective":"LoadedAmmo"},"bold":"true","color":"green"},{"text":" / ","color":"white","bold":"true"},{"score":{"name":"@s","objective":"AmmoTotal"},"bold":"true","color":"green"}]
  9. scoreboard players remove @a[scores={LoadedAmmo=1..,Loaded=0,Selected=1,Reload=0}] LoadedAmmo 1
  10. scoreboard players set @a[scores={LoadedAmmo=0,Loaded=0,Reload=0}] Reload 30
  11. scoreboard players remove @a[scores={AmmoTotal=1..,Selected=1,Reload=1..}] Reload 1
  12. execute as @a[scores={LoadedAmmo=0,Selected=1,Reload=0,Loaded=0}] at @s store result score @s LoadedAmmo run clear @s minecraft:arrow 10
  13. execute as @a at @s run replaceitem entity @a[scores={Reload=0,Selected=1,Loaded=0,LoadedAmmo=1..}] weapon.mainhand minecraft:crossbow{ChargedProjectiles:[{id:"minecraft:arrow",Count:1b},{id:"minecraft:arrow",Count:1b},{id:"minecraft:arrow",Count:1b}],Charged:1b} 1
  14. team join friend @e[type=minecraft:arrow]
  15. execute as @e[type=minecraft:arrow] at @s run data merge entity @s {NoGravity:1b,PierceLevel:100}
  16. playsound minecraft:block.note_block.snare block @a[scores={Selected=1,AmmoTotal=1..,Reload=1..}] ~ ~ ~ 100
  17. scoreboard players add @e[type=minecraft:arrow] CleanTick 1
  18. execute as @e[type=minecraft:arrow,scores={CleanTick=50..}] run kill @s
  19. execute as @e[type=minecraft:arrow] run data merge entity @s {pickup:0b}
  20. execute as @a at @s run title @s[scores={Reload=1..,LoadedAmmo=0,AmmoTotal=1..,Selected=1}] actionbar [{"text":"reloading...","color":"red"},{"score":{"name":"@s","objective":"Reload"},"color":"aqua"}]
复制代码
原理解释:
当背包有箭的时候且弹夹是空、装填时间到0才会自动装填,每发出一支箭弹夹数量就减1,弹夹数量不为0的时候用replaceitem指令把弩替换成一把已装填好的弩实现连发的目的。在恰当时候才会显示弹夹、自动数量还有装填状态及其时间。
下载(记得回复哦~):
诸葛连弩.rar (3.79 KB, 下载次数: 1)

评分

参与人数 2 小麦 +2 金锭 +17 收起 理由
№1史蒂夫 + 1 + 5 支持原创
Argon_gas + 1 + 12 支持原创

查看全部评分

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
 楼主| 发表于 5 天前 | 显示全部楼层
本帖最后由 Zai_Ge 于 2020-2-16 20:49 编辑

补充:下面是这个原版模组所用到的计分板和队伍
Loaded装弹状态:用于探测手上的弩玩家是否装弹,是则为1否则为0,用作执行命令的条件。
Reload换弹冷却:当发射出最后一支箭矢时,作为一个倒计时来计算换弹时间,到达0时重新装上弹夹。被我设置为30tick
LoadedAmmo装弹数量:玩家当前弹夹含有子弹的数量,也用作用作执行命令的条件还有显示。默认为10发
AmmoTotal背包弹药:探测玩家背包上含有的箭矢数量,也用用作执行命令的条件还有显示。
CleanTick清除计时:用于对箭从发出后计时,达到或超过时间箭就会被清除。设为50tick
Selected装备状态:探测玩家是否装备了弩,是则为1否则为0,用作执行命令的条件。
NoFriendlyFire无伤队伍:通过把玩家和箭矢加入队伍,防止箭因生物免疫伤害时反弹伤及玩家。
这是加上上面指令的效果:
诸葛连弩4.gif

92

主题

2203

帖子

1356

积分

Lv.7 下界居民

UID
5000750
小麦
700
金锭
765
下界之星
0
发表于 6 天前 | 显示全部楼层
技巧版终于有点新东西了
对于箭的处理有点简陋了,你这样搞会让小白哭死的
可以对持弩玩家周围的箭加个tag
或者还可以比较UUID,不过有点复杂了
前排支持

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
 楼主| 发表于 6 天前 | 显示全部楼层
Argon_gas 发表于 2020-2-14 23:08
技巧版终于有点新东西了
对于箭的处理有点简陋了,你这样搞会让小白哭死的
可以对持弩玩家周围的箭加个ta ...

没办法,要动态检测,而且tag不能使用多个标签一起使用

点评

我们两个是在说一个东西吗  发表于 6 天前

46

主题

559

帖子

293

积分

Lv.5 农牧专家

UID
16359
小麦
90
金锭
1765
下界之星
0
发表于 5 天前 来自手机 | 显示全部楼层

直接把玩家uuid扔到箭的owner里

点评

哦吼  发表于 5 天前

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
 楼主| 发表于 5 天前 | 显示全部楼层
Msure 发表于 2020-2-15 11:27
直接把玩家uuid扔到箭的owner里

箭是玩家发出来的,自然就不用存了,本身就有玩家的uuid了,而且这样指定某uuid的箭去执行指令,好像有点不太合适

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
 楼主| 发表于 5 天前 | 显示全部楼层
Argon_gas 发表于 2020-2-14 23:08
技巧版终于有点新东西了
对于箭的处理有点简陋了,你这样搞会让小白哭死的
可以对持弩玩家周围的箭加个ta ...

哦,我懂你意思了,你的意思是不是想把这把弩发出的箭跟其他普通的箭区分开。这样就不会对所有箭起作用了对吧

11

主题

37

帖子

23

积分

攻略组-见习

UID
49109
小麦
2
金锭
70
下界之星
0
 楼主| 发表于 4 天前 | 显示全部楼层
自顶

0

主题

35

帖子

9

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
13
下界之星
0
发表于 4 天前 来自手机 | 显示全部楼层
eofiwphsdsdsfrrrffrerkjresebkeg45wihogfjrgtojigxfouweafuisdfkvrh

0

主题

35

帖子

9

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
13
下界之星
0
发表于 4 天前 来自手机 | 显示全部楼层
eofiwphsdsdsfrrrffrerkjresebkeg45wihogfjrgtojigxfouweafuisdfkvrh

0

主题

35

帖子

9

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
13
下界之星
0
发表于 4 天前 来自手机 | 显示全部楼层
tggt
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部