@events.motionможно отменить8 методовПеред тем как клиент отправит серверу свою позицию и углы взгляда.
Это последняя точка, где можно поменять то, что сервер узнает о нашем игроке. Координаты, углы, флаг «на земле» ещё лежат в событии, и их можно переписать.
На этом событии строят всё, что связано с обманом сервера по позиции: NoFall, отправка другого угла взгляда при тихой ротации, мелкие сдвиги координат.
Важно понимать разницу с самим игроком: правка motion меняет только то, что уходит в сеть. Локально персонаж остаётся там, где был.
| Метод | Возвращает | Зачем |
|---|---|---|
getX() / getY() / getZ() | float | Координаты, которые сейчас уйдут серверу |
setX(v) / setY(v) / setZ(v) | ничего | Подменить координаты в пакете |
getYaw() / setYaw(v) | float / ничего | Угол поворота вбок. setYaw заодно доворачивает голову и корпус модели |
getPitch() / setPitch(v) | float / ничего | Наклон вверх-вниз, значение зажимается в границы от -90 до 90 |
isOnGround() / setOnGround(b) | bool / ничего | Флаг «стою на земле». Его и правит NoFall |
isSneaking() / setSneaking(b) | bool / ничего | Приседание, каким его увидит сервер |
isSprinting() / setSprinting(b) | bool / ничего | Спринт, каким его увидит сервер |
cancel() / isCancelled() | ничего / bool | Не отправлять позицию вообще |
mod = Module("NoFall", "Player")
mod.setDesc("Говорит серверу, что мы на земле")
@events.motion
def on_motion(event):
if not mod.isEnabled() or not world.ingame():
return
if not mc.player.isOnGround():
event.setOnGround(True) # урона от падения не будетmod = Module("FastFall", "Movement")
@events.motion
def on_motion(event):
if not mod.isEnabled() or event.isOnGround():
return
# серверу уходит координата ниже реальной
event.setY(event.getY() - 0.15)Общий список всех событий и правила подписки лежат на странице События.