Регистрация своего звука[1.7.10]

5,018
47
783
А. Так бы и написал) Я то думал после равно подставлять и что % - это какой то оператор, которого я не знаю. Сижу, гуглю, не могу вкурить что это за процент :)
 
7,099
324
1,510
Thunder написал(а):
if(... && player.ticksExisted % ticks == 0) воспроизвести звук...
Здравствуйте лаги! Деление -  самая быстрая операция, лучше юзать таймер.
 
7,099
324
1,510
% - слишком долгая операция, т.к. основана на делении
 

Eifel

Модератор
1,624
79
609
Разве таймер будет работать синхронно с тиками майна? .. Пока не вижу других идей выполнить в майне что-то в таком стиле не используя %
 
5,018
47
783
да я его как то не заметил. Я в первый раз его встретил. Я часто по нубским вопросам сюда лажу
http://developer.alexanderklimov.ru/android/java/java.php
Как таковой я учебник целиком не читал. Отрывками так...
 
7,099
324
1,510
Thunder написал(а):
Разве таймер будет работать синхронно с тиками майна?
таймер вот такого вида:
TickHandler - обработчик события тиков, увеличивает значение статической переменной на 1 каждый тик. Если превышает n - сбрасывает значение.
Потом где-нить вместо "player.ticksExisted % ticks == 0" юзать TickHandler.ticksExisted==ticks
 

Eifel

Модератор
1,624
79
609
А если мне надо чтоб например выполнялось каждые 100 тиков? Придется писать тогда TickHandler.ticksExisted == 100 || TickHandler.ticksExisted == 200 и т.д. Ну можно сделать чтоб при n>= 100 он сбрасывался тогда заработает, но если нужно в многих местах проверять различные интервалы, придется добавлять много статических переменных
 
7,099
324
1,510
Можно тогда таймеры хранить в мапе. Ключ - интервал, значение - тики
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Хватит уже фигню говорить, ничего не будет от одного %, та даже от десяти тысяч ты разницы не заметишь.
Нагрузки будет больше от того, что мапа будет перебирать ключи и значения, чем от твоего деления.
 
2,505
81
397
Agravaine написал(а):
Хватит уже фигню говорить, ничего не будет от одного %, та даже от десяти тысяч ты разницы не заметишь.
Нагрузки будет больше от того, что мапа будет перебирать ключи и значения, чем от твоего деления.

Использовать тикер игрока дико не удобно. Я сейчас про те случаи, когда нужно много таймеров с обязательной начальной точкой отсчета.

Мапа - это тоже плохая идея. А вот связный список для пробега по всем таймерам, чтобы апнуть их - то, что нужно. А еще и удалить, если таймер сдох. Еще можно всунуть в такой таймер лямбда-хэндлер. Будет некое подобие асинхронного потока, хотя на самом деле все синхронно тикам майна. У меня запилена такая система - не нарадуюсь удобством.
 

Icosider

Kotliner
Администратор
3,603
99
664
hohserg написал(а):
Можно тогда таймеры хранить в мапе. Ключ - интервал, значение - тики

Хм, может тогда лучше так?
[WARNING SHIT CODE!!!]
Код:
       Thread timer = new Thread(new Runnable()
        {
            public void run() {
                while(true) {
                    for(int i = 153423; i > 0; --i) {
                        try {
                           HashMap<String, int> map = new HashMap();
                           map.put("timer", i);
                            Thread.sleep(1000L);
                        } catch (InterruptedException var3) {
                            var3.printStackTrace();
                        }
                    }
                }
            }
        });
 
2,505
81
397
Liahim написал(а):
Шта?
Связный список?
Асинхронный поток?
Что это вообще?
...
Нельзя ли пример для тупых?


И чем не удобен тикер игрока?



Связный список (в java LinkedList) - структура данных, состоящая из узлов. Каждый узел хранит указатель на следующий и предыдущий узел. В отличии от обычного массива у нее быстрая операция добавления нового элемента, но долгое обращение к i-ому элементу. Если коллекция нужна только для итерации по ней, то имеет смысл использовать связный список.

Ассинхронный поток - это просто обычный поток. Любые потоки ассинхронны.

Тикер игрока крайне не удобен, когда нужна начальная точка отчета.
 

jopi

Попрошайка
1,421
30
260
Поправьте тутор.
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:lumixkernelmklO
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: lumixkernel:mklO
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:lumixkernelmklA
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: lumixkernel:mklA
 
5,018
47
783
Поправьте тутор.
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:lumixkernelmklO
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: lumixkernel:mklO
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: minecraft:lumixkernelmklA
[22:39:12] [Client thread/WARN]: Unable to play unknown soundEvent: lumixkernel:mklA
Поправь свои руки, в туторе все нормально
 
Сверху