LogoArcartX Doc
UI篇

UI通讯处理

UI通讯处理

希望是最大的灾难,因为他延续了人的苦难。

UI通讯处理

  • 这里其实算是一个开发文档,如果您不涉及写插件应该用不到这个,不过,某些情况您可能需要修改你所使用插件的UI的一些逻辑,可能也需要对本章进行了解。
  • 先上一个包含通讯处理的UI配置
ui:
  packetHandler:
    init: |-
      var.title = packet['title']
      val.inputs.actions['init'](packet['type'])
      val.button.actions['init'](packet['type'])
    result: |-
      var.title = packet
    close: |-
      async {
        Thread.sleep(500)
        self.close()
      }
  • 当服务端使用API对指定UI发包的时候,会触发对应ID的包处理器。
  • 用上面这个配置举例,比如我要触发init这个处理器的逻辑,则服务端对应的代码应该是这样的
ui.sendPacket(player,"init", Map.of("type","register","title","你好"));
  • 这里的init就是上面配置中的init,而Map.of("type","register","title","你好")就是传递给处理器的包内容。
  • 值得注意的是,包内容只允许是基本数据类型以及List和Map,且如果是集合类型,其内容也应是基本数据类型或者只包含基本数据类型的集合。
  • 在服务端运行上述代码发送包到这个UI的时候,便会执行相对应的脚本。
  • 从示例不难看出,发来的包的内容会赋值给变量packet,您可以通过脚本进行读取并执行您的逻辑。

On this page