Argon_gas 发表于 2018-7-29 14:56:48

[1.13]将生物的血量实时显示在bossbar上

将生物的血量实时显示在bossbar上前言1.13的新指令/bossbar可以让玩家创建一个boss血条在屏幕中上方但是血条只能自定义生命值,无法和生物血量链接起来要想实现则需要配合execute另外感谢cbl新手群里的各位dalao虽然在这感谢并没用本教程使用版本1.13正式版-----------------------------------------------------------------------------正文看懂这篇教程的前提:大概知道exe,bossbar的基础用法看得懂中文,并具有一定理解能力先贴上bossbar的用法:/bossbar add <boss栏> <显示名称>可建立一个Boss栏。
boss栏用来指定Boss栏namespace:name,例:foo:bar。如果没有namespace则默认为minecraft。
显示名称是Boss栏的显示名称,只接受JSON语法。
/bossbar set <目标boss栏> name <显示名称>可以更改Boss栏的名字。
/bossbar set <目标boss栏> color (blue|green|pink|purple|red|white|yellow)可用来更改Boss栏与该名称的颜色(修改文字颜色只限于当你没有在文字格式中指定它的颜色时),预设为white。
/bossbar set <目标boss栏> style (notched_10|notched_12|notched_20|notched_6|progress)能改变boss栏的样式,预设为progress。
你可以设为以下的样式:notched_6、notched_10、notched_12、notched_20或progress。
notched会设定boss栏在视觉上的的分段数。
progress会设置为1段,也就是直长条。
/bossbar set <目标boss栏> value <当前值>会改变boos栏的当前值, 预设为0。
/bossbar set <目标boss栏> max <最大值>会设置boss栏的最大值,预设为100。
/bossbar set <目标boss栏> visible <visible>会设定boss栏是否可见, 预设为true。
/bossbar set <目标boss栏> players <目标玩家>会设定那些玩家可以看见boss栏, 预设为无人可看见。
/bossbar remove <目标boss栏>会把整个目标boss栏给移除。
/bossbar list会显示所有存在的boss栏。
/bossbar get <指定boss栏> (max|players|value|visible)会回传值作为指令的 result
/execute子命令store的新选项:store (result|success) bossbar <目标boss栏> (value|max) <连锁子命令>。
将会储存指定运行指令的result或success为boss栏的value当前值或max最大值设定。
                                    -------摘自wiki

首先,我们来创建一个bossbar
/bossbar add boss {"text":"BOSS"}然后将其显示在屏幕上
/bossbar set minecraft:boss players @a现在的情况是这样的:

然后我们需要生成一个生物,将它的血量和bossbar链接起来
我选择生成一只苦力怕:
summon minecraft:creeper ~ ~2 ~ {Tags:["boss"],Attributes:[{Name:"generic.maxHealth",Base:80.0}],Health:80}生成一只tag为boss,生命值为80的creeper
然后使用exe链接
rcb : execute as @e store result bossbar minecraft:boss max run data get entity @e Attributes.Base 1将bossbar的最大值改为苦力怕的最大生命值即80
接下来要注意一点:不能直接把苦力怕的当前生命值之间用exe赋值到bossbar上
乍看貌似没问题,但是会导致生物死掉,生命值却没清空的BUG
因为在生物死掉之后,就无法检测的它的生命值,因为生物本身已经不存在了
所以会导致生命值没清空的BUG
解决方法是使用scb来储存生物生命值,然后再赋值到bossbar
scoreboard objectives add bossbar dummy创建一个名为bossbar的记分板
summon minecraft:armor_stand ~ ~1 ~ {Tags:["marker"]}生成一个tag为marker的载体用来记录分数
rcb : scoreboard players set @e bossbar 0
高频将载体分数归零,这样是为了生物死亡后,把bossbar血条归零

rcb : execute as @e store result score @s bossbar run data get entity @e Health 1将苦力怕的生命值赋值到载体的记分板分数
rcb : execute as @e store result bossbar minecraft:boss value run scoreboard players get @s bossbar最后,将载体记分板上分数赋值到bossbar上
然后应该是这样的:

然后bossbar就满了,现在已经完成
当你攻击苦力怕的时候,血量会对应减少
当你击杀后,血条归零
然后你可以自行美化一下:
/bossbar set minecraft:boss color red
/bossbar set minecraft:boss style notched_6
-----------------------------------------------------------------------------
一些废话
再次感谢cbl新手群的各位dalao
-----------------------------------------------------------------------------
END











Argon_gas 发表于 2018-7-31 17:09:08

emmm
就这么凉了233

楠木哇哇哇 发表于 2018-7-31 18:56:29

可以做第五人格的密 码 机

NoobReaper 发表于 2019-3-1 16:50:28

感谢dalao,很实用,1.13怪太多太强把我打自闭了

3157338120 发表于 2019-8-18 21:39:23

又啥办法可以把右侧的计分板隐藏啊

3157338120 发表于 2019-8-19 17:40:07

ahxello 发表于 2019-9-14 20:01:57

很好啊,bossbar是做pve很好的指令,学习了
页: [1]
查看完整版本: [1.13]将生物的血量实时显示在bossbar上