20.2 组件(Component)的使用
组件在(Component)1.18.2及以上版本的KubeJS中被大量使用。其可用于返回实体、物品的名称,亦或是设置悬浮提示,为玩家发送消息等等。
一、基础使用
你可以使用ComponentWrapper
来新建组件,它可以在任何地方以Component
或Text
形式被调用,以下为其方法:
方法名 | 返回值 | 描述 |
---|---|---|
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 | 基于输入的颜色和文本返回对应的组件,可用颜色详见本章末尾(不含尖括号)。 |
以下是示例:
效果展示
// 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