В моем приключении, чтобы попытаться создать плагин антихетика, я понимаю, что мне нужно немного больше знаний, связанных с задержкой и действиями клиента и сервера Minecraft. Текущий плагин, который я разрабатываю, имеет дело с досягаемостью. Один из факторов, который я должен учитывать, заключается в определении того, был ли удачный удар вызванным задержкой или клиентом.Minecraft/Bukkit - Как латентность влияет на удары?
Я подумал о нескольких способах обнаружения лаг/пинг, чтобы быть уверенным, что удары из-за клиента, а не задержки. Моя проблема заключается в том, кто должен «отставать» от дальнего удара, чтобы отстать? Человек бьет; человек попадает; или сервер?
Когда я говорю сервер, будет ли это иметь значение, если интернет-хост замедляется, а серверная программа работает медленно? Будет ли это влиять на то, как регистрируются хиты (это приведет к ударам)?
Если это имеет значение, моя установка для определения расстояния между хитами просто обработчик onPlayerHit
события:
public void onPlayerHit(EntityDamageByEntityEvent event) {
// make sure they are all players
if (!(event.getEntity() instanceof Player) | !(event.getDamager() instanceof Player))
return;
// get the event's players
Player damaged = (Player) event.getEntity();
Player damager = (Player) event.getDamager();
// get the locations
Location damagedLocation = damaged.getLocation();
Location damagerLocation = damager.getLocation();
// calculate the distance
double distance = damagedLocation.distance(damagerLocation);
// broadcast it to everyone
for (Player p: Bukkit.getOnlinePlayers()) {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&f" + damager.getDisplayName() + "&3 has just damaged &f" + damaged.getDisplayName() + "&3 from a distance of &4" + distance));
}
}
Отлично, вы поняли это! Возможно, вы могли бы отметить это как принятое для дальнейшего использования? – ItzBenteThePig