Пример создания и добавления звука в игру Minecraft

Пример создания и добавления звука в игру Minecraft

Нет прав для скачивания
Версия(и) Minecraft
1.7.10
Доброго времени суток Земляне и Чужие!


Сегодня у меня появилась идея написать свой туториал по созданию и добавлению своих звуков в игру Minecraft.


Я лишь совсем чуть-чуть затрону тему создания звуков, так как мы скорее находимся на форуме подобавлению в игру звуков, а не их создания.

Содержание

  1. Создание звуков.
  2. Добавление/регистрация звуков.
  3. Примеры использования звуков:
    • Музыкальная пластинка.
    • Блок проигрывающий звук.
    • Предмет проигрывающий звук.
    • Моб.

1. Создание звуков
Для создания звуков в играх лично я использую онлайн генератор с возможностью редактирования звуков, с открытым кодом под названием Bfxr

BFxr — это бесплатный онлайновый редактор для создания звуков к играм. Для его использования​
не требуется регистрация или какие-либо другие дополнительные шаги — просто откройте веб-страницу и начинайте творить. (Так же данный редактор для создания звуков к играм можно установить себе на компьютер) Редактор содержит несколько предустановленных настроек, призванных озвучить такие игровые действия, как прыжок, выстрел, взрыв, нажатие кнопки и так далее. Кроме этого, вы можете использовать кнопку "Randomize", которая генерирует случайные звуки, а также кнопку "Mutation" для изменения окраски звучания.

Создаём звук нажав на настройку Randomize в левом верхнем углу, и генерируем звук.Далее экспортируем данный звуковой элемент в формат ".waw" при помощи кнопки в правом нижнем углу «Export Waw»

1519512890013.png

Для использования в Minecraft все ваши файлы звуковых файлов должны быть форматом OGG. Формат OGG (также называемый «Ogg Vorbis») имеет преимущество полностью открытого и свободного доступа. Ваши звуковые ресурсы не могут быть в MP3, WAV или других таких распространенных форматах, но если у вас есть такие файлы, которые вы хотите использовать, их легко можно конвертировать. Для этого я использую онлайн конвертор: Online Audio Converter
  1. Нажимаем на большую голубую кнопку «Открыть файл» и выбираем наш файл с форматом/расширением ".ogg".
  2. Выбираем формат/расширение конвертации ".ogg" и выбираем «Лучшее» «Качество».
  3. После чего нажимаем снижу на большую голубую кнопку «Конвертировать»
1519513524055.png
Готово! Теперь у нас имеется звуковой файл с форматом/расширением ".ogg" который мы в дальнейшем будем использовать.

Совет. Чтобы прослушать файлы OGG (возможно, чтобы проверить, что ваше преобразования файла прошло успешно), вы можете использовать медиаплеер с открытым исходным кодом MPC.


2. Добавление/регистрация звуков
Переходим в директорию assets.moddid. В данной директорий создаём файл с названием "sounds" и с расширением ".json". После чего открываем данный файл и вписываем туда данный код:
JSON:
{
    "Example_sounds_one":
    {
        "category": "block",
        "sounds":
        [
            {
                "name": "example_sounds_one",
                "stream": true
            }
        ]
    },

    "records.example_music_disc":
    {
        "category": "record",
        "sounds":
        [
            {
                "name": "classik",
                "stream": true
            }
        ]
    },

    "mob.example_entity":
    {
        "category": "hostile",
        "sounds":
        [
            {
                "name": "nani"
            }
        ]
    },

    "Example_sounds_two":
    {
        "category": "block",
        "sounds":
        [
            {
                "name": "nani",
                "stream": true
            }
        ]
    }
}
Давайте разберём то что я написал:
  • category - категория, используется для удобства, с помощью неё можно выключить звук исходящий от разных источников. Всего категории (источников) звука в игре 10:
    • master - общий звук
    • neutral - звук нейтральной сущности
    • music - музыка
    • voice - голос
    • weather - погода
    • block - блок
    • hostile - звук враждебной сущности
    • player - игрок
    • record - музыкальная пластинка
    • ambient - окружение
  • sounds - матрица/список звуковых файлов, которые будут проигрываться.
    • name - название звука [Формат не указывается]
    • volume - громкость в зависимости от расстояния
    • pitch - высота звука.
    • weight - шанс воспроизведения звука
    • stream - параметр для звуковых файлов которые будут проигрывается больше одной минуты, имеет два режима true или false,
После чего в данной директории создаём новую папку/package с названием "sounds" и вставляем туда наш звуковой файл с расширением ".ogg".


Готово! Мы смогли добавить/зарегистрировать в игру свой звук.


3. Примеры использования звуков
В качестве примеров использования звука я создам блок который по правому кликумыши будет издавать мой звук, и пластинку которая будет проигрывать звук если вставить в проигрыватель, плюс сделаем так что бы наш моб мог проигрывать звук при определённых событиях, ещё плюс сделаем предмет который будет издавать звук по правому клику мыши.


Музыкальная пластинка
Пластинка является предметом, который надо для начала зарегистрировать:
Java:
package com.example.examplemod.init;

import com.example.examplemod.music.disc.MusicDisc;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;

public class ExampleMusicDiscInit {

    public static Item example_music_disc = new MusicDisc("example_music_disc"); //Создаём сам предмет

    public static void init() {
        musicDiscRegister(); //Метод в котором будет происходить регистрация в игре/GameRegistry
    }

    public static void musicDiscRegister() {
        GameRegistry.registerItem(example_music_disc, "example_music_disc");
    }
}
Код будет ругаться на MusicDisc, так как такого класса нет, давайте создадим его:
Java:
package com.example.examplemod.music.disc;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemRecord;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;

public class MusicDisc extends ItemRecord {
    /** Название рекорда. */
    public final String recordName;
    /** Конструктор */
    public MusicDisc(String recordName) {

        super(recordName);

        this.setCreativeTab(CreativeTabs.tabMisc);
        this.recordName = recordName;
        this.maxStackSize = 1; //Максимальное количество предмета в одном стаке
    }
    /** Расположение звукового файла для пластинки. */
    @Override
    public ResourceLocation getRecordResource(String name) {
        return new ResourceLocation("examplemod:" + name);
    }

    /** Текстура для пластинки. */
    @Override
    public void registerIcons(IIconRegister iconRegister) {
        itemIcon = iconRegister.registerIcon("examplemod:" + recordName);
    }

    /** Не локализованное название рекорда. */
    @Override
    public String getUnlocalizedName() {
        return "record."+recordName;
    }

    /** Не локализованное название пластинки. */
    @Override
    public String getUnlocalizedName(ItemStack name) {
        return getUnlocalizedName();
    }

}
Всё, теперь зайдя в мир, можем найти пластинку и вставив её в проигрыватель, где она будет играть. Так же давайте не будет забывать про локализацию! Для того что бы локализовать пластинку как предмет, и песню проигрываемую этой пластинкой, надо в файл локализаций добавить:
JSON:
record.example_music_disc.name=Классика
item.record.example_music_disc.desc=Танец с саблями — Арама Хачатуряна
Разберём то что мы написали:
  • record.example_music_disc.name - данный код отвечает за название предмета.
  • item.record.example_music_disc.desc - данный код отвечает за название проигрываемой песни.
Зайдя в игру вот так будет выглядеть наша локализация:
b9183586641c01e330c07dc0fdc988a4.png



Блок проигрывающий звук
Java:
package com.example.examplemod.block;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;

public class ExampleBlock extends Block {

    /** Конструктор */
    public ExampleBlock(Material material, float hardness, int level) {

        super(material);
        this.setHarvestLevel("pickaxe", level);
    }

    /**
     * OnBlockActivated (World world, int x, int y, int z, EntityPlayer entity, int s, float m, float n, float o) метод вызывается, когда
     * игрок щелкает правой кнопкой мыши по блоку. Это, по умолчанию, ничего не
     * делает и возвращает false. Вы можете переопределить его в своем собственном
     * классе Block, чтобы реализовать свои собственные функции, когда игрок щелкнет
     * правой кнопкой мыши по блоку.
     *
     * Метод должен возвращать false, если вы не хотите, чтобы это повлияло на то,
     * что решает игрок. Например, если игрок щелкнет правой кнопкой с блоком в
     * руке, функция вернет false, а игрок поставит блок, но все равно сделает все в
     * функции. Если игрок нажимает на него с едой в руке, игрок не будет есть
     * еду. Он просто взмахнёт рукой.
     *
     * Параметры все довольно понятны... Параметры m, n, o - это то место,
     * где игрок нажал на блок. Если вы разместите простую трёхмерную систему координат с этими
     * переменными, вы можете легко всё понять.
     */
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entity, int s, float m, float n, float o) {
        /** Проигрывает звук "Example_sounds_one" в мире в радиусе (double) int + 0.5D, последний два значения(float/F) это: 1. Громкость, 2. Тональность звука. */
        world.playSoundEffect((double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "ExampleMod:Example_sounds_one", 1.0F, 1.0F);

        if ((Math.random() * 100) <= 50) { // Рандом
            /** Проигрывает звук "Example_sounds_two" в мире в радиусе (double) int + 1.5D, с громкостью 10.0F, и тональностью звука 15.0F. */
            world.playSoundEffect((double) x + 1.5D, (double) y + 1.5D, (double) z + 1.5D, "ExampleMod:Example_sounds_two", 10.0F, 15.0F);
        }
        return true;
    }
}
Предмет проигрывающий звук

Java:
package com.example.examplemod.item;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class Duduk extends Item {

    public Duduk() {
        super();
    }
    /**
     * onItemRightClick(ItemStack stack, World world, EntityPlayer player) метод вызывается, когда
     * игрок щелкает правой кнопкой мыши с предметом в руке.
     *
     * Параметры все довольно понятны... Параметры ItemStack stack, World world, EntityPlayer player - говорят
     * сами за себя.
     */
    @Override
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
        /** Проигрывает звук "Example_sounds_one" только у игрока, последний два значения(float/F) это: 1. Громкость, 2. Тональность звука. */
        player.playSound("ExampleMod:Example_sounds_one", 1.5F, 1.5F);
        return stack;
    }
}



Моб
В майнкрафте сделали специальные строки для мобов в которых можно указать звук издаваемый при определённом действий, для примера я сделал моба:
Java:
package com.example.examplemod.entity;

import net.minecraft.entity.monster.EntityMob;
import net.minecraft.world.World;

public class ExampleEntity extends EntityMob {

    /** Конструктор */
    public ExampleEntity(World par1World) {
        super(par1World);
    }

    /** Звук при жизни моба */
    protected String getLivingSound() {
        return "examplemod:mob.example_entity";
    }

    /** Звук при ударе моба */
    protected String getHurtSound() {
        return "examplemod:mob.example_entity";
    }

    /** Звук при смерти моба */
    protected String getDeathSound() {
        return "examplemod:mob.example_entity";
    }
    /** Изменяем громкость всего звука у данного моба */
    protected float getSoundVolume() {
        return 5.0F;
    }
}

Конец
На данном моменте мой туториал подходит к концу! Я хотел бы указать несколько источников которые мне помогли в написанный этого туториала:

Bfxr — создание звуковых эффектов для игр и любых проектов
Custom Music Disc! Forge Tutorial 1.7.2 & 1.7.10!
Звуки - Minecraft Modding

Оставляйте свой рецензий, обсуждайте данный туториал и переходите по дополнительной информации, скачивайте исходники! Если вам нужна будет помощь/поддержка не стесняйтесь обращайтесь ко мне.
Автор
Garik
Скачивания
11
Просмотры
12,537
Первый выпуск
Обновление
Оценка
5.00 звёзд 3 оценок

Другие ресурсы пользователя Garik

Последние обновления

  1. Обновление 4.0

    Добавлен предмет проигрывающий звук Исправлены ошибки Добавлена локализация для музыкальной...
  2. Обновление 3.1

    Изменена кодировка исходного кода на UTF-8 Добавлен пример с мобов Изменён код Изменён обзор ресурса
  3. Обновление 2.0

    Была переписана часть с примерами, был добавлен пример в котором мы делаем звуковую пластинку...

Последние рецензии

Что меня особо радует, так это программа для создания звуков. Раньше даже не задумывался, что такое существует.
А туториал написан кратко и ясно, с меня 5.
Garik
Garik
Огромное спасибо за рецензию!
Красиво и понятно, хоть и небольшие ошибки есть)
Garik
Garik
Спасибо за рецензию!
Всё подробно, просто и с примером, молодец)
Garik
Garik
Спасибо за рецензию!
Сверху