丑话说前头

我不是专业的反作弊developer,你就当参考看就行了。

反作弊的组成部分?

主要分为

然后你可能还需要一个Config系统,用来生成/加载checks,yml啥的

以及一些util类来计算BoundingBox,AABB之类的

PacketEvents还是Protocollib?

NMS?

在这里顺带讲一下NMS,这个其实就是net.minecraft.server的缩写
NMS每个版本都不一样,你需要重新做适配/兼容
NMS存放的其实就是服务器的代码,你使用它,可以更加底层的获取一些东西
不过这些都是老资历用的了。我们初次写反作弊还是用Protocollib或者PacketEvents这种API比较好

Protocollib

Protocollib是一个很老牌的库了
它的README是这样子说的

某些任务使用标准的 Bukkit API 是无法完成的,可能需要直接操作 Minecraft 本身来进行处理。一种常见的做法是修改传入和传出的数据包,或者向数据流中插入自定义数据包。不过,这种操作相当繁琐,而且大多数实现方式在发布新版本的 Minecraft 后就会失效,主要是因为代码难以理解的问题。

那很明显了,它是支持多版本的,它说的一种常见的做法是修改传入和传出的数据包,或者向数据流中插入自定义数据包就是我们刚才提到的NMS了

但是Protocollib有几个缺点:

可能还会有其他的bug

所以,选择PacketEvents!

PacketEvents

README说:

PacketEvents 是一个专为 Minecraft Java 版设计的协议库,旨在方便数据包的处理与传输。

PacketEvents有很多优点,比如:

目前PacketEvents也在积极维护中
总之,你要是想写一个性能好的反作弊,首选PacketEvents

代码方面

如果你不怎么会Minecraft相关的东西,你可以去参考一些开源的反作弊,如FairFight(MIT协议)

好了后面的以后再写

转载请注明出处