- Баллы
- 1
Простейший пример - запрос на телепортацию в Essentials: сначала /call от одного игрока, потом /tpaccept от другого. Как это правильно делать? Желательно просто и для дурака
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Ок, примерно понимаю, как это должно работать.Мути мапу <String,UUID>, где за ключ хранишь ник игрока, которому ПРИСЛАЛИ запрос, а в значении, который ОТОСЛАЛ.
При /call Valera добавляешь в мапу - map.put(arg[0].toLowerCase(),((Player)sender).getUniqueID());
При /tpyes достаешь из мапы - Player tpDude=Bukkit.getPlayer(map.get(player.getName().toLowerCase()));
upd: стоит наделать проверок, аля есть ли такие игроки на сервере онлайн
Можно попробовать через System.currentTimeMillis().Ок, примерно понимаю, как это должно работать.
А не подскажешь, как ограничить время приёма запроса? С тиками что-то ведь делать надо, а я ещё к ним даже не прикасался
private void startScheduler(JavaPlugin plugin) {
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { public void run() {
// Код здесь будет запускаться раз в час
// TODO: Очистка старых запросов на телепортацию
// В секунде ~20 тиков. В часе 3600 секунд. 20*3600=72000
}}, 72000L, 72000L);}
Ого, спасибо за такой развёрнутый ответ. Да и в целом большое спасибо.Можно попробовать через System.currentTimeMillis().
Создаешь класс, например, TpPlayer, хранишь там UUID отправителя и время отправки(метод выше), и хранишь эти экземпляры в мапе вместо UUID.
При проверке просто вычитаешь текущие время и время отправки. Если разница, например, больше 3000(3 секунды), то выводишь ошибку.
Не стоит забывать выгружать это дело - после использования /tpyes удалять из мапы запрос и проводить очистку от старых запросов хотя бы раз в час.
PHP:private void startScheduler(JavaPlugin plugin) { Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { public void run() { // Код здесь будет запускаться раз в час // TODO: Очистка старых запросов на телепортацию // В секунде ~20 тиков. В часе 3600 секунд. 20*3600=72000 }}, 72000L, 72000L);}