Перейти к содержанию

Звуки#

Создадим файл 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)