我正在使用player.setVelocity(player.getLocation().getDirection().multiply(Main.instance.getConfig().getDouble("velocity_multiplier")).setY(Main.instance.getConfig().getInt("Y_axis")));
设置玩家的速度。它允许通过配置进行高配置的运动,但问题是当你将其设置得太高时,Spigot 会阻止它。我不想启用:
server.properties: allow_flight.
那么我该如何避免这种情况呢?我只是为了测试而将乘数提高到 30,它会开始让你移动、出现故障,然后把你拉回来。它还表示,即使速度较小,玩家在控制台中移动也太快。我正在考虑让它逐渐应用速度。当你跳跃时,它会应用起始速度,并且随着你的移动,它会变得更高(Y_axis)和更远(velocity_multiplier),但我不知道该怎么做。
最佳答案
您可以在应用速度之前仅为玩家启用,并在延迟任务中禁用它
public void blabla(Player player){
player.setAllowFlight(true);
player.setVelocity(player.getLocation().getDirection().multiply(Main.instance.getConfig().getDouble("velocity_multiplier")).setY(Main.instance.getConfig().getInt("Y_axis")));
new BukkitRunnable() {
@Override
public void run() {
player.setAllowFlight(false);
}
}.runTaskLater(this, 20 * 5);
}
在代码中我使用了20 * 5来禁用5秒后的飞行,你可以将其更改为你想要的。
关于velocity - 如何在 Spigot 中逐渐应用速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35214761/