1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как создать цикл?

Тема в разделе "Разработка плагинов для новичков", создана пользователем kevin7496, 5 июн 2024.

  1. Автор темы
    kevin7496

    kevin7496 Ньюби Пользователь

    Баллы:
    1
    Как создать цикл мне нужно чтобы сообщение высвечивалось постоянно
    Нужно для режима

    Вот мой код

    Код:
    package me.kevin.serverminigamekiller.minigame;
    
    import net.md_5.bungee.api.ChatMessageType;
    import net.md_5.bungee.api.chat.TextComponent;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    public class waintPlayer implements Listener {
    
        int Player_list = 0;
        int PlayerMax = 10;
    
        @EventHandler
        public void joinPlayer(PlayerJoinEvent e) {
            Player p = e.getPlayer();
            Player_list = p.getServer().getOnlinePlayers().size();
            p.sendMessage(String.valueOf(Player_list));
            p.teleport(new Location(Bukkit.getWorld("world"), -224, 73, 249));
        }
    
        public void waitPlayerStart(Player.Spigot e) {
            Player.Spigot p = (Player.Spigot) e;
            while (true) {
                p.sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.AQUA + "ОЖИДАНИЕ ИГРОКОВ " + Player_list + "/" + PlayerMax));
            }
        }
    
    }
    
     
  2. BetterLex

    BetterLex Активный участник Пользователь

    Баллы:
    76
    Нужно, чтобы сообщение отправлялось каждые, например 15 секунд?
     
  3. therimuru_

    therimuru_ Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Код:
       actionBarTaskId = Bukkit.getScheduler().runTaskTimerAsynchronously(instance, () -> {
           // действия в "цикле"
       }, 0, время).getTaskId();
    
    instance - сюда передать главный класс
    время - время, через которое будет повторяться цикл

    чтобы завершить "цикл"
    Код:
     Bukkit.getScheduler().cancelTask(actionBarTaskId);
    
    в переменной actionBarTaskId лежит ID "цикла"

    UPD: Время указывается в тиках, в 1 секунде 20 тиков
     
  4. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Показываю, как можно отменять задачу без создания дополнительных переменных:
    PHP:
    new BukkitRunnable() {
        @
    Override
        
    public void run() {
            
    // do something
            
    this.cancel(); // отменяет задачу
        
    }
    }.
    runTaskTimerAsynchronously(plugin20L20L);
    Если нужно отменить снаружи, то рекомендовал бы это делать не по ID таска, а по его объекту:
    PHP:
    BukkitTask bukkitTask plugin.getServer().getScheduler().runTaskTimerAsynchronously(plugin, () -> {
        
    // do something
    }, 20L20L);

    bukkitTask.cancel(); // отменяет задачу
     
    Последнее редактирование: 5 июн 2024
  5. Автор темы
    kevin7496

    kevin7496 Ньюби Пользователь

    Баллы:
    1
    Я не понял а что писать в инстансе?
     
  6. therimuru_

    therimuru_ Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Главный класс. (который extends 'JavaPlugin').
    Рекомендую более подробно ознакомиться с языком.
    Кстати, код Dymeth будет чуть-чуть получше, чем тот, который писал я.
     
  7. Автор темы
    kevin7496

    kevin7496 Ньюби Пользователь

    Баллы:
    1
    Это я просто пишу Main?
     
  8. Автор темы
    kevin7496

    kevin7496 Ньюби Пользователь

    Баллы:
    1
    А что мне писать в plugin нет такой команды
     
  9. therimuru_

    therimuru_ Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Отправь код полностью
     

Поделиться этой страницей