危险

Adventure 文档目前仍为 尚在施工 状态,并且作为 Javadocs 的补充. 一些地方可能覆盖面有限,或可能不是完全最新的. 所有你有任何问题,欢迎加入我们的 Discord.

文本序列化器

在 Adventure 的数据和其他格式之间进行转换的最底层 (lowest-level) 方式就是序列化器 (serializers). 一些序列化器转换为标准格式, 而另一些转换为 Adventure 自有的格式.

可以使用这些序列化器中的任意一个转换组件:

// 创建一个文本组件
final TextComponent textComponent = Component.text("Hello ")
  .color(NamedTextColor.GOLD)
  .append(
    Component.text("world")
      .color(NamedTextColor.AQUA).
      decoration(TextDecoration.BOLD, true)
  )
  .append(Component.text("!").color(NamedTextColor.RED))
  .build();

// 将 textComponent 转换为 Minecraft 用于序列化的 JSON 格式.
final String json = GsonComponentSerializer.gson().serialize(textComponent);

// 将 textComponent 转换为一个旧版风格的字符串 - "&6Hello &b&lworld&c!"
final String legacy = LegacyComponentSerializer.legacyAmpersand().serialize(textComponent);

// 将 textComponent 转换为一个纯文本字符串 - "Hello world!"
final String plain = PlainTextComponentSerializer.plainText().serialize(textComponent);

当然也同样可以通过反序列化反转.

// 将 Minecraft 用于序列化的 JSON 格式转换为一个 Component
final Component component = GsonComponentSerializer.gson().deserialize(json);

// 将一个旧版风格字符串 (使用格式化代码) 转换为一个 TextComponent
final Component component = LegacyComponentSerializer.legacyAmpersand().deserialize("&6Hello &b&lworld&c!");

// 将一个纯文本转换为一个 TextComponent
final Component component = PlainTextComponentSerializer.plainText().deserialize("Hello world!");