Звуки#
Создадим файл sounds.json
и папку sounds
по пути:
└── src
└── main
└── resources
└── assets
└── tut
tut
должен быть создан файл sounds.json
!
Отредактируем его!
{
"test_sound": {
"category": "player",
"sounds": ["*modid*:myTestSound"]
}
}
category
- указывает на то, какая категория будет у данного звука, т.е. если мы указали player
, то в игре, в настройках звука мы сможем отключить свой звук передвинув ползунок Игроки
. Категории звуков в игре:
- master
- общие звуки
- music
- музыка
- record
- пластинка
- weather
- погода
- block
- блоки
- hostile
- враждебные сущности
- neutral
- нейтральные или дружелюбные(как написано в игре)
- player
- игроки
- ambient
- окружение
- voice
- голос/речь
* sounds
- массив звуковых файлов, который будет поочерёдно проигрываться.
- name
- название звука без формата
- volume
- громкость. Чем выше значение, тем дальше будет слышимость
- pitch
- высота звука. Если 1.0, то звук будет нормально проигрываться, если же ниже, то звук будет иметь эффект замедления
- weight
- шанс воспроизведения звука
- stream
- имеет два положения true/false
, при true
проигрывается звук из файла. Это нужно, чтобы избежать проблем со звучанием звука в игре, т.е. если ваш звук более одной минуты, то рекомендуется выставить данный параметр на true
.
Продвинутый пример:
{
"test_sound": {
"category": "player",
"sounds": [
{
"name": "*modid*:myTestSound",
"stream": true
},
{
"name": "*modid*:myTestSound2",
"pitch": 0.2,
"weight": 2.0
}
]
},
"nextSound": {
"sounds": ["*modid*:nextSound"]
}
}
Создадим класс Sounds
.
public class Sounds {
//Это наш звук, `test_sound` это название звука указанного в sounds.json
public static final SoundEvent test = registry("test_sound");
@SubscribeEvent
public void registerSounds(RegistryEvent.Register<SoundEvent> e) {
//Регистрация звука
ForgeRegistries.SOUND_EVENTS.register(test);
}
//Упрощённая регистрация звука
private SoundEvent registry(String name) {
ResourceLocation uniqueName = new ResourceLocation(*modid*, name);
return new SoundEvent(uniqueName).setRegistryName(uniqueName);
}
}
*modid*
- это modId мода
Чтобы воспроизвести наш звук, добавим такой код:
/**
* blockPos - это позиция на которой будет проигрываться звук
* Sounds.test - это наш звук из ранее созданного класса Sounds
* SoundCategory.PLAYERS - категория звука
* 1.0 - громкость
* 1.0 - высота
* false - задержка
*/
world.playSound(blockPos, Sounds.test, SoundCategory.PLAYERS, 1.0F, 1.0F, false)
Затем зарегистрируем Sounds класс в MinecraftForge.EVENT_BUS и зайдём в игру!