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

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

  [复制链接]

59

主题

149

帖子

105

积分

攻略组

UID
49109
小麦
7
金锭
390
下界之星
0
发表于 2020-2-14 22:09:46 | 显示全部楼层 |阅读模式
本帖最后由 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, 下载次数: 41)

评分

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

查看全部评分

59

主题

149

帖子

105

积分

攻略组

UID
49109
小麦
7
金锭
390
下界之星
0
 楼主| 发表于 2020-2-15 17:35:41 | 显示全部楼层
本帖最后由 Zai_Ge 于 2020-2-16 20:49 编辑

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

99

主题

2390

帖子

1438

积分

Lv.7 下界居民

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

59

主题

149

帖子

105

积分

攻略组

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

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

点评

我们两个是在说一个东西吗  发表于 2020-2-14 23:52

46

主题

570

帖子

309

积分

Lv.5 农牧专家

UID
16359
小麦
102
金锭
1989
下界之星
0
发表于 2020-2-15 11:27:53 来自手机 | 显示全部楼层

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

点评

哦吼  发表于 2020-2-15 14:32

59

主题

149

帖子

105

积分

攻略组

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

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

59

主题

149

帖子

105

积分

攻略组

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

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

59

主题

149

帖子

105

积分

攻略组

UID
49109
小麦
7
金锭
390
下界之星
0
 楼主| 发表于 2020-2-16 20:51:46 | 显示全部楼层
自顶

0

主题

32

帖子

8

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
8
下界之星
0
发表于 2020-2-16 21:20:07 来自手机 | 显示全部楼层
eofiwphsdsdsfrrrffrerkjresebkeg45wihogfjrgtojigxfouweafuisdfkvrh

0

主题

32

帖子

8

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
8
下界之星
0
发表于 2020-2-16 21:20:33 来自手机 | 显示全部楼层
eofiwphsdsdsfrrrffrerkjresebkeg45wihogfjrgtojigxfouweafuisdfkvrh

0

主题

32

帖子

8

积分

Lv.1 新手木匠

UID
7350857
小麦
0
金锭
8
下界之星
0
发表于 2020-2-16 21:47:55 来自手机 | 显示全部楼层
tggt

0

主题

41

帖子

10

积分

Lv.1 新手木匠

UID
7073370
小麦
0
金锭
85
下界之星
0
发表于 2020-3-2 11:44:42 来自手机 | 显示全部楼层

指令是放在一个命令方块里吗?

点评

猜一猜  发表于 2020-3-18 20:19

1

主题

13

帖子

4

积分

Lv.1 新手木匠

UID
7066202
小麦
0
金锭
30
下界之星
0
发表于 2020-3-2 20:05:57 来自手机 | 显示全部楼层
6

1

主题

13

帖子

4

积分

Lv.1 新手木匠

UID
7066202
小麦
0
金锭
30
下界之星
0
发表于 2020-3-2 20:06:38 来自手机 | 显示全部楼层
11

y

y

1

主题

13

帖子

4

积分

Lv.1 新手木匠

UID
7066202
小麦
0
金锭
30
下界之星
0
发表于 2020-3-2 20:07:08 来自手机 | 显示全部楼层
11

y

y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部