我想要禁止玩家跳跃,我一开始用的是跳跃提升255效果,之后我改用判断Y轴的变更,但是会导致阶梯方块上不去,有无更好的办法来禁止跳跃。
另外,我尝试用取消玩家移动事件来禁止玩家移动,但是,这样子连视角都无法移动,我更是试过无限原地TP,我真的是江郎才尽了,求大佬帮助
另外,我尝试用取消玩家移动事件来禁止玩家移动,但是,这样子连视角都无法移动,我更是试过无限原地TP,我真的是江郎才尽了,求大佬帮助
本帖最后由 Rothes 于 2021-8-23 16:31 编辑
没有了解过这些,但是要允许视角转动的取消移动原理上可以把getTo里面的 yaw 和 pitch set到getFrom里面再setTo
关于跳跃或许可以使用向量?爬梯子,楼梯的Y都不会超过1
没有了解过这些,但是要允许视角转动的取消移动原理上可以把getTo里面的 yaw 和 pitch set到getFrom里面再setTo
关于跳跃或许可以使用向量?爬梯子,楼梯的Y都不会超过1
Paper-API 提供了 PlayerJumpEvent,你可以尝试切换到 Paper-API 来取消监听这个事件
本帖最后由 咸鱼气功王 于 2021-8-23 16:41 编辑
不知道这样行不行,用protocolib监听 Player Movement 这个包,然后判断下On Ground 。https://wiki.vg/Protocol#Player_Movement
不知道这样行不行,用protocolib监听 Player Movement 这个包,然后判断下On Ground 。https://wiki.vg/Protocol#Player_Movement
贺兰兰 发表于 2021-8-23 16:36
Paper-API 提供了 PlayerJumpEvent,你可以尝试切换到 Paper-API 来取消监听这个事件
贺兰兰sama,你也知道,用的是spigot啊
在PlayerMoveEvent里检测变了什么不就可以了,如果只改变了视角就忽略,改变了高度就取消
听说还有一个事件,PlayerVelocityEvent,似乎这个也可以,把动量的y设为0试试?
听说还有一个事件,PlayerVelocityEvent,似乎这个也可以,把动量的y设为0试试?
检测跳跃:
阻止玩家移动:
监听PlayerMoveEvent, 计算Y轴变化,玩家起跳速度 = 0.42 + (跳跃药水等级 * 0.1)
阻止玩家移动:
两种方法:
第一种,直接Player#setWalkSpeed为0 (好像可以跳着走)
第二种,仍然是取消PlayerMoveEvent, 但是计算移动距离,仅在移动距离>0时取消event