LazuliKao / BDSWebSocketAPIProtocol

通过Websocket协议与BDX服务器联动 ;)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WebSocketAPI

玩家加入(服务端发出

when a playe join the server

{
    "type":"pack",
    "cause": "join",
    "params": {
        "sender": "ExamplePlayer",
        "xuid": "",
        "ip": "target's ip address"
    }
}

玩家退出(服务端发出

when the player left the server

{
    "type":"pack",
    "cause": "left",
    "params": {
        "sender": "ExamplePlayer",
        "xuid": ""
    }
}

玩家使用命令(服务端发出

when the player use a command

{
    "type":"pack",
    "cause": "cmd",
    "params": {
        "sender": "ExamplePlayer",
        "cmd": "/kill @s"
    }
}

玩家消息(服务端发出

player send a message

{
    "type":"pack",
    "cause": "chat",
    "params": {
        "sender": "ExamplePlayer",
        "text": "HelloWorld"
    }
}

生物死亡(服务端发出(仅限有名字(NameTag)的生物(玩家)

Mob Die

{
  "type": "pack",
  "cause": "mobdie",
  "params": {
    "mobtype": "entity.player.name",//实体类型
    "mobname": "xxx",//实体名称
    "dmcase": 0,//伤害源ID
    "dmname": "",//伤害类型
    "srctype": "",//伤害源类型
    "srcname": "",//伤害源名称
    "pos": {
      "x": 1072.10034,
      "y": 69.62001,
      "z": 14.9382544
    }
  }
}

WS客户端控制命令

WebSocket Client execute a command

  • 发送命令(不需要斜杠)

{
   "type":"pack",
   "action": "runcmdrequest",
   "params": {
       "cmd": "kick ExamplePlayer nmsl",
       "id": 0
   }
}
  • 服务端返回

    {
        "type":"pack",
        "cause": "runcmdfeedback",
        "params": {
            "id": 0,
            "result": ">命令执行结果<"
        }
    }
    {
        "type":"pack",
        "cause": "decodefailed",//密匙不匹配无法解密
        "params": {
            "msg": "密匙不匹配,无法解密数据包!"
        }
    }
  • 发送服务器文本消息(需要加密)

{
   "type":"pack",
   "action": "sendtext",
   "params": {
       "text": "hello world !",
       "id": 0
   }
}
  • 服务端返回

    {
        "type":"pack",
        "cause": "runcmdfeedback",
        "params": {
            "id": 0,
            "result": ">命令执行结果<"
        }
    }
    {
        "type":"pack",
        "cause": "decodefailed",//密匙不匹配无法解密
        "params": {
            "msg": "密匙不匹配,无法解密数据包!"
        }
    }

密文数据包

  • 加密包
{
    "type": "encrypted",
    "params": {
        "mode": "aes_cbc_pck7padding",
        "raw": "base64 String(from a pack json)"
    }
}
  • 解密错误
{
    "type": "pack",
    "cause": "decodefailed",
    "params": {
        "msg": "JSON格式错误、AES解密错误... 此处返回消息不固定,只用于描述"
    }
}
  • 请求无效(插件端要求使用加密数据包)
{
    "type": "pack",
    "cause": "invalidrequest",
    "params": {
        "msg": "未加密的初始包不予执行!此处返回消息不固定,只用于描述"
    }
}

加密规则

-取密码大写MD5作为基密码
-前16位作为AES_Key
-后16位作为AES_IV
-使用AES/CBC/PCKS7Padding(PCKS5Padding理论上通用)
-见en_decrypt_bdxws_demo.java为例子

About

通过Websocket协议与BDX服务器联动 ;)

License:Other


Languages

Language:C++ 98.6%Language:Go 0.8%Language:Java 0.3%Language:Kotlin 0.3%