Звуки#
Создадим файл 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 и зайдём в игру!