- Баллы
- 76
Если использовать Thread.sleep(), то задержка будет для всего плагина. Как сделать задержку только для определённого куска кода(допустим метода, цикла или условия)?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
ШедулерыЕсли использовать Thread.sleep(), то задержка будет для всего плагина. Как сделать задержку только для определённого куска кода(допустим метода, цикла или условия)?
А можно готовый код? Просто в 1 раз слышу про них.Шедулеры
http://g.zeos.in/?q=шедулеры bukkitА можно готовый код? Просто в 1 раз слышу про них.
В чём ошибка?
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
final Block b = e.getClickedBlock();
if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST) {
Sign sign = (Sign) b.getState();
Player player = e.getPlayer();
String[] lines = sign.getLines();
if(lines[0].equalsIgnoreCase("1")) {
BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
sign.setLine(1, "test");
sign.update();
scheduler.scheduleSyncRepeatingTask((Plugin) this, new Runnable() {
@Override
public void run() {
Sign sign = (Sign) b.getState();
sign.setLine(1, "");
sign.update();
}
}, 0L, 20L);
}
}
}
}
На кой чёрт создавать второй раз переменную sign? Она же уже создана, используйте её, поставив final к ней.В чём ошибка?
Java:@EventHandler public void onPlayerInteract(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { final Block b = e.getClickedBlock(); if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST) { Sign sign = (Sign) b.getState(); Player player = e.getPlayer(); String[] lines = sign.getLines(); if(lines[0].equalsIgnoreCase("1")) { BukkitScheduler scheduler = Bukkit.getServer().getScheduler(); sign.setLine(1, "test"); sign.update(); scheduler.scheduleSyncRepeatingTask((Plugin) this, new Runnable() { @Override public void run() { Sign sign = (Sign) b.getState(); sign.setLine(1, ""); sign.update(); } }, 0L, 20L); } } } }
А надо в главном? К нему ж вреде как public не подпишешь.На кой чёрт создавать второй раз переменную sign? Она же уже создана, используйте её, поставив final к ней.
Да и по кастованию (Plugin) this можно судить о том, что шедулер создаётся не в главном классе.
Что за ахинею вы несёте? this вы знаете, что такое?А надо в главном? К нему ж вреде как public не подпишешь.
А как тогда правильно сделать?Что за ахинею вы несёте? this вы знаете, что такое?
Где-то была тема об этом, не помню до чего доспорили.Можно подумать шедулеры это не потоки)
Вам уже сказали.Ну, так никто не скажет, как правильно сделать задержку?
Ну а можете исправить код?Вам уже сказали.