⠀蛋⠀
我想要禁止玩家跳跃,我一开始用的是跳跃提升255效果,之后我改用判断Y轴的变更,但是会导致阶梯方块上不去,有无更好的办法来禁止跳跃。

另外,我尝试用取消玩家移动事件来禁止玩家移动,但是,这样子连视角都无法移动,我更是试过无限原地TP,我真的是江郎才尽了,求大佬帮助

Rothes
本帖最后由 Rothes 于 2021-8-23 16:31 编辑

没有了解过这些,但是要允许视角转动的取消移动原理上可以把getTo里面的 yaw 和 pitch set到getFrom里面再setTo
关于跳跃或许可以使用向量?爬梯子,楼梯的Y都不会超过1

贺兰兰
Paper-API 提供了 PlayerJumpEvent,你可以尝试切换到 Paper-API 来取消监听这个事件

SumCraft
本帖最后由 咸鱼气功王 于 2021-8-23 16:41 编辑

不知道这样行不行,用protocolib监听 Player Movement 这个包,然后判断下On Ground 。https://wiki.vg/Protocol#Player_Movement


⠀蛋⠀
贺兰兰 发表于 2021-8-23 16:36
Paper-API 提供了 PlayerJumpEvent,你可以尝试切换到 Paper-API 来取消监听这个事件

贺兰兰sama,你也知道,用的是spigot啊

roj234
在PlayerMoveEvent里检测变了什么不就可以了,如果只改变了视角就忽略,改变了高度就取消
听说还有一个事件,PlayerVelocityEvent,似乎这个也可以,把动量的y设为0试试?

RE_OVO
检测跳跃:
监听PlayerMoveEvent, 计算Y轴变化,玩家起跳速度 = 0.42 + (跳跃药水等级 * 0.1)


阻止玩家移动:
两种方法:
第一种,直接Player#setWalkSpeed为0 (好像可以跳着走)

第二种,仍然是取消PlayerMoveEvent, 但是计算移动距离,仅在移动距离>0时取消event

第一页 上一页 下一页 最后一页