最MC论坛

标题: [教程]使用PacketListenerAPI更方便地处理数据包 [打印本页]

作者: lss233    时间: 2017-3-17 19:46
标题: [教程]使用PacketListenerAPI更方便地处理数据包
本帖最后由 lss233 于 2017-3-26 10:43 编辑

PacketListenerAPI
PacketListenerAPI是一个简便的数据包处理API,它提供了接受和发送数据包的功能,同时也包含了对一些数据包内容的修改,比较适用于改变游戏特性。

添加依赖

A.通过Maven

如果你是通过Maven来构建自己插件的,那么把Vault添加到依赖中十分简单。
打开pom.xml,在<repositories>....</repositories>代码段中加入以下内容:
  1. <repository>
  2.                 <id>inventive-repo</id>
  3.                 <url>https://repo.inventivetalent.org/content/groups/public/</url>
  4.         </repository>
复制代码

然后,在<dependencies>....</dependencies>代码段中加入以下内容:
  1. <dependency>
  2.                 <groupId>org.inventivetalent.packetlistener</groupId>
  3.                 <artifactId>api</artifactId>
  4.                 <version>3.5.2-SNAPSHOT</version>
  5.         </dependency>
复制代码

保存文件,你的Eclipse会在后台自动为你下载依赖。
你问我代码缩进?被论坛吃了,用你的IDE自动进行代码格式化吧。
B.通过常规方法

这里的常规方法指的是通过直接创建默认的Java项目来开发插件的,我认为这是一种很不好的开发习惯。

  • 下载插件,链接:点我
  • 右键项目,点击属性。
  • Java构建路径中,点击添加外部Jar
  • 选中刚刚下载好的插件,点击确定
其实这些步骤就和你当初导入服务端核心是一样的。
在plugin.yml中声明依赖

打开plugin.yml,在里面添加下面这行代码:
  1. depend: [PacketListenerAPI]
复制代码


使用API

在你的插件中加入下面这样的代码,即可通过API管理数据包。
  1. PacketListenerAPI.addPacketHandler(new PacketHandler() {

  2.                         @Override
  3.                         public void onSend(SentPacket packet) {
  4.                               //发送数据时触发
  5.                         }

  6.                         @Override
  7.                         public void onReceive(ReceivedPacket packet) {
  8.                               //接收数据时触发
  9.                         }

  10.         });
复制代码

然后,我们只需要在相应方法内进行判断即可:
  1.                 if (packet.getPacketName().equals("PacketPlayOutSpawnEntity")) {
  2.                   // 实体生成
  3.                 }
复制代码

以及修改内容..
  1.                 if(packet.getPacketName().equals("PacketPlayOutSpawnEntity")) {
  2.                   packet.setPacketValue("f", <EntityID>);//f 在这个数据包中的定义为实体类型,数据类型是整数。
  3.                 }
复制代码
这就是最简单的使用方法,以至于你如何使用,就看你的创造能力了。

后话

如果你在使用过程中遇到了问题,下面这些链接说不定能帮助到你:
如果你还有什么疑问,也可以在这个帖子下提出。
如果本帖有什么错误,还请各位批评指正!
最后,向API作者@inventivetalent致敬,一位了不起的人。






欢迎光临 最MC论坛 (http://www.zuimc.com/) Powered by Discuz! X3.2