mc3124076548
本帖最后由 mc3124076548 于 2021-8-13 09:03 编辑

/data get entity @p SelectedItem.tag.display
提取玩家手上物品的Name NBT后,如何将该数据再用/say发出一遍


内涵:让指令提取到的nbt充当变量,再/say一遍这个变量(内容变得可读)


鱼宝放心飞
本帖最后由 鱼宝放心飞 于 2021-8-13 19:11 编辑

代码:

  1. tellraw @a {"nbt":"SelectedItem.tag.display","entity":"@s"}
另外,使用 interpret 可以使 nbt 像 json 一样被解析,试比较:

代码:

  1. tellraw @a {"nbt":"SelectedItem.tag.display.Name","entity":"@s"}
  2. tellraw @a {"nbt":"SelectedItem.tag.display.Name","entity":"@s","interpret":true}
[1.15+] JSON 文本中的 interpret
https://www.mcbbs.net/forum.php?mod=viewthread&tid=921501

mc3124076548
本帖最后由 mc3124076548 于 2021-8-13 09:14 编辑
鱼宝放心飞 发表于 2021-8-13 08:59
另外,使用 interpret 可以使 nbt 像 json 一样被解析,试比较:
[1.15+] JSON 文本中的 interpret
https:/ ...

本质上解决了,又好像没有2333

鱼宝放心飞
mc3124076548 发表于 2021-8-13 19:12
本质上解决了,又好像没有2333

为什么说 "又好像没有"?

mc3124076548
本帖最后由 mc3124076548 于 2021-8-13 09:16 编辑
鱼宝放心飞 发表于 2021-8-13 09:13
为什么说 "又好像没有"?

我是想让玩家执行指令后获得的信息,再say一遍这个信息,而不是通过tellraw输出一个变量获得这个信息

mc3124076548
本帖最后由 mc3124076548 于 2021-8-13 09:24 编辑
鱼宝放心飞 发表于 2021-8-13 09:13
为什么说 "又好像没有"?

这里应该是/data modify storage lzh_2 tty set from entity lzh_2 SelectedItem.tag.display.Name,让内容转进储存器,然后再get后/say

mc3124076548
鱼宝放心飞 发表于 2021-8-13 09:22
我们无法使用命令获取上一条命令运行后输出的信息,除非是命令方块,它的输出信息存在 LastOutput 这个 N ...

用命令方块充当缓冲器,summon falling_block ~ ~1 ~ {Time:1,Block:command_block,DropItem:0b,TileEntityData:{Command:"指令部分",auto:true},Data:1,Passengers:[{id:falling_block,Block:command_block,Date:1,DropItem:0b,Time:1,TileEntityData:{Command:"fill ~ ~ ~ ~ ~-1 ~ air",auto:true}}]}
然后再提取LastOutput就是信息了