Туториал Forge [1.7.2 - 1.7.10] Свой музыкальный диск

Nicolayka

Владелец
Команда форума
Регистрация
4 Апр 2025
Сообщения
24
Реакции
0
Баллы
1
Город
Санкт-Петербург
Веб-сайт
paxgame.ru
Discord
nicolayka
Если Вы хотите добавить музыкальный диск к своему моду, тогда этот урок для Вас!

Вам понадобится:
  1. Main class (главный класс)
  2. sounds.json
  3. Ваш звук/песня, которую Вы хотите добавить в мод
  4. Текстура диска
Что Вы должны знать:
  1. Как создать предмет
  2. Как заставить работать sound.json
  3. Как зарегистрировать звуки в sounds.json

Если Вы не знаете, как зарегистрировать звук, то есть много обучающих программа для этого, я же предпочитаю Nealegamings, они просты и забавны.

При регистрации Вы должны дать ему имя "records.Kitten" или "records.HipHop"

Удостоверьтесь, что Вы уже имеете:
public static record_Kitten;

Для этого вставьте эту строку в предварительную инициализацию (Init)
Java:
record_Kitten=new MusicDisc("Kitten").setUnlocalizedName("record_Kitten").setCreativeTab(CustomTab);

Но не забудьте сменить название файла!

Так же Вы должны получить сообщение об ошибке MusicDisk, к этому мы вернёмся позже
Код:
GameRegistry.registerItem(record_Kitten, "record_Kitten");
Теперь возвращаемся к ошибке диска. Вы должны создать новый класс:
Java:
public class MusicDisc extends ItemRecord
{
    private static final Map records = new HashMap();

    public final String recordName;

    public MusicDisc(String recordName)
    {
        super(recordName);

        this.recordName = recordName;
        this.maxStackSize = 1;

        records.put(recordName, this);
    }

    @Override
    public void registerIcons(IIconRegister iconRegister)
    {
        itemIcon = iconRegister.registerIcon("dragonborn:" + "record_" + recordName);
    }

    @Override
    public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10)
    {
        //TODO: world.getBlock()
        if (world.getBlock(x, y, z) == Blocks.jukebox && world.getBlockMetadata(x, y, z) == 0)
        {
            if (world.isRemote)
            return true;
            else
            {
                //TODO: .insertRecord()
                ((BlockJukebox)Blocks.jukebox).func_149926_b(world, x, y, z, itemStack);
                //TODO: Item.getIdFromItem()
                world.playAuxSFXAtEntity((EntityPlayer)null, 1005, x, y, z, Item.getIdFromItem(this));
                --itemStack.stackSize;
                return true;
            }
        }
    else
    return false;
    }

    @Override
    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
    {
        par3List.add(this.getRecordNameLocal());
    }

    @Override
    //TODO: getRecordTitle()
    public String getRecordNameLocal()
    {
        return StatCollector.translateToLocal(this.getUnlocalizedName() + ".desc");
    }

    @Override
    public EnumRarity getRarity(ItemStack itemStack)
    {
        return EnumRarity.rare;
    }

    public static MusicDisc getRecord(String par0Str)
    {
        return (MusicDisc)records.get(par0Str);
    }

    @Override
    public ResourceLocation getRecordResource(String name)
    {
        return new ResourceLocation("Dragonborn:" + name);
    }
}

Это означает, что Вы должны будете описать структуру своего звука record_Kitten, или record_HipHop, в зависимости от того, как вы назвали Ваш звук.
Java:
@Override
public void registerIcons(IIconRegister iconRegister)
{
itemIcon = iconRegister.registerIcon("dragonborn:" + "record_" + recordName);
}
Эта часть кода отвечает в основном за то, что бы диск проигрывался в музыкальном автомате
Java:
@Override
public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10)
{
//TODO: world.getBlock()
if (world.getBlock(x, y, z) == Blocks.jukebox && world.getBlockMetadata(x, y, z) == 0)
{
if (world.isRemote)
return true;
else
{
//TODO: .insertRecord()
((BlockJukebox)Blocks.jukebox).func_149926_b(world, x, y, z, itemStack);
//TODO: Item.getIdFromItem()
world.playAuxSFXAtEntity((EntityPlayer)null, 1005, x, y, z, Item.getIdFromItem(this));
--itemStack.stackSize;
return true;
}
}
else
return false;
}
 
Главная Регистрация
Назад
Сверху