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

5,018
47
783
Тутор принадлежит Dahaka и С® All right reserve©Все права зачищены©™

ЗАГРУЗКА СВОЕГО ЗВУКА в 1.7.10

1. В пакете assets.<modid> создаем пакет sounds (это важно!) и кладем туда звук(и) в формате ogg. Насчет других форматов не в курсе.
2. В пакете assets.<modid> создаем файл sounds.json. В нем будут описываться все звуки.

Код:
{
"my_new_sound1": {
   "category": "player",
   "sounds": ["sound_file_name1"]
},

"my_new_sound2": {
    "category": "player",
    "sounds": ["sound_file_name2"]
}
}
"my_new_sound1" - имя звука, по которому нужно обращаться в игре
"sounds": ["sound_file_name1"] - имя файла. ".ogg" тут указывать не нужно.
"category": "player" - не знаю для чего это. Не было необходимости разбираться. Откуда-то скопипастил.

Название файла должно быть без формата.!

3. На этом все. Звук будет сам зареган и его можно будет юзать.

Я для себя написал примерно такой метод.
Код:
public static PositionedSoundRecord playStreaming(ResourceLocation music, float x, float y, float z)
{
   PositionedSoundRecord sound = PositionedSoundRecord.func_147675_a(music, x, y, z);
   Minecraft.getMinecraft().getSoundHandler().playSound(sound);
   return sound;
}
PositionedSoundRecord возвращается для того, чтобы звук в любой момент можно было остановить. Запускать, как ни странно, можно только с клиентской стороны.
 
Последнее редактирование:
2,505
81
397
Алее! Мое!!

Ой, не заметил про права)
 

Eifel

Модератор
1,624
79
609
в world есть еще много методов для запуска звука как для энтити, так и для всех энтити вокруг. например:
Код:
player.worldObj.playSoundAtEntity(player, mod_id + ":sound_name", 1.0F, 1.0F);
 
2,505
81
397
О, даже так работать будет? Вот это полезно. Нужно будет попробовать. А я уж думал пакеты мутить.
 
5,018
47
783
Шюточка
 
5,018
47
783
Где указать скорость воспроизведения?
 
5,018
47
783
Понял, нигде. Значит юзаем цикл
1 громкость, второй - частота
Код:
	event.player.worldObj.playSoundAtEntity(event.player, "spaceadvanced:treskHigh", 10.0F, 0.8F);
 
5,018
47
783
Liahim написал(а):
Так частота и есть скорость...
Ты со звуком работал когда-нибудь?
Ты не понял.Я имел ввиду воспроизводить запись с интервалами тишины.


Я так выразился, потому что мой звук - щелчок счетчика гейгера, есть только один и длится меньше секунды. Мне нужно его воспроизводить циклически с задержкой. Я не умею мыслить абстрактно в области программирования, у меня не получается :( Поэтому мне даже такой с виду легкий код написать - часа 4 затратить.
 
5,018
47
783
Thunder написал(а):
if(... && player.ticksExisted % ticks == 0) воспроизвести звук...

Спасибо. Оно оказывается есть))
Погоди, а ticks - создать нужно переменнную?
 

Eifel

Модератор
1,624
79
609
Там ты указываешь кол-во тиков которое должно пройти чтоб заиграл звук...Т.е. напишешь 100 - значит каждые сто тиков будет играть звук. ticksExists считает тики от начала жизни энтити.. Делим по модулю и смотри когда же это деление даст нам 0, тогда значит и прошло 100 тиков
 
5,018
47
783
Thunder написал(а):
Там ты указываешь кол-во тиков которое должно пройти чтоб заиграл звук...Т.е. напишешь 100 - значит каждые сто тиков будет играть звук. ticksExists считает тики от начала жизни энтити

Если что, я на 1.7.10 и на твоем коде он подсвечивает ticks и говорит что такой переменной нету.
 

Eifel

Модератор
1,624
79
609
Ох, ты должен указать там интовый интервал в тиках..т.е. 100, 200 или сколько угодно.
if(player.ticksExisted % 100 == 0) //do my beautiful code
 
Сверху