Звуки#
Создадим файл 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"]
}
}
Создадим класс TutSounds.
@Mod.EventBusSubscriber(modid= TestMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class TutSounds
{
//Это наш звук, `test_sound` это название звука указанного в sounds.json
public static SoundEvent TEST = reg("change_stage");
@SubscribeEvent
public static void resister(RegistryEvent.Register<SoundEvent> event)
{
event.getRegistry().register(CHANGE_STAGE);
}
private static SoundEvent reg(String name)
{
ResourceLocation rl = new ResourceLocation(TestMod.MOD_ID, name);
return new SoundEvent(rl).setRegistryName(rl);
}
}
/**
* x, y, z - это позиция на которой будет проигрываться звук
* Sounds.test - это наш звук из ранее созданного класса Sounds
* SoundCategory.PLAYERS - категория звука
* 1.0 - громкость
* 1.0 - высота
* false - задержка
*/
world.playSound(x, y, z, TutSounds.TEST, SoundCategory.PLAYERS, 1.0F, 1.0F, false)