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

Помогите Где лучше хранить таймер?

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Драсти! У меня опять тупой вопрос! Таймер лучше хранить в отдельном классе, или нет? И еще это отдельный поток?
    Код:
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
            Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0, 50);
    Мою мнение: ЕСТЕСТВЕННО, потому, что он создают новый поток только тогда когда вкл, а не создают новый! Я не знаю зачем я это спросил. Наверное потому, что я паникер по оптимизации, и мне надо точно знать, правильно я делаю или нет!
     
    Последнее редактирование: 29 июл 2017
  2. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Хотя, eclipse создают все равно новый класс для таймера
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Если кодишь в ооп то отдельно.
    Код:
    package Example;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class Scheduler  extends BukkitRunnable {
        Main plugin;
    
        Scheduler(Main plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public void run() {
            //TODO
        }
    }
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Хотя с ооп тут у всех жопа как правило.
     
  5. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Нет, без ООП, но у меня все равно компилятор создают отдельный класс, даже если я писал в другом классе, то есть создают новый класс для таймер, как правило создают класс с $1 $2 $3 и т д
     
  6. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    А по поводу отдельно потока
    public void onEnable() {
    this.getServer().getPluginManager().registerEvents(this, this);
    Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0, 50);
    Мою мнение: ЕСТЕСТВЕННО, потому, что он создают новый поток только тогда когда вкл, а не создают новый! Я не знаю зачем я это спросил. Наверное потому, что я паникер по оптимизации, и мне надо точно знать, правильно я делаю или нет! Я прав?????
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну вот класс выше без анонимного получится. Если те над в отдельном потоке, то new Scheduler().runTaskTimerAsynchronously
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    И если тебе нужно будет скажем блок сетнуть в какой то момент из асинса, то из под шедулера так
    new SchedulerOther(this.plugin).runTaskLater
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  10. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    А это, что не общий поток, что я выше написал?
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Зависит от времени выполнения, да и не имеет смысла там, где асинс можно.
     
  12. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    У меня не асинс, вот код:
    Код:
    public class Core$1 extends BukkitRunnable {
        Core c;
        Core$1(Core c) {
            this.c = c;
        }
        public void run() {
            int i = 0;
            if(runTaskLater(c, 15) != null) {
                Bukkit.broadcastMessage("§4Очистка: §rВсе предметы и мобы удаляться через §e15 §rсекунд");
            }
            Iterator<World> iter = Bukkit.getWorlds().iterator();
            while(iter.hasNext()) {
                World w = (World)iter.next();
                Iterator<Entity> iter1 = w.getEntities().iterator();
                while(iter1.hasNext()) {
                    Entity en = (Entity)iter1.next();
                    if(en instanceof Item ||
                            en instanceof LivingEntity) {
                        en.remove();
                        ++i;
                    }
                }
            }
                Bukkit.broadcastMessage("§4Очистка: §rУдалено предметов с пола: §e"+i);
        }
    }
     
  13. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    public void onEnable() {
    new Core$1(this).runTaskTimer(this, 0, 100);
    } Это в главном классе
     
  14. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    И еще, я не понял, общий поток это
    Код:
            Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0L, 5100);
    или
    Код:
    new Core$1(this).runTaskTimer(this, 0, 100);
    Это при методе onEnable() {
     
    Последнее редактирование: 29 июл 2017
  15. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    И что лучше использовать BukkitRunnable или просто Runnable в классе таймера, извини, я просто новичок
     
  16. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Обо общий.
    А вот так отдельный
    runTaskTimerAsynchronously
     
  17. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Ну отдельный много кушает ресурсов
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    [​IMG]
     
  19. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Отдельный поток это поток - который не создает новые, а запускает только один??
     
  20. Автор темы
    JolyHoska

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

    Баллы:
    76
    Имя в Minecraft:
    JolyNoska
    Можешь скинуть код оптимизированного таймера(потока)? а то я запутался!
     

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