Skip to content

20.2 组件(Component)的使用


组件在(Component)1.18.2及以上版本的KubeJS中被大量使用。其可用于返回实体、物品的名称,亦或是设置悬浮提示,为玩家发送消息等等。

一、基础使用

你可以使用ComponentWrapper 来新建组件,它可以在任何地方以ComponentText形式被调用,以下为其方法:

方法名 返回值 描述
of(Object o) MutableComponent 该方法会返回一个基于你输入对象的组件。输入可以是字符串、数字等基础数据类型,也可以是snbt/nbt等其他类型。
clickEventOf(Object o) ClickEvent 基于输入的内容返回ClickEvent,详见下方示例。
prettyPrintNbt(Tag tag) Component 返回一个高亮的nbt,详见下方示例。
join(MutableComponent 分隔符, Iterable<? extends Component> 待遍历内容) MutableComponent 返回遍历 待遍历内容 的结果并把它们拼接在一起,并使用 分隔符 将其隔开。
string(String 文本) MutableComponent 基于输入的字符串返回未格式化的TextComponent。
translate(String 本地化键名) MutableComponent 基于输入的本地化键名返回未格式化的TextComponent。
translate(String 本地化键名, Object... 文本) MutableComponent 基于输入的本地化键名和输入的对象返回未格式化的TextComponent,后者中的"%s"被本地化键名对应的译名替代。
keybind(String 键名) MutableComponent 基于输入的键名返回客户端对应热键的KeybindComponent。
(Object 文本) MutableComponent 基于输入的颜色和文本返回对应的组件,可用颜色详见本章末尾(不含尖括号)。

以下是示例:

onEvent('player.chat', event => {
  // 为玩家发送消息
  event.player.tell(Component.string('测试消息'))
  // 该消息现在为黑色
  event.player.tell(Component.black('黑色测试消息'))
  // 发送对应键名item.minecraft.diamond的文本
  event.player.tell(Component.translate('item.minecraft.diamond').blue())
  // 发送玩家潜行绑定的热键名称
  event.player.tell(Component.keybind('key.sneak'))
  // 发送高亮后的主手物品的nbt
  event.player.tell(Component.prettyPrintNbt(event.player.mainHandItem.nbt))
})

效果展示

// img0

二、可变组件(MutableComponent)

以下为MutableComponent支持的方法,其中包含ComponentKJS向原版Component注入的拓展。除相关原版方法外,你还可以调用以下由ComponentKJS添加的方法。

方法名 返回值 信息
iterator() Iterator 返回当前组件中包含的子Component。
self() MutableComponent 返回当前组件。
toJson() JsonElement 返回当前组件的Json形式。
() MutableComponent 设置当前组件的颜色,支持的颜色见下。
color(Color c) MutableComponent 设置当前组件的颜色(颜色为Rhino格式)。
noColor() MutableComponent 清除当前组件的颜色
bold(@Nullable Boolean 是否使用) italic(@Nullable Boolean 是否使用) underlined(@Nullable Boolean 是否使用) strikethrough(@Nullable Boolean 是否使用) obfuscated(@Nullable Boolean 是否使用) MutableComponent 将组件设定为给定格式(依次为加粗,斜体,下划线,删除线,拼合),不填时默认值为true
insertion(@Nullable String 自动填充文字) MutableComponent 当玩家点击该组件时在聊天框自动填充给定的文本(不自动发送)
font(@Nullable ResourceLocation 字体资源) MutableComponent 设置的字体。关于字体的更多信息详见Minecraft Wiki - 资源包 - 字体
click(@Nullable ClickEvent 点击事件) MutableComponent 设置文本点击事件
hover(@Nullable Component s) MutableComponent 把当前组件的鼠标悬浮提示文本设置为输入的。
setStyle(Style 样式) MutableComponent 将当前的样式设置为输入的样式(net.minecraft.network.chat.Style) 并返回自身。(不推荐使用)
append(String 添加字符) MutableComponent 在当前的组件末尾拼接输入字符串对应的TextComponent并返回自身
append(Component component) MutableComponent 在当前组件的末尾拼接输入的组件并返回自身
withStyle(Style style) MutableComponent 将输入的样式与组件的已有样式合并,冲突的属性将被设置为输入样式。
getStyle() Style 返回当前组件的样式
getContents() MutableComponent 返回当前组件的内容。其中TextComponent会返回Text,SelectorComponents会返回其对应的目标选择器,其余类型的组件会返回一个空的字符串。
getSiblings() List 返回一个包含所有“使用append()添加到当前组件”的组件的列表。
plainCopy() BaseComponent 只复制当前组件的基本内容,不包含样式等。
copy() MutableComponent 完全复制当前组件,保留样式
getString() String 返回组件文本对应的字符串。非文字类型的组件会返回一个空的字符串。

待补:相关示例。

附:

Component中可用的颜色:

  • black
  • darkBlue
  • darkGreen
  • darkAqua
  • darkRed
  • darkPurple
  • gold
  • gray
  • darkGray
  • blue
  • green
  • aqua
  • red
  • lightPurple
  • yellow
  • white

Contributors

Changelog