| |
CustomPayload, PluginMessage, 以及BC&服务端插件之间的通讯 Part I |
| |
嘛,虽然我本人是希望把这个联动通讯放到晚一点再编写的,不过思考了半天讲道理BC插件不与bukkit联动能达到的功能好像都已经有人写了... 不过作为一些基本常规操作还是希望介绍一下 首先是ServerInfo和Server这两个类,ServerInfo可以理解成在BungeeCord的config.yml (如果不知道这个是什么建议你去自己开个BC然后看看配置文件) 里面设置的server。 比如这里我拿我自己配置的一个server信息来
可以看到这里有几个信息:
有了这些信息之后我们就可以做出一些高端操作,比如 获取服务器名字 ServerInfo.getName() 甚至可以做到获取服务器的玩家 (ServerInfo.getPlayers()) 关于这个是怎么做到的: 而在BungeeCord插件编写里要获得这样的数据很简单,比如如果是个ProxiedPlayer玩家就是酱紫玩:
然后一个基本操作了解一下就可以了:
|
| |
然而虽然官方能保证原生mc数据的低错误率,但却不能保证各mod (也就是第三方开发的) 完全不会出现这些问题,可是 (大概是notch/jeb玩mod的时候莫名其妙被断开链接了) 很多时候这些错误并不会怎么影响游戏体验,只是单纯的发错了包而已,而在这种情况下又断开连接才是最难受的,所以mojang就把自定义数据包给分流发送了,这样即使自定义数据有错误也不会导致整个游戏崩溃。 官方支持的自定义数据包允许了很多意想♂不到的可能性,而从此衍伸出了很多奇♂特的东西, PluginMessage就是其中之一, pluginmessage通过fml和bukkit的支持允许了开发者以更简易的方式达到mod(客户端)与插件(服务端)的通讯, 详细介绍可以看这里 上面的页面翻到最底下可以看到BungeeCord频道, BC基于这个pluginmessage开发了自己的一套支持从各服务器发送给BC本体各式各样的信息的渠道,嘛,大概就是酱紫了,各式各样的信息 |
| |||||||
因为是网络通讯,所以这里所有信息都是以一串字节发送的 (byte[]) 当然,这个字节码有 在BungeeCord使用的话我们要先注册自己的频道,本教程将在onEnable里注册:
频道是注册好了,可是怎么监听呢?
其他核心(bukkit/sponge)的监听方法
至此,本篇完结,关于发送和自定义将会在下一篇继续讲 |