Skip to content

TagField

自 2.2.1

TagField 是一个 NBT 标签输入框。它封装了一个 TextField,并为 NBT 文本提供了语法高亮显示(字符串为绿色、数字为金色、布尔值为紫色、括号为水色、分隔符为灰色、键为紫色)。无效输入将以错误颜色显示。

该字段的值为 Tag(任何 NBT 类型)。TagField 继承自 BindableUIElement<Tag>

INFO

UIElement 中记录的所有内容(布局、样式、事件、数据绑定等)同样适用于此处。


用法

java
var tagField = new TagField();
tagField.setCompoundTagOnly(); // 仅接受 CompoundTag
tagField.setTagResponder(tag -> System.out.println("Tag: " + tag));
parent.addChild(tagField);

// 设置初始值
tagField.setValue(new CompoundTag(), false);

内部结构

字段CSS 类描述
textField.__tag-field_text-field__带有语法高亮格式化器的底层 TextField

值绑定

TagField 继承自 BindableUIElement<Tag>

java
tagField.bind(DataBindingBuilder.create(
    () -> config.getNbt(),
    tag -> config.setNbt(tag)
).build());

更多详情请参见 数据绑定


字段

名称类型访问权限描述
textFieldTextFieldpublic final带有 NBT 语法高亮的内部文本输入框。
valueTagprivate(getter)当前的 NBT 值(为空时为 EndTag.INSTANCE)。

方法

方法返回描述
setValue(Tag, boolean)TagField设置 NBT 值;第二个参数控制是否发出通知。
setTagValidator(Predicate<Tag>)TagField设置自定义验证器。无效输入将以错误颜色显示。
setTagResponder(Consumer<Tag>)TagField注册一个监听器,在每次有效更改时调用。
setCompoundTagOnly()TagField仅接受 CompoundTag
setListOnly()TagField仅接受 ListTag
setAny()TagField接受任何 NBT 标签类型(默认)。

Released under the MIT License.