> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opai.today/llms.txt
> Use this file to discover all available pages before exploring further.

# 安全开发常识

> 插件开发中的常识

本页面列出了开发中需要注意的事情，以免出现问题。

## 发包必须在Tick上

大部分操作数据包均只能在玩家更新上发送（例如onPlayerUpdate、onMotionUpdate），因为这些事件在玩家更新时触发，其他事件例如onPacketReceive中发送会触发反作弊（例如Post检查）。

如果你不确定你的发包是不是有问题的话可以前往`mc.loyisa.cn`反作弊选择`Vulcan`和`Grim`（使用`/ac vulcan grim`）进行测试，如果没有`BadPackets`或者`Post`的Flag则通常来说没有问题。

## 转头必须可以移动修复

`Rotation Manager`中提供了以下方法来设置转头：

```java theme={null}
void applyRotation(RotationData rotationData, int speed, boolean correction);
```

如果`correction`为`true`，则会在转头时进行移动修复，务必在onPlayerUpdate中使用applyRotation来设置转头，如果在MotionUpdate中设置客户端的移动已经更新完毕，无法修复移动。

除非你不计划让这个功能在Hypixel/GrimAC服务器使用，否则必须提供选项或者默认修复移动。

## 请勿主动发送Transaction包

Transaction又叫`CPacket0FTransaction`或者`C0F`，大部分反作弊利用它即时回复的特性来检测玩家真实位置实现延迟补偿的Reach或者HitBox检测等。

如果主动发送这个数据包会破坏TransactionOrder大部分反作弊都会自动封禁发送错误C0F的玩家。

## 渲染方法只能在渲染事件使用

渲染方法（例如各种绘制）只能在onRender2D中使用。

部分渲染方法（例如渲染碰撞箱）需要在onRender3D中使用。
