闲来无事,也是为了搞点视频做打卡任务。把之前用命令方块做的生命值显示给压缩了一下,压缩成了单命令方块的。
把代码复制到一个命令方块里再激活,就能把实现生命值显示的整个模块给生成出来。
先上图看看




原理并不太难,两个命令方块关于血量,两个关于发光效果。
当玩家对着特定实体时,从其nbt获取血量并输出,同时给予其发光效果。当玩家视线移开时,输出空白消息清屏,并取消发光效果。
下面分别是那四个命令方块里的代码。
代码1:
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute if entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5,nbt={DeathTime:0s}] run title @s actionbar ["生命值: ",{"nbt":"Health","entity":"@e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5],nbt={DeathTime:0s}"}]
代码2:
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute unless entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] run title @s actionbar ""
代码3:
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute as @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] if entity @s run effect give @s minecraft:glowing 1 0 true
代码4:
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute unless entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] run effect clear @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..10] minecraft:glowing
下面是单命令方块版本,注意方向,主体是在单个命令方块的旁边生成,而不是以单命令方块为中心。
单命令方块代码:
/summon falling_block ~ ~1 ~ {Time:1,BlockState:{Name:redstone_block},Passengers:[
{id:armor_stand,Health:0,Passengers:[
{id:falling_block,Time:1,BlockState:{Name:activator_rail},Passengers:[
{id:command_block_minecart,Command:'data merge block ~ ~-2 ~ {auto:0}'},
{id:command_block_minecart,Command:'gamerule commandBlockOutput false'},
{id:command_block_minecart,Command:'fill ~1 ~-2 ~2 ~-1 ~-2 ~4 minecraft:polished_andesite'},
{id:command_block_minecart,Command:'fill ~1 ~-1 ~2 ~-1 ~3 ~4 minecraft:black_stained_glass'},
{id:command_block_minecart,Command:"setblock ~ ~2 ~3 minecraft:repeating_command_block[conditional=false,facing=down]{Command:'
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute if entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5,nbt={DeathTime:0s}] run title @s actionbar [\"生命值: \",{\"nbt\":\"Health\",\"entity\":\"@e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5],nbt={DeathTime:0s}\"}]
'}"},
{id:command_block_minecart,Command:"setblock ~ ~1 ~3 minecraft:chain_command_block[conditional=false,facing=down]{auto:1,Command:'
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute unless entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] run title @s actionbar \"\"
'}"},
{id:command_block_minecart,Command:"setblock ~ ~0 ~3 minecraft:chain_command_block[conditional=false,facing=down]{auto:1,Command:'
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute as @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] if entity @s run effect give @s minecraft:glowing 1 0 true
'}"},
{id:command_block_minecart,Command:"setblock ~ ~-1 ~3 minecraft:chain_command_block[conditional=false,facing=down]{auto:1,Command:'
execute as @a at @s anchored eyes positioned ^ ^ ^2 run execute unless entity @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..1.5] run effect clear @e[type=!minecraft:player,type=!minecraft:item,sort=nearest,limit=1,distance=..10] minecraft:glowing
',}"},
{id:command_block_minecart,Command:"setblock ~ ~3 ~3 minecraft:redstone_lamp"},
{id:command_block_minecart,Command:"setblock ~ ~4 ~3 minecraft:lever[face=floor,facing=east]"},
{id:command_block_minecart,Command:'tellraw @p [
{"text":"欢迎使用原版生命值显示\\n","color":"aqua"},
{"text":"| 作者:","color":"yellow"},
{"text":"CC2001\\n","color":"dark_purple","hoverEvent":{"action":"show_text","value":"我的其他ID:CC、C20C01"}},
{"text":"| CC的B站空间:","color":"yellow"},
{"text":"传送门","color":"green","clickEvent":{"action":"open_url","value":"https://space.bilibili.com/22168654"}}
]'},
{id:command_block_minecart,Command:'setblock ~ ~1 ~ command_block{auto:1,Command:"fill ~ ~ ~ ~ ~-2 ~ air"}'},
{id:command_block_minecart,Command:'kill @e[type=command_block_minecart,distance=..1]'}]}]}]}
测试版本为JE1.18,其他版本不知道能不能用。
获取命令方块的指令:/give @a command_block
看不懂的地方可以去查查wiki,里面有很多命令的讲解,当然也可以问我。会不会就另说了