Прыжки

Версия Minecraft
1.12.2
API
Forge
25
1
0
Всем привет. Нужно при определенных условиях отключать игроку возможность прыгнуть. Пробовал ставить motionY на -0.1, вроде частично помогает, игрок не может прыгать если стоит на месте, но при спринте появляется возможность делать микропрыжки. Есть ли еще какие либо способы это сделать?
 
Ловить LivingJumpEvent, если игрок - сетать motionY на 0, однако, при спринте будут изменяться ещё и motionX + motionZ. Можешь сделать WrapWithCodition в NetHandlerPlayServer#processPlayer, у него там есть вызов метода jump, просто не обрабатывать этот пакет, так получится более корректно, чтобы сохранить работу motion-ов в целом, если вдруг они изменяются посредством не прыжков.
 
При определенных условиях просто не дает кнопку жать.
Это костыль. Пакет со стороны клиента всё равно получится отправить пакет, хотя если посмотреть на читы, то через эти же пакеты там далеко не только прыгать получится.
По WrapWithCodition не получилось разобраться
Java:
@Mixin(NetHandlerPlayServer.class)
public abstract class MixinNetworkHandler {
    @WrapWithCondition(method = "processPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/EntityPlayerMP;jump()V"))
    public boolean preventJump(EntityPlayerMP player) {
        return player.isCreative();
    }
}
 
Назад
Сверху