MineCrocodile
本帖最后由 MineCrocodile 于 2019-6-19 22:39 编辑
  1. data modify block ~ ~1 ~ Items append value {Slot:0,id:written_book,Count:1b}

  2. data modify block ~ ~1 ~ Items[0].tag set value {pages:["["",{"selector":"@a","color":"red"}]"],title:CustomBook,author:IMYVM}
复制代码
使用以上两句代码

似乎是从箱子里把生成的书拿出来,打开一次后,再用同样的指令修改tag能成功显示在线玩家

否则书里只有“@a“这样的字样


一头雾水

2021.12 数据,可能有更多内容 本帖最后由 MineCrocodile 于 2019-6-19 22:39 编辑

代码:

  1. data modify block ~ ~1 ~ Items append value {Slot:0,id:written_book,Count:1b}

  2. data modify block ~ ~1 ~ Items[0].tag set value {pages:["["",{"selector":"@a","color":"red"}]"],title:CustomBook,author:IMYVM}
使用以上两句代码


似乎是从箱子里把生成的书拿出来,打开一次后,再用同样的指令修改tag能成功显示在线玩家


否则书里只有“@a“这样的字样


一头雾水

MineCrocodile
我再解释一下哈

我想做的事情是在一个箱子里,生成一本显示在线玩家名字的书

想用上面的代码实现,但是我发现有的时候把这本书拿出来检查,能显示全体在线玩家的名字,有的时候却只有“@a”这个词

进一步研究发现,我使用上述代码生成书之后,需要拿出来打开一次(这时显示的是“@a”)
然后再运行一次
  1. data modify block ~ ~1 ~ Items[0].tag set value {pages:["["",{"selector":"@a","color":"red"}]"],title:CustomBook,author:IMYVM}
复制代码
这句代码,多数情况下可以实现我要的目的

不知道这次有没有解释清楚

SPGoding
1. 我知道你转义了,但是论坛的 [code] 有 bug,会吞斜杠,不要用。
2. 建议以告示牌做中转,即先把 {"selector":"@a","color":"red"} 编辑到告示牌上,再把告示牌的内容用 data modify block ~ ~1 ~ Items[0].tag.pages[0] set from block <告示牌> Text1 复制到书上。

MineCrocodile
SPGoding 发表于 2019-6-19 22:38
1. 我知道你转义了,但是论坛的 [code] 有 bug,会吞斜杠,不要用。
2. 建议以告示牌做中转,即先把 {"sele ...

非常感谢!