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

JolyHoska

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
JolyNoska
Драсти! У меня опять тупой вопрос! Таймер лучше хранить в отдельном классе, или нет? И еще это отдельный поток?
Код:
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);
        Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0, 50);
Мою мнение: ЕСТЕСТВЕННО, потому, что он создают новый поток только тогда когда вкл, а не создают новый! Я не знаю зачем я это спросил. Наверное потому, что я паникер по оптимизации, и мне надо точно знать, правильно я делаю или нет!
 
Последнее редактирование:
Хотя, eclipse создают все равно новый класс для таймера
 
Если кодишь в ооп то отдельно.
Код:
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
    }
}
 
Нет, без ООП, но у меня все равно компилятор создают отдельный класс, даже если я писал в другом классе, то есть создают новый класс для таймер, как правило создают класс с $1 $2 $3 и т д
 
А по поводу отдельно потока
public void onEnable() {
this.getServer().getPluginManager().registerEvents(this, this);
Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0, 50);
Мою мнение: ЕСТЕСТВЕННО, потому, что он создают новый поток только тогда когда вкл, а не создают новый! Я не знаю зачем я это спросил. Наверное потому, что я паникер по оптимизации, и мне надо точно знать, правильно я делаю или нет! Я прав?????
 
Ну вот класс выше без анонимного получится. Если те над в отдельном потоке, то new Scheduler().runTaskTimerAsynchronously
 
И если тебе нужно будет скажем блок сетнуть в какой то момент из асинса, то из под шедулера так
new SchedulerOther(this.plugin).runTaskLater
 
А это, что не общий поток, что я выше написал?
 
Зависит от времени выполнения, да и не имеет смысла там, где асинс можно.
У меня не асинс, вот код:
Код:
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);
    }
}
 
public void onEnable() {
new Core$1(this).runTaskTimer(this, 0, 100);
} Это в главном классе
 
И еще, я не понял, общий поток это
Код:
        Bukkit.getScheduler().runTaskTimer(this, new Core$1(this), 0L, 5100);
или
Код:
new Core$1(this).runTaskTimer(this, 0, 100);
Это при методе onEnable() {
 
Последнее редактирование:
И что лучше использовать BukkitRunnable или просто Runnable в классе таймера, извини, я просто новичок
 
Ну отдельный много кушает ресурсов
 
Ну отдельный много кушает ресурсов
facepalm.jpg
 
Отдельный поток это поток - который не создает новые, а запускает только один??
 
Можешь скинуть код оптимизированного таймера(потока)? а то я запутался!
 
Назад
Верх