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

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

Нет прав для скачивания
5,018
47
783
Лол, комментарии разработчиков форджа это во-первых не Javadoc, а просто комментарии, а во-вторых это не единственный источник информации.
Java:
world.playSoundEffect((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D, "ExampleMod:Example_sounds", 1.0F, 1.0F);
Последние два флоата это громкость(не в зависимости от расстояния до блока, а просто громкость. А второе - тональность звука.
 
2,932
44
598
это не единственный источник информации.
Поделитесь пожалуйста вашими источниками информации :)
Последние два флоата это громкость(не в зависимости от расстояния до блока, а просто громкость. А второе - тональность звука.
Большое вам спасибо за данную информацию! :geek:
 
2,932
44
598
Уважаемый @Maxik001 я только что проверил ваш источник и увы там нет не какой информации про громкость(не в зависимости от расстояния до блока, а просто громкость. И про тональность звука.
1519557270268.png
 
5,018
47
783
Это был троллинг, лол :)
 
2,932
44
598
@Maxik001 "хорошая тактика!"
Когда ты сначала на полном серьезе сказал одно, после того как тебя поправили ты прячешься под маску "это был троллинг" как двуликая личность которая не готова принять критику в свой адрес.
Либо же ты неграмотная личность которая не может указать в своём сообщений "троллинг".
 
Последнее редактирование:
5,018
47
783
Лол, no comments
P.S двухликая слитно пишется , умник ты наш
 
2,932
44
598
Не уж то мой троллинг такой тонкий что ты его даже не заметил??
 

Eifel

Модератор
1,623
78
608
Конкурс Супер-гайд 2018!

У ресурса должна быть нормальная иконка, соответствующая тематике гайда ::mc_351-10:

Адекватный заголовок и описание ::mc_351-10:

Прикрепленный архив со всеми рабочими исходниками гайда ::mc_351-14:
Есть ссылка на GitHub, но она находится в доп. информации. Но я думаю что стоит добавить кнопку "Скачать", в которой вставить ссылку. А еще лучше было бы в скачать добавить архив, а ссылка пусть будет в доп. информации. Но это уже на твой вкус.

Минимальный размер гайда: не меньше 3000 символов ::mc_351-10:

Текст гайда не должен быть разрезан и запрятан в спойлеры ::mc_351-10:
Мелкое замечание - стоило бы убрать в некоторых местах лишние пробелы.
Код в гайде должен быть корректно оформлен ::mc_351-1:
Код местами сьезжает, полно ненужных пробелов, комментарии описывают предназначение метода внутри самого метода. "Последние два float"а" - это можно представить в более удобном виде. Такие моменты надо исправить.

Код в гайде должен быть с поясняющими комментариями ::mc_351-14:
Поясняющие комментарии есть, но в неудобных для чтения местах(см. критерий выше).

Гайд должен иметь четкую и адекватную структуру ::mc_351-10:
Отлично. Есть содержание, три четкие разделы, пояснения, что мы собираемся делать и с помощью чего.

Гайд должен быть понятным ::mc_351-1:
К части создания звука вопросов нету. Тут все доходчиво и кратко описано. Молодец. А с второй и третьей частями у меня возникли проблемы. Тут есть несколько замечаний, которые стоило бы исправить:
  • "assets.краткое название мода " - не понятно, что это за краткое название мода. Мод айди? Тогда так и надо написать. А еще лучше указать полный путь;
  • "в данном параметре можно написать название "категории" данного звука" - ну допустим. А что значит эта категория, для чего она? А какие еще есть? А что будет если ее не указать? И такие вопросы почти ко всем пояснениям в этой части. Нужно больше информации и экспериментов;
  • "*Функция "onBlockActivated (World world, int i, int j, int k, EntityPlayer entity, int l, float m, float n, float o)" работает когда игрок/EntityPlayer нажал по нему(блоку) правой кнопкой мыши, проигрывает звук "ExampleMod:Example_sounds" - а почему это описание внутри метода?;
  • "Последние два float"а это: первое, громкость(не в зависимости от расстояния до блока), а второе - тональность звука.*/" - где эти последние два float`a? Ты имеешь в виду метод world.playSound или onBlockActivated? Там ведь тоже аналогично. Нужно поправить и разместить в нужном месте, а так же пояснить все параметры данного метода.
Итог
В целом, гайд не плохой. Но хотелось бы видеть нормально отформатированный код с адекватными пояснениями. А еще очень бы хотелось больше примеров, например:
  • как за один раз проигрывать рандомно один звук из набора;
  • как быть, если у нас много звуков;
  • как добавить в игру свою собственную музыкальную пластинку;
  • получить ответ на вопрос касательно синхронизации;
  • увидеть разбор других методов проигрывания звуков, которые существуют: какие их отличия, как они работают.
Думаю было бы отлично, если бы что-то с этого было бы реализовано. Тогда, мне кажется, гайд станет полнее и информативней. И сможет претендовать на супер-гайд.
 
2,932
44
598
И не прошло и года как мой первый ресурс рассмотрели :)
Все претензий понял, принял. Занимаюсь этим!
 
Последнее редактирование:
2,932
44
598
Gₐᵣᵢₖ₁₃₀₃ обновил(а) ресурс Пример создания и добавления звука в игру Minecraft новой записью:

Обновление 2.0

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

Узнать больше об этом обновлении...
 

Eifel

Модератор
1,623
78
608
Немного лучше, но все же:
  • Так и не рассказал, для чего все эти категории и прочее в sounds.json. Какие их виды, что каждый из них делает. Это важно. Не понял, что значит "stream": true. Вообще, думаю, нужно сделать этот файл с наибольшем количеством разных свойств и пояснить их действие;
  • Создание пластинки стоило бы вынести в отдельный раздел(или подраздел) или поправить существующий, а то оно где-то там потерялось, а в начале вообще не видно, что ты покажешь как пластинку делать;
  • Надо бы добавить больше информации в начало разделов. Например о пластинке. Сразу идет описание процесса. Надо сказать наперед, для чего, как это будет происходить. Так будет выглядеть лучше;
  • Очень много пробелов в коде;
  • Комментарии больше похожи на машинный перевод:" Обратный вызов для использования предмета. Если предмет делает что-то особенное при щелчке правой кнопкой мыши, у него будет один из них. Возвращать true, если что-то случится, и false, если нет. Это для предметов, а не для блоков.";
  • В onItemUse почти ничего не пояснено. Что же там происходит?
Было бы круто, если ты бы сделал еще какие-то примеры, например увидеть разбор других методов проигрывания звуков, которые существуют: какие их отличия, как они работают. Чем больше, тем лучше. А часть с пластинкой похожа больше на машинный перевод англ. гайда(а отсутствие пояснений наводит на мысль, что ты сам не понимаешь, что там происходит). Поэтому будет лучше для твоего гайда, если ты добавишь больше экспериментов и примеров.
 
2,932
44
598
А часть с пластинкой похожа больше на машинный перевод англ. гайда(а отсутствие пояснений наводит на мысль, что ты сам не понимаешь, что там происходит).
Это скорее ванилла:
Java:
public class ItemRecord extends Item
{
    private static final Map field_150928_b = new HashMap();
    /** The name of the record. */
    public final String recordName;
    private static final String __OBFID = "CL_00000057";

    protected ItemRecord(String p_i45350_1_)
    {
        this.recordName = p_i45350_1_;
        this.maxStackSize = 1;
        this.setCreativeTab(CreativeTabs.tabMisc);
        field_150928_b.put("records." + p_i45350_1_, this); //Forge Bug Fix: RenderGlobal adds a "records." when looking up below.
    }

    /**
     * Gets an icon index based on an item's damage value
     */
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamage(int p_77617_1_)
    {
        return this.itemIcon;
    }

    /**
     * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
     * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
     */
    public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_)
    {
        if (p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_) == Blocks.jukebox && p_77648_3_.getBlockMetadata(p_77648_4_, p_77648_5_, p_77648_6_) == 0)
        {
            if (p_77648_3_.isRemote)
            {
                return true;
            }
            else
            {
                ((BlockJukebox)Blocks.jukebox).func_149926_b(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_, p_77648_1_);
                p_77648_3_.playAuxSFXAtEntity((EntityPlayer)null, 1005, p_77648_4_, p_77648_5_, p_77648_6_, Item.getIdFromItem(this));
                --p_77648_1_.stackSize;
                return true;
            }
        }
        else
        {
            return false;
        }
    }

    /**
     * allows items to add custom lines of information to the mouseover description
     */
    @SideOnly(Side.CLIENT)
    public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_)
    {
        p_77624_3_.add(this.getRecordNameLocal());
    }

    @SideOnly(Side.CLIENT)
    public String getRecordNameLocal()
    {
        return StatCollector.translateToLocal("item.record." + this.recordName + ".desc");
    }

    /**
     * Return an item rarity from EnumRarity
     */
    public EnumRarity getRarity(ItemStack p_77613_1_)
    {
        return EnumRarity.rare;
    }

    /**
     * Return the record item corresponding to the given name.
     */
    @SideOnly(Side.CLIENT)
    public static ItemRecord getRecord(String p_150926_0_)
    {
        return (ItemRecord)field_150928_b.get(p_150926_0_);
    }

    /**
     * Retrieves the resource location of the sound to play for this record.
     *
     * @param name The name of the record to play
     * @return The resource location for the audio, null to use default.
     */
    public ResourceLocation getRecordResource(String name)
    {
        return new ResourceLocation(name);
    }
}

~~~

Понял, принял, иду исправлять! ВСЁ РАДИ ОЧИВКИ! :D
 

Eifel

Модератор
1,623
78
608
Это скорее ванилла
Вот именно, что ванилла. А сам ты видно не разобрался, ибо нету никаких доп. пояснений, еще и перевод машинный. Люди, которые получают ачивки супер-гайдов, понимают то, о чем пишут. И комментарии добавляют от себя. Простое копирование вообще не зачет, поэтому и требую от тебя больше примеров и своих пояснений.
 
2,932
44
598

Eifel

Модератор
1,623
78
608
Ты добавил звук для моба, отлично. Уже туториал стал более обьемным. Но опять же:
  • надо пофиксить мелкие ошибки: "громкость определённой категорий ". Таких у тебя много и по ходу чтения оно стает видимым;
  • в одном примере у тебя в коде везде стоят пустоты между строками, а в другом нет. Кажется, этот код ты откуда-то копировал, может быть с ваниллы. Нужно исправить, чтоб уже все было одинаково(лучше тот стиль, где нету пустых строк);
  • текст немного сьезжает, думаю это очень легко исправить:
    CXXrpcm.png
  • вот здесь заметил какие-то вообще не понятные пояснения. Попробуй изложить все более понятно, без использования машинного перевода:
    cOg7dfG.png
  • "В майнкрафте у мобов есть строки в которых можно указать звук " - не понятно, можно пояснить лучше.
Так же, очень хотелось бы узнать, какие еще есть методы для проигрывания звука, помимо World#playSoundEffect(еще вроде и в классе Player такие есть, чем они отличаются?). Еще, раздел "Блок" было бы лучше заменить на "Блок, проигрывающий музыку"(или что-то в этом роде). Отмечу, что ты исправил уже много чего из предыдущих замечаний и это очень хорошо. Видно прогресс. Только добавь немного от себя, чтоб было видно, что ты разбираешься в своем коде(а то вот эти странные пояснения тебя немного выдают).
 
2,932
44
598
текст немного съезжает, думаю это очень легко исправить:
А я это специально как бы сделал :D Думал что наоборот, так будет выглядеть лучше....
в одном примере у тебя в коде везде стоят пустоты между строками, а в другом нет.
Это где? Только что пересмотрел, вроде бы нигде нет не нужных пробелов.

Отмечу, что ты исправил уже много чего из предыдущих замечаний и это очень хорошо. Видно прогресс.
Прекрасно! Это мотивация! :) Всё ради ачивки! ;)

Пойду дальше прогрессировать!
 
Сверху