Skip to content

UI JS API 完整参考

说明:以下 API 均为 BUI 脚本环境可用。若在普通脚本里调用,请确认已注入 BUI 环境。


1. 全局函数(BUIJsGlobals)

UI 管理

  • requestOpenUI(templateId, initialState?)
  • closeUI(templateId?)(仅本地关闭)
  • requestCloseUI(templateId?)(通知服务端)
  • dispatchServerAction(actionName, payload?, onSuccess?, onError?)

聊天相关

  • chatSend(message, addRecent?) -> Boolean
  • chatHistory(limit?) -> List<String>
  • chatRecentHistory() -> List<String>
  • chatScroll(lines)
  • chatLinesPerPage() -> Int
  • chatBackgroundColor() -> Int

生命周期

  • onMounted(cb)
  • onUnmounted(cb)
  • onActivated(cb)
  • onDeactivated(cb)

响应式

  • ref(id) -> UIElementWrapper?
  • computed(name, deps, getter) / computed(store, name, deps, getter)
  • watch(key, cb) / watch(store, key, cb)
  • nextTick(cb)
  • useSuspense(asyncFn)

依赖注入

  • provide(key, value)
  • inject(key, defaultValue?)
  • provideGlobal(key, value)

Query

  • useQuery(key, action, payload?, options?, store?)
  • usePrefetch(key, action, payload?, options?, store?)
  • invalidateQueries(predicate?, store?)
  • setQueryData(key, data, store?)
  • getQueryData(key, store?)

动画

  • animate(element, name, options?)
  • enter(element, name?, options?)
  • leave(element, name?, options?)
  • stopAnimation(element)
  • isAnimating(element) -> Boolean

拖放

  • useDraggable(element, options?)
  • useDroppable(element, options?)
  • startDrag(data, texture?)
  • getDragData() -> any
  • isDragging() -> Boolean
  • cancelDrag()

元素/文本创建

  • createElement(tag, props?) -> UIElementWrapper
  • createComponent(name) -> UIElementWrapper
  • createTranslatable(key, ...args) -> ComponentWrapper
  • emptyComponent() -> ComponentWrapper

2. 全局对象

2.1 internalSyncStore(只读)

  • getId() / getScope()
  • get(key) / getOrDefault(key, def) / has(key) / keys()
  • getState()(仅 sync:*)

2.2 localStorage

  • setItem / setJson
  • getItem / getItemOrDefault
  • getInt / getIntOrDefault
  • getDouble / getDoubleOrDefault
  • getBoolean / getBooleanOrDefault
  • getAny
  • getJson / getJsonOrDefault
  • hasItem / removeItem / clear
  • keys / length

2.3 Texture(工厂对象)

  • Texture.empty()
  • Texture.color(color)
  • Texture.resource(path)
  • Texture.sprite(path)
  • Texture.gradient(from, to, horizontal?)
  • Texture.sdf(radius?, color?, borderColor?, stroke?)
  • Texture.sdfRect(radius?, color?, borderColor?, stroke?)
  • Texture.icon(name) / Texture.iconFrom(modId, name)
  • Texture.builtinSprite(name)
  • Texture.group(...textures)
  • Texture.border(color, width?)
  • Texture.text(text, color?)
  • Texture.animation(path, cellSize?, from?, to?, ticksPerFrame?)
  • Texture.animationWithParams(...)
  • Texture.progress(value?)
  • Texture.progressWithTextures(empty, filled)
  • Texture.autoProgress(empty?, filled?)
  • Texture.wrap(texture)

2.4 hotkeys(UI 热键)

  • hotkeys.register(options, callback?) -> id
  • hotkeys.unregister(id) -> Boolean
  • hotkeys.clear()
  • hotkeys.list() -> List<String>

2.5 sound(UI 音效)

  • sound.play(id, volume?, pitch?, loop?)
  • sound.playAt(id, x, y, z, volume?, pitch?, loop?)
  • sound.stop(id)

sound 的 id 必须是 sound/ 目录下相对路径,不允许带 behemiron:sound/ 前缀。


3. Store / Texture 包装器

3.1 UIStoreWrapper(defineStore/useStore 返回)

  • getId / getScope
  • get / set / getOrDefault / has / remove / keys
  • setState / getState
  • getComputed
  • watch
  • on / once / emit / off
  • dispatch
  • reset
  • unwrap

3.2 TextureWrapper(Texture.xxx() 返回)

  • 通用:unwrap / copy / setColor / rotate / scale / transform
  • 资源纹理:getSubTexture
  • Sprite:setSprite / setBorder / setBorderLTRB / setWrapMode
  • Gradient:setColorFrom / setColorTo / setHorizontal
  • SDF:setRadius / setRadiusCorners / setStroke / setBorderColor
  • Border:setBorderWidth
  • Text:updateText / setDropShadow / setBackgroundColor / setTextWidth / setRollSpeed / setTextType
  • Animation:setAnimationTexture / setCellSize / setAnimationRange / setAnimationSpeed
  • Progress:setProgressTextures / setProgress / setFillDirection

4. 组件包装器完整列表

所有组件至少拥有 UIElementWrapper 的通用方法。 下方为每个组件用途与典型用法,并列出其完整方法签名与参数说明。

ButtonWrapper

用途:按钮交互与样式控制

典型用法:const btn = ref("ok"); btn.setOnClick(() => sound.play("ui/confirm"))

方法签名:

方法参数默认值注意事项
setText(text: ComponentWrapper)text(ComponentWrapper)
setTextString(text: String)text(String)按翻译 key 解析
setTextLiteral(text: String)text(String)按字面文本,不走翻译
noText()
enableText()
getState()
isPressed()
isHoveredState()
setBaseTexture(texture: IGuiTexture)texture(IGuiTexture)
setHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setPressedTexture(texture: IGuiTexture)texture(IGuiTexture)
setTextColor(color: Int)color(Int)
setFontSize(size: Float)size(Float)
setOnClick(listener: UIEventListener)listener(UIEventListener)回调在 UI 线程触发
addPreIcon(icon: IGuiTexture)icon(IGuiTexture)
addPostIcon(icon: IGuiTexture)icon(IGuiTexture)

ColorSelectorWrapper

用途:颜色选择器(拾色器)

典型用法:const picker = ref("color"); picker.setOnColorChangeListener(c => {})

方法签名:

方法参数默认值注意事项
getValue(): Int = selector.getValue()
setValue(value: Int)value(Int)
setValueSilent(value: Int)value(Int)不触发通知/回调
getColor(): Int = selector.getColor()
setColor(argb: Int)argb(Int)
setColorSilent(argb: Int)argb(Int)不触发通知/回调
getAlpha(): Int = (getValue() shr 24)
getRed(): Int = (getValue() shr 16)
getGreen(): Int = (getValue() shr 8)
getBlue(): Int = getValue()
getHexString(): String = String.format("#%08x", getValue())
setOnColorChangeListener(listener: (Int) -> Unit)listener((Int) -> Unit)回调在 UI 线程触发
getPickerContainer(): UIElementWrapper = UIElementWrapperFactory.wrap(selector.pickerContainer)
getColorPreview(): UIElementWrapper = UIElementWrapperFactory.wrap(selector.colorPreview)
getTextContainer(): UIElementWrapper = UIElementWrapperFactory.wrap(selector.textContainer)
getHexTextField(): TextFieldWrapper = TextFieldWrapper(selector.hexTextField)

ComponentWrapper

用途:富文本/聊天组件构造

典型用法:const c = Component.literal("完成").color("#ffcc00")

方法签名:

方法参数默认值注意事项
getString()
append(text: String)text(String)
appendComponent(other: ComponentWrapper)other(ComponentWrapper)
appendMC(other: Component)other(Component)
color(color: String)color(String)
colorInt(color: Int)color(Int)
bold(value: Boolean = true)value=true
italic(value: Boolean = true)value=true
underlined(value: Boolean = true)value=true
strikethrough(value: Boolean = true)value=true
obfuscated(value: Boolean = true)value=true
font(fontId: String)fontId(String)
clickOpenUrl(url: String)url(String)
clickRunCommand(command: String)command(String)
clickSuggestCommand(command: String)command(String)
clickCopyToClipboard(text: String)text(String)
hoverText(text: String)text(String)
hoverComponent(other: ComponentWrapper)other(ComponentWrapper)
copy()
unwrap()
unwrapMutable()
literal(text: String)text(String)
translatable(key: String, vararg args: Any)key(String);vararg args(Any)
empty()
wrap(component: Component)component(Component)

DialogWrapper

用途:模态对话框与按钮区域

典型用法:const dlg = ref("confirm"); dlg.show()

方法签名:

方法参数默认值注意事项
show(parent: UIElement)parent(UIElement)
showWithWrapper(parent: UIElementWrapper)parent(UIElementWrapper)
close()
setTitle(title: String)title(String)
setAutoClose(autoClose: Boolean)autoClose(Boolean)
darkenBackground()
setDialogWidth(width: Float)width(Float)
addContent(content: UIElement)content(UIElement)
addContentWrapper(content: UIElementWrapper)content(UIElementWrapper)
addButton(button: UIElement)button(UIElement)
addButtonWrapper(button: UIElementWrapper)button(UIElementWrapper)
getOverlay(): UIElementWrapper = UIElementWrapper(dialog.overlay)
getTitleBar(): UIElementWrapper = UIElementWrapper(dialog.titleBar)
getContentContainer(): UIElementWrapper = UIElementWrapper(dialog.contentContainer)
getButtonContainer(): UIElementWrapper = UIElementWrapper(dialog.buttonContainer)
setOnClose(callback: () -> Unit)callback(() -> Unit)回调在 UI 线程触发

DisplaySlotWrapper

用途:物品展示槽(仅显示)

典型用法:const slot = ref("preview"); slot.setItem(item)

方法签名:

方法参数默认值注意事项
setItem(item: ItemStackWrapper?)item(ItemStackWrapper?)
bindItem(getter: () -> ItemStackWrapper?)getter(() -> ItemStackWrapper?)
getItem()
hasItem(): Boolean = !slot.getItem()
setItemScale(scale: Float)scale(Float)
getItemScale()
setHoverOverlay(texture: IGuiTexture)texture(IGuiTexture)
setShowItemTooltips(show: Boolean)show(Boolean)
isShowItemTooltips(): Boolean = slot.slotStyle.showItemTooltips()

EntityViewWrapper

用途:UI 内渲染实体模型

典型用法:const view = ref("entity"); view.setPlayer()

方法签名:

方法参数默认值注意事项
setEntity(value: Any?)value(Any?)
setEntityId(id: Int)id(Int)
setEntityUuid(uuid: String)uuid(String)
setPlayer(value: Any?)value(Any?)
setFitMode(mode: String)mode(String)
setAnchor(anchor: String)anchor(String)
setFramePadding(value: Float)value(Float)
setBBoxScale(value: Float)value(Float)
setRotationMode(mode: String)mode(String)
setYaw(value: Float)value(Float)
setPitch(value: Float)value(Float)
setRotateClampYaw(value: Float)value(Float)
setRotateClampPitch(value: Float)value(Float)
setWheelZoom(value: Boolean)value(Boolean)
setZoom(value: Float)value(Float)
setZoomMin(value: Float)value(Float)
setZoomMax(value: Float)value(Float)
setZoomSpeed(value: Float)value(Float)

FieldWrapper

用途:表单字段配置与校验

典型用法:const field = ref("name"); field.setValidateOnBlur(true)

方法签名:

方法参数默认值注意事项
getName()
setName(name: String)name(String)
setValidateOnChange(validate: Boolean)validate(Boolean)
isValidateOnChange()
setValidateOnBlur(validate: Boolean)validate(Boolean)
isValidateOnBlur()
getError()
isTouched()
getValue(): Any? = field.getValue()
setValue(value: Any?)value(Any?)
validate(): String? = field.validate()
validateAsync(onComplete: (String?) -> Unit)onComplete((String?) -> Unit)
clearError()
reset()

FormWrapper

用途:表单容器(校验/提交/重置)

典型用法:const form = ref("form"); form.submit()

方法签名:

方法参数默认值注意事项
get(name: String)name(String)
set(name: String, value: Any?)name(String);value(Any?)
setValueAndValidate(name: String, value: Any?)name(String);value(Any?)
getValues(): Map<String, Any?> = form.getValues()
setValues(values: Map<String, Any?>)values(Map<String, Any?>)
setInitialValues(values: Map<String, Any?>)values(Map<String, Any?>)
getInitialValues()
getError(name: String): String? = form.getError(name)name(String)
setError(name: String, error: String?)name(String);error(String?)
getErrors(): Map<String, String?> = form.getErrors()
clearErrors()
isValid()
isDirty()
isSubmitting()
isValidating()
isTouched(name: String): Boolean = form.isTouched(name)name(String)
validateFieldSync(name: String): String? = form.validateFieldSync(name)name(String)
validateField(name: String, onComplete: (String?) -> Unit)name(String);onComplete((String?) -> Unit)
validateSync(): Boolean = form.validateSync()
validate(onComplete: (Boolean) -> Unit)onComplete((Boolean) -> Unit)
submit()
submitSync()
setOnSubmit(callback: (Map<String, Any?>) -> Unit)callback((Map<String, Any?>) -> Unit)回调在 UI 线程触发
setOnSubmitFailed(callback: () -> Unit)callback(() -> Unit)回调在 UI 线程触发
setOnValuesChange(callback: (String, Any?, Any?) -> Unit)callback((String, Any?, Any?) -> Unit)回调在 UI 线程触发
reset()
resetTo(values: Map<String, Any?>)values(Map<String, Any?>)

GraphViewWrapper

用途:可缩放/平移的画布容器

典型用法:const graph = ref("graph"); graph.setAllowZoom(true); graph.fit()

方法签名:

方法参数默认值注意事项
getOffsetX()
setOffsetX(offsetX: Float)offsetX(Float)
getOffsetY()
setOffsetY(offsetY: Float)offsetY(Float)
getScale()
setScale(scale: Float)scale(Float)
addContentChild(child: UIElementWrapper)child(UIElementWrapper)
removeContentChild(child: UIElementWrapper)child(UIElementWrapper)
clearAllContentChildren()
getContentRoot(): UIElementWrapper = UIElementWrapperFactory.wrap(graph.contentRoot)
fitToChildren(padding: Float, minScaleBound: Float)padding(Float);minScaleBound(Float)
fit(minX: Float, minY: Float, maxX: Float, maxY: Float, minScaleBound: Float)minX(Float);minY(Float);maxX(Float);maxY(Float);minScaleBound(Float)
screenToWorld(screenX: Float, screenY: Float)screenX(Float);screenY(Float)
worldToScreen(worldX: Float, worldY: Float)worldX(Float);worldY(Float)
setAllowZoom(allow: Boolean)allow(Boolean)
isAllowZoom(): Boolean = graph.graphViewStyle.allowZoom()
setAllowPan(allow: Boolean)allow(Boolean)
isAllowPan(): Boolean = graph.graphViewStyle.allowPan()
setMinScale(scale: Float)scale(Float)
getMinScale(): Float = graph.graphViewStyle.minScale()
setMaxScale(scale: Float)scale(Float)
getMaxScale(): Float = graph.graphViewStyle.maxScale()
setGridTexture(texture: IGuiTexture)texture(IGuiTexture)
setGridSize(size: Float)size(Float)
getGridSize(): Float = graph.graphViewStyle.gridSize()

InventorySlotsWrapper

用途:玩家背包与快捷栏显示

典型用法:const inv = ref("inv"); inv.getHotbar()

方法签名:

方法参数默认值注意事项
getRowCount()
getRow(index: Int)index(Int)
getHotbar(): UIElementWrapper = UIElementWrapperFactory.wrap(inventory.hotbar)
getTotalSlotCount()
getMainSlotCount()
getHotbarSlotCount()

ItemSlotWrapper

用途:交互式物品槽位

典型用法:const slot = ref("slot"); slot.setItem(item)

方法签名:

方法参数默认值注意事项
setItem(item: ItemStackWrapper?)item(ItemStackWrapper?)
getItem()
hasItem(): Boolean = !slot.getValue()
setHoverOverlay(texture: IGuiTexture)texture(IGuiTexture)
setShowItemTooltips(show: Boolean)show(Boolean)
isShowItemTooltips(): Boolean = slot.slotStyle.showItemTooltips()
setPlayerSlot(playerSlot: Boolean)playerSlot(Boolean)
isPlayerSlot(): Boolean = slot.slotStyle.isPlayerSlot()
setQuickMovePriority(priority: Int)priority(Int)
getQuickMovePriority(): Int = slot.slotStyle.quickMovePriority()
setAcceptQuickMove(accept: Boolean)accept(Boolean)
isAcceptQuickMove(): Boolean = slot.slotStyle.acceptQuickMove()

LabelWrapper

用途:文本标签(可动态更新)

典型用法:const label = ref("hp"); label.setValueString("HP: 100")

方法签名:

方法参数默认值注意事项
isTickable()
setTickable(tickable: Boolean)tickable(Boolean)
getValue(): ComponentWrapper = ComponentWrapper.wrap(label.getValue())
getValueString(): String = label.getValue()
setValue(value: ComponentWrapper)value(ComponentWrapper)
setValueString(value: String)value(String)

用途:树形菜单/导航组件

典型用法:const menu = ref("menu"); menu.setOnNodeClicked(id => {})

方法签名:

方法参数默认值注意事项
getRoot()
close()
setAutoClose(autoClose: Boolean)autoClose(Boolean)
isAutoClose()
setUiProvider(provider: (Any?) -> UIElementWrapper)provider((Any?) -> UIElementWrapper)
setNodeTexture(texture: IGuiTexture)texture(IGuiTexture)
setLeafTexture(texture: IGuiTexture)texture(IGuiTexture)
setNodeHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setLeafHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setArrowIcon(texture: IGuiTexture)texture(IGuiTexture)
setOnNodeClicked(callback: (Any?) -> Unit)callback((Any?) -> Unit)回调在 UI 线程触发
setOnClose(callback: () -> Unit)callback(() -> Unit)回调在 UI 线程触发
setTextureProvider(provider: (Any?) -> IGuiTexture)provider((Any?) -> IGuiTexture)
setHoverTextureProvider(provider: (Any?) -> IGuiTexture)provider((Any?) -> IGuiTexture)

ProgressBarWrapper

用途:进度条显示

典型用法:const bar = ref("hpBar"); bar.setProgress(0.75)

方法签名:

方法参数默认值注意事项
getValue()
setValue(value: Float)value(Float)
setProgress(value: Float)value(Float)
getNormalizedValue(): Float = progressBar.getNormalizedValue()
getMinValue()
setMinValue(minValue: Float)minValue(Float)
getMaxValue()
setMaxValue(maxValue: Float)maxValue(Float)
setRange(minValue: Float, maxValue: Float)minValue(Float);maxValue(Float)
setFillDirection(direction: String)direction(String)
getFillDirection(): String = progressBar.progressBarStyle.fillDirection()
setInterpolate(interpolate: Boolean)interpolate(Boolean)
isInterpolate(): Boolean = progressBar.progressBarStyle.interpolate()
setInterpolateStep(step: Float)step(Float)
getLabel(): LabelWrapper = LabelWrapper(progressBar.label)
getBar(): UIElementWrapper = UIElementWrapper(progressBar.bar)
getBarContainer(): UIElementWrapper = UIElementWrapper(progressBar.barContainer)

ScrollerViewWrapper

用途:可滚动容器

典型用法:const view = ref("list"); view.setMode("VERTICAL")

方法签名:

方法参数默认值注意事项
addScrollViewChild(child: UIElement)child(UIElement)
addScrollViewChildWrapper(child: UIElementWrapper)child(UIElementWrapper)
addScrollViewChildAt(child: UIElement, index: Int)child(UIElement);index(Int)
removeScrollViewChild(child: UIElement)child(UIElement)
removeScrollViewChildWrapper(child: UIElementWrapper)child(UIElementWrapper)
clearAllScrollViewChildren()
hasScrollViewChild(child: UIElement)child(UIElement)
getContainerWidth(): Float = scrollerView.getContainerWidth()
getContainerHeight(): Float = scrollerView.getContainerHeight()
setMode(mode: String)mode(String)
getMode(): String = scrollerView.scrollerViewStyle.mode()
setVerticalScrollDisplay(display: String)display(String)
setHorizontalScrollDisplay(display: String)display(String)
setAdaptiveWidth(adaptive: Boolean)adaptive(Boolean)
setAdaptiveHeight(adaptive: Boolean)adaptive(Boolean)
setScrollerViewMargin(margin: Float)margin(Float)
setMinScrollPixel(pixel: Float)pixel(Float)
setMaxScrollPixel(pixel: Float)pixel(Float)
getViewPort(): UIElementWrapper = UIElementWrapper(scrollerView.viewPort)
getViewContainer(): UIElementWrapper = UIElementWrapper(scrollerView.viewContainer)
scrollToTop()
scrollToBottom()
setVerticalScrollNormalized(value: Float)value(Float)

ScrollerWrapper

用途:滚动条控制

典型用法:const scroller = ref("scroller"); scroller.setValue(0.5)

方法签名:

方法参数默认值注意事项
getValue()
setValue(value: Float)value(Float)
setValueSilent(value: Float)value(Float)不触发通知/回调
getNormalizedValue(): Float = scroller.getNormalizedValue()
setNormalizedValue(normalizedValue: Float)normalizedValue(Float)
scrollValue(normalizedValue: Float)normalizedValue(Float)
getMinValue()
getMaxValue()
setRange(minValue: Float, maxValue: Float)minValue(Float);maxValue(Float)
setScrollBarSize(size: Float)size(Float)
getScrollBarSize(): Float = scroller.scrollerStyle.scrollBarSize()
setScrollDelta(delta: Float)delta(Float)
getScrollDelta(): Float = scroller.scrollerStyle.scrollDelta()
isDragging()
setOnValueChanged(listener: (Float) -> Unit)listener((Float) -> Unit)回调在 UI 线程触发
getHeadButton(): ButtonWrapper = ButtonWrapper(scroller.headButton)
getTailButton(): ButtonWrapper = ButtonWrapper(scroller.tailButton)
getScrollBar(): ButtonWrapper = ButtonWrapper(scroller.scrollBar)
getScrollContainer(): UIElementWrapper = UIElementWrapperFactory.wrap(scroller.scrollContainer)
createVertical()
createHorizontal()

SearchComponentWrapper

用途:搜索式下拉选择

典型用法:const search = ref("search"); search.setOnValueChanged(v => {})

方法签名:

方法参数默认值注意事项
getValue(): Any? = search.getValue()
setValue(value: Any?)value(Any?)
setValueSilent(value: Any?)value(Any?)不触发通知/回调
setSelected(value: Any?)value(Any?)
isOpen(): Boolean = search.isOpen()
showSearch()
hideSearch()
setCandidateUIProvider(provider: (Any?) -> UIElementWrapper)provider((Any?) -> UIElementWrapper)
setFocusOverlay(texture: IGuiTexture)texture(IGuiTexture)
setMaxItemCount(count: Int)count(Int)
getMaxItemCount(): Int = search.searchStyle.maxItemCount()
setScrollerViewHeight(height: Float)height(Float)
setShowOverlay(show: Boolean)show(Boolean)
setCloseAfterSelect(close: Boolean)close(Boolean)
setOnValueChanged(callback: (Any?) -> Unit)callback((Any?) -> Unit)回调在 UI 线程触发
getTextField(): TextFieldWrapper = TextFieldWrapper(search.textField)
getPreview(): UIElementWrapper = UIElementWrapperFactory.wrap(search.preview)
getDialog(): UIElementWrapper = UIElementWrapperFactory.wrap(search.dialog)
getScrollerView(): ScrollerViewWrapper = ScrollerViewWrapper(search.scrollerView)

SelectorWrapper

用途:下拉选择器

典型用法:const sel = ref("type"); sel.setCandidates(["A", "B"])

方法签名:

方法参数默认值注意事项
getValue()
setSelected(value: T?)value(T?)
setSelectedSilent(value: T?)value(T?)不触发通知/回调
getCandidates()
setCandidates(candidates: List<T>)candidates(List<T>)
getCandidateCount()
isOpen(): Boolean = selector.isOpen()
open()
close()
toggle()
setMaxItemCount(count: Int)count(Int)
getMaxItemCount(): Int = selector.selectorStyle.maxItemCount()
setScrollerViewHeight(height: Float)height(Float)
setShowOverlay(show: Boolean)show(Boolean)
setCloseAfterSelect(close: Boolean)close(Boolean)
setOnValueChanged(callback: (T?) -> Unit)callback((T?) -> Unit)回调在 UI 线程触发

SplitViewWrapper

用途:分割面板(左右/上下)

典型用法:const split = ref("split"); split.setPercentage(0.3)

方法签名:

方法参数默认值注意事项
getPercentage(): Float = splitView.getPercentage()
setPercentage(percentage: Float)percentage(Float)
setBorderSize(size: Float)size(Float)
getBorderSize()
setMinPercentage(min: Float)min(Float)
getMinPercentage()
setMaxPercentage(max: Float)max(Float)
getMaxPercentage()
setFirst(element: UIElementWrapper)element(UIElementWrapper)
setSecond(element: UIElementWrapper)element(UIElementWrapper)
getFirst(): UIElementWrapper = UIElementWrapperFactory.wrap(splitView.first)
getSecond(): UIElementWrapper = UIElementWrapperFactory.wrap(splitView.second)
createHorizontal()
createVertical()

SwitchWrapper

用途:开关控件

典型用法:const sw = ref("switch"); sw.setOn(true)

方法签名:

方法参数默认值注意事项
isOn()
setOn(on: Boolean)on(Boolean)回调在 UI 线程触发
setOnSilent(on: Boolean)on(Boolean)不触发通知/回调
getValue(): Boolean = switch.getValue()
setValue(value: Boolean)value(Boolean)
setValueSilent(value: Boolean)value(Boolean)不触发通知/回调
setBaseTexture(texture: IGuiTexture)texture(IGuiTexture)
setPressedTexture(texture: IGuiTexture)texture(IGuiTexture)
setMarkTexture(texture: IGuiTexture)texture(IGuiTexture)
setUnmarkTexture(texture: IGuiTexture)texture(IGuiTexture)
setOnSwitchChanged(callback: (Boolean) -> Unit)callback((Boolean) -> Unit)回调在 UI 线程触发

TabViewWrapper

用途:标签页容器

典型用法:const tabs = ref("tabs"); tabs.setOnTabSelected(tab => {})

方法签名:

方法参数默认值注意事项
addTab(tab: Tab, content: UIElement, index: Int = -1)index=-1
addTabWithWrappers(tab: UIElementWrapper, content: UIElementWrapper, index: Int = -1)index=-1
removeTab(tab: Tab)tab(Tab)
removeTabWrapper(tab: UIElementWrapper)tab(UIElementWrapper)
clear()
selectTab(tab: Tab)tab(Tab)
selectTabWrapper(tab: UIElementWrapper)tab(UIElementWrapper)
selectTabByIndex(index: Int)index(Int)
getSelectedTab()
getTabCount(): Int = tabView.getTabCount()
getTabAt(index: Int)index(Int)
getContentOf(tab: Tab)tab(Tab)
getTabHeaderContainer(): UIElementWrapper = UIElementWrapper(tabView.tabHeaderContainer)
getTabScroller(): ScrollerViewWrapper = ScrollerViewWrapper(tabView.tabScroller)
getTabContentContainer(): UIElementWrapper = UIElementWrapper(tabView.tabContentContainer)
setOnTabSelected(callback: (Tab) -> Unit)callback((Tab) -> Unit)回调在 UI 线程触发

TabWrapper

用途:单个标签页按钮

典型用法:const tab = ref("tab1"); tab.setTextLiteral("装备")

方法签名:

方法参数默认值注意事项
isSelected()
setSelected(selected: Boolean)selected(Boolean)
setText(text: ComponentWrapper)text(ComponentWrapper)
setTextString(text: String)text(String)按翻译 key 解析
setTextLiteral(text: String)text(String)按字面文本,不走翻译
setDynamicText(provider: () -> ComponentWrapper)provider(() -> ComponentWrapper)
setTextColor(color: Int)color(Int)
setFontSize(size: Float)size(Float)
setBaseTexture(texture: IGuiTexture)texture(IGuiTexture)
setHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setSelectedTexture(texture: IGuiTexture)texture(IGuiTexture)
setOnTabSelected(callback: () -> Unit)callback(() -> Unit)回调在 UI 线程触发
setOnTabUnselected(callback: () -> Unit)callback(() -> Unit)回调在 UI 线程触发
hasTabView(): Boolean = tab.getTabView()
getContent()

TagFieldWrapper

用途:NBT/Tag 输入框

典型用法:const tag = ref("tag"); tag.setCompoundTagOnly()

方法签名:

方法参数默认值注意事项
getValue(): Tag = field.getValue()
setValue(value: Tag?)value(Tag?)
setValueSilent(value: Tag?)value(Tag?)不触发通知/回调
getValueAsString(): String = field.getValue().toString()
setTagValidator(validator: (Tag) -> Boolean)validator((Tag) -> Boolean)
setCompoundTagOnly()
setListOnly()
setAny()
setTagResponder(responder: (Tag) -> Unit)responder((Tag) -> Unit)
getTextField(): TextFieldWrapper = TextFieldWrapper(field.textField)

TextAreaWrapper

用途:多行文本输入

典型用法:const area = ref("desc"); area.setText("hello")

方法签名:

方法参数默认值注意事项
getValue(): Array<String> = textArea.getValue()
getValueAsString(): String = textArea.getValue().joinToString("\n")
setLines(lines: List<String>)lines(List<String>)
setLinesArray(lines: Array<String>)lines(Array<String>)
setText(text: String)text(String)
getLines(): List<String> = textArea.getLines()
getLineCount(): Int = textArea.getLines()
getCursorLine()
getCursorCol()
setCursor(line: Int, col: Int)line(Int);col(Int)
hasSelection(): Boolean = textArea.hasSelection()
getSelectionStart()
getSelectionEnd()
isError()
isEditable(): Boolean = textArea.isEditable()
getScrollX()
getScrollY()
setTextColor(color: Int)color(Int)
setFontSize(size: Float)size(Float)
setPlaceholder(placeholder: String)placeholder(String)
setLineSpacing(spacing: Float)spacing(Float)
pushHistory()
setOnLinesChanged(callback: (Array<String>) -> Unit)callback((Array<String>) -> Unit)回调在 UI 线程触发

TextElementWrapper

用途:文本元素基础能力

典型用法:const text = ref("title"); text.setTextString("标题")

方法签名:

方法参数默认值注意事项
getText(): ComponentWrapper = ComponentWrapper.wrap(textElement.text)
getTextString()
setText(text: ComponentWrapper)text(ComponentWrapper)
setTextString(text: String)text(String)按翻译 key 解析
setTextLiteral(text: String)text(String)按字面文本,不走翻译
setTextColor(color: Int)color(Int)
getTextColor(): Int = textElement.textStyle.textColor()
setFontSize(size: Float)size(Float)
getFontSize(): Float = textElement.textStyle.fontSize()
setTextShadow(shadow: Boolean)shadow(Boolean)
hasTextShadow(): Boolean = textElement.textStyle.textShadow()
setAdaptiveWidth(adaptive: Boolean)adaptive(Boolean)
setAdaptiveHeight(adaptive: Boolean)adaptive(Boolean)

TextFieldWrapper

用途:单行文本输入

典型用法:const input = ref("name"); input.setText("Steve")

方法签名:

方法参数默认值注意事项
getText()
getRawText()
setText(text: String)text(String)
setTextSilent(text: String)text(String)不触发通知/回调
getValue(): String = textField.getValue()
getCursorPosition()
setCursorPosition(pos: Int)pos(Int)
getSelectionStart()
getSelectionEnd()
setSelection(start: Int, end: Int)start(Int);end(Int)
getSelectedText(): String = textField.getHighlighted()
selectAll()
isError()
isEditable(): Boolean = textField.isEditable()
setAnyString()
setNumbersOnlyInt(minValue: Int = Int.MIN_VALUE, maxValue: Int = Int.MAX_VALUE)minValue=Int.MIN_VALUE;maxValue=Int.MAX_VALUE
setNumbersOnlyFloat(minValue: Float = -Float.MAX_VALUE, maxValue: Float = Float.MAX_VALUE)minValue=-Float.MAX_VALUE;maxValue=Float.MAX_VALUE
setResourceLocationOnly()
setTextColor(color: Int)color(Int)
getTextColor(): Int = textField.textFieldStyle.textColor()
setFontSize(size: Float)size(Float)
getFontSize(): Float = textField.textFieldStyle.fontSize()
setPlaceholder(placeholder: String)placeholder(String)
setOnTextChanged(callback: (String) -> Unit)callback((String) -> Unit)回调在 UI 线程触发

ToggleWrapper

用途:带文本的开关按钮

典型用法:const toggle = ref("agree"); toggle.setOn(true)

方法签名:

方法参数默认值注意事项
isOn()
setOn(on: Boolean)on(Boolean)回调在 UI 线程触发
setOnSilent(on: Boolean)on(Boolean)不触发通知/回调
getValue(): Boolean = toggle.getValue()
setValue(value: Boolean)value(Boolean)
setValueSilent(value: Boolean)value(Boolean)不触发通知/回调
setText(text: ComponentWrapper)text(ComponentWrapper)
setTextString(text: String)text(String)按翻译 key 解析
setTextLiteral(text: String)text(String)按字面文本,不走翻译
noText()
enableText()
setMarkTexture(texture: IGuiTexture)texture(IGuiTexture)
setUnmarkTexture(texture: IGuiTexture)texture(IGuiTexture)
setBaseTexture(texture: IGuiTexture)texture(IGuiTexture)
setHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setOnToggleChanged(callback: (Boolean) -> Unit)callback((Boolean) -> Unit)回调在 UI 线程触发
hasToggleGroup()

TreeListWrapper

用途:树形列表

典型用法:const tree = ref("tree"); tree.setOnSelectedChanged(nodes => {})

方法签名:

方法参数默认值注意事项
setRoot(root: Any?)root(Any?)
getRoot()
reloadList()
getSelected(): List<Any?> = tree.getSelected().toList()
getSelectedFirst(): Any? = tree.getSelected().firstOrNull()
isNodeSelected(node: Any?)node(Any?)
setSupportMultipleSelection(support: Boolean)support(Boolean)
isSupportMultipleSelection()
isNodeExpanded(node: Any?)node(Any?)
expandNode(node: Any?)node(Any?)
collapseNode(node: Any?)node(Any?)
setStaticTree(static: Boolean)static(Boolean)
isStaticTree()
setNodeUISupplier(supplier: (Any?) -> UIElementWrapper)supplier((Any?) -> UIElementWrapper)
setTextTemplate(textMapper: (Any?) -> ComponentWrapper)textMapper((Any?) -> ComponentWrapper)
setNodeTexture(texture: IGuiTexture)texture(IGuiTexture)
setHoverTexture(texture: IGuiTexture)texture(IGuiTexture)
setExpandIcon(texture: IGuiTexture)texture(IGuiTexture)
setCollapseIcon(texture: IGuiTexture)texture(IGuiTexture)
setOnSelectedChanged(callback: (List<Any?>) -> Unit)callback((List<Any?>) -> Unit)回调在 UI 线程触发
setOnDoubleClickNode(callback: (Any?) -> Unit)callback((Any?) -> Unit)回调在 UI 线程触发
setOnNodeUICreated(callback: (Any?, UIElementWrapper) -> Unit)callback((Any?);UIElementWrapper) -> Unit(Any)回调在 UI 线程触发

UIElementWrapper

用途:所有 UI 元素的基础控制

典型用法:const root = ref("root"); root.addClass("active")

方法签名:

方法参数默认值注意事项
getId()
setId(id: String)id(String)
isVisible()
setVisible(visible: Boolean)visible(Boolean)
isActive()
setActive(active: Boolean)active(Boolean)
isFocused()
isHovered()
isDisplayed()
getPositionX()
getPositionY()
getWidth()
getHeight()
setWidth(width: Float)width(Float)
setHeight(height: Float)height(Float)
setSize(width: Float, height: Float)width(Float);height(Float)
addClass(vararg classNames: String)vararg classNames(String)
removeClass(vararg classNames: String)vararg classNames(String)
toggleClass(className: String)className(String)
hasClass(className: String): Boolean = element.hasClass(className)className=element.hasClass(className
getClasses(): List<String> = element.classes.toList()
setBackground(texture: IGuiTexture)texture(IGuiTexture)
focus()
blur()
show()
hide()
getProperty(key: String): T? = element.getProperty(key)key=element.getProperty(key
setProperty(key: String, value: Any?)key(String);value(Any?)
hasProperty(key: String): Boolean = element.hasProperty(key)key=element.hasProperty(key
removeProperty(key: String)key(String)
addEventListener(eventType: String, listener: UIEventListener)eventType(String);listener(UIEventListener)
removeEventListener(eventType: String, listener: UIEventListener)eventType(String);listener(UIEventListener)
getChildCount(): Int = element.childCount()
getParent()
getChildAt(index: Int)index(Int)
getChildren()
addChild(child: UIElementWrapper)child(UIElementWrapper)
addChildElement(child: UIElement)child(UIElement)
addChildAt(child: UIElementWrapper, index: Int)child(UIElementWrapper);index(Int)
removeChild(child: UIElementWrapper)child(UIElementWrapper)
removeChildElement(child: UIElement)child(UIElement)
clearChildren()
hasChild(child: UIElementWrapper)child(UIElementWrapper)
unwrap()

UIElementWrapperFactory

用途:包装/解包原始元素与 Store

典型用法:const raw = UIElementWrapperFactory.unwrap(ref("root"))

方法签名:

方法参数默认值注意事项
wrap(element: UIElement)element(UIElement)
wrapStore(store: UIStore)store(UIStore)
unwrap(wrapper: UIElementWrapper)wrapper(UIElementWrapper)
unwrapStore(wrapper: UIStoreWrapper)wrapper(UIStoreWrapper)
isWrapper(obj: Any?)obj(Any?)
resolveElement(obj: Any?)obj(Any?)

VirtualListWrapper

用途:大数据虚拟列表

典型用法:const list = ref("list"); list.setItems(items)

方法签名:

方法参数默认值注意事项
setItems(items: List<Any?>)items(List<Any?>)
getItemCount(): Int = list.getItemCount()
refresh()
setItemHeight(height: Float)height(Float)
getItemHeight()
setBuffer(buffer: Int)buffer(Int)
getBuffer()
setRenderItem(renderer: (Any?, Int) -> UIElementWrapper)renderer((Any?);Int) -> UIElementWrapper(Any)
scrollToIndex(index: Int)index(Int)
scrollToIndexWithAlign(index: Int, align: String)index(Int);align(String)
scrollToTop()
scrollToBottom()
getTotalHeight(): Float = list.getTotalHeight()

PonderElementWrapper

用途:Ponder 场景视图(无播放控制)

典型用法:const p = ref("ponder"); p.setSceneId("mymod:scene")

方法签名:

方法参数默认值注意事项
setSceneId(sceneId: String?)sceneId(String?)传空/空白则清空场景
setAutoTickScene(value: Boolean)value(Boolean)true 为自动播放
setOwnsScene(value: Boolean)value(Boolean)true 为自动 dispose
setPartialTickOverride(value: Float?)value(Float?)null 为使用渲染 partialTick
clearPartialTickOverride()等同于设置为 null
setRenderSceneOverlay(value: Boolean)value(Boolean)控制 overlay 显示
setZoomEnabled(value: Boolean)value(Boolean)控制滚轮缩放
setPlatformFlash(value: Float)value(Float)底板闪光强度
setScreenOffset(value: Double)value(Double)场景滑动偏移
setScreenOffsetProvider(provider: (Float) -> Double)provider((Float) -> Double)回调返回偏移

PonderPlayerWrapper

用途:Ponder 播放器(带控制条)

典型用法:const player = ref("player"); player.setComponentId("minecraft:piston")

方法签名:

方法参数默认值注意事项
setComponentId(componentId: String?)componentId(String?)传空/空白则清空
setPlaying(value: Boolean)value(Boolean)播放/暂停
play()等同 setPlaying(true)
pause()等同 setPlaying(false)
isPlaying()
setComfyReadingEnabled(value: Boolean)value(Boolean)慢速阅读模式
isComfyReadingEnabled()
replay()重播当前场景
prevScene()切换到上一个场景
nextScene()切换到下一个场景
jumpToScene(index: Int)index(Int)跳转到指定场景
seekToTime(time: Int)time(Int)跳转到指定时间点
seekToPercent(percent: Float)percent(Float)0~1 的进度
getSceneCount()返回场景数量
getSceneIndex()返回当前索引
getSceneIds()返回场景 ID 列表
getSceneTitles()返回标题列表
getCurrentSceneId()返回当前场景 ID
getCurrentSceneTitle()返回当前场景标题
getCurrentTime()当前播放时间(tick)
getTotalTime()当前场景总时长(tick)
getProgress()当前场景进度(0~1)
setReferredTagId(tagId: String?)tagId(String?)关联标签(可选)
setOnCloseRequested(callback: () -> Unit)callback(() -> Unit)点击关闭按钮时触发
setOnTagClicked(callback: (String) -> Unit)callback((String) -> Unit)参数为 tagId 字符串

PonderRuntimeUIWrapper

用途:Ponder 运行时导航 UI(标签索引/章节/播放器)

典型用法:const ui = ref("ponderRuntime"); ui.openTagIndex()

方法签名:

方法参数默认值注意事项
openIndex()进入索引页
openTagIndex()进入标签索引页
openTag(tagId: String)tagId(String)资源 ID(namespace:path)
openChapter(chapterId: String)chapterId(String)资源 ID(namespace:path)
openComponent(componentId: String, referredTagId?: String, chapterId?: String)componentId(String);referredTagId(String?);chapterId(String?)资源 ID(namespace:path)
setOnExit(callback: () -> Unit)callback(() -> Unit)点击返回/退出时触发