#java #minecraft
Вопрос:
Итак, я создаю плагин для защиты от взлома скорости на Java, используя PlayerMoveEvent, чтобы рассчитать расстояние, на которое игрок перемещается по сравнению с ограничением скорости, есть ли способ игнорировать ось y, чтобы игрок не получил удар при падении? Я провел кучу исследований по событию с краном, и там не так много информации, любая помощь приветствуется!
public void getLimit(PlayerMoveEvent e) {
Player player = e.getPlayer();
if(e.getFrom().distance(e.getTo()) > 0.8) {
player.kickPlayer("Too fast");
}
}
}
Ответ №1:
Вот два способа, которыми вы можете это сделать. Первый способ-сделать математику самостоятельно, а не использовать distance
:
public void getLimit(PlayerMoveEvent e) {
Player player = e.getPlayer();
Location from = e.getFrom();
Location to = e.getTo();
double dx = to.getX() - from.getX();
double dz = to.getZ() - from.getZ();
if(dx * dx dz * dz > 0.64) {
player.kickPlayer("Too fast");
}
}
Второй способ-создать вектор с нулевым расстоянием по оси y, а затем измерить его:
public void getLimit(PlayerMoveEvent e) {
Player player = e.getPlayer();
Location from = e.getFrom();
Location to = e.getTo().clone();
to.setY(from.getY());
if(from.distance(to) > 0.8) {
player.kickPlayer("Too fast");
}
}